تجربتي مع بليسك

أريد مشاركة بعض الانطباعات حول ضرورة أو عدم ضرورة شيء مثل لوحة تحكم لمشروع ويب خادم فردي تجاري مع مسؤول بدوام جزئي. بدأت القصة منذ عامين عندما طلب مني معارفه أن أرافق شراء شركة - موقع إخباري - من وجهة نظر تقنية. كان من الضروري الحصول على نظرة ثاقبة حول ما كان يعمل عليه ، والتأكد من أن جميع التفاصيل الضرورية قد تم نقلها بالشكل والحجم المناسبين ، واستكشاف ما يمكن تحسينه بشكل استراتيجي.


لقد تمت الصفقة ، ولم تعد هناك حاجة للكمان. النهاية. ليس حقا

كان الموقع يدور على نظام VMk رباعي النواة ذو 4 أذرع على Linode ، على بعض Debian5 المطحلب مع مدة تشغيل تبلغ 400 يوم ومثل هذه الحزم غير المحدثة. جزء الويب على Samopisny TsMSke ، nginx ، php5.3 FPM ، mysql ضبطها Percona. من حيث المبدأ ، عملت.

بالتوازي مع المحادثات معي ، كان المالك الجديد يبحث عن مبرمج للوصول بالمشروع إلى مستوى التوقعات. وجدت ذلك. قام المبرمج بتقييم حركة المرور ووحدات التخزين وقرر أنه كان قادرًا على تحسين وإدارة التكلفة. لقد قام بنقل الموقع بأكمله إلى استضافة مشتركة بقيمة 700 روبل تحت سيطرة IS المعتاد. بعد بضعة أيام ، مرة أخرى مكالمة من المالك: "كل شيء يتباطأ ويبدو أننا قد تم كسر". حاولت إصلاح الموقف من خلال اللوحة ، لكن بعد محاولات غير مثمرة لتغيير إصدار PCP أو المعالج من fcgi إلى fpm ، استسلمت وتسلقت إلى الصدفة. وجدت هناك التصحيح المضمن ، والذي أشرق على الإنترنت بالكامل بكلمة مرور من إحدى العضلات ، 777 على بعض المجلدات التي ، بحلول ذلك الوقت ، كانت تتصاعد من فيضان malvari ولعبة مشابهة. لقد أدرك المالك وقرر أن التوفير على الاستضافة والمبرمج والمسؤول ، الذين سيبحثون بعينٍ واحدة عن كيفية سير الأمور ، أمر خاطئ.

نحن نذهب إلى RuVDS. أقرب قليلاً من British Linode ، وإذا كنت تريد فجأة تخزين البيانات الشخصية وكل هذا ، فلست مضطرًا إلى التحرك في أي مكان آخر. نظرًا لتخطيط المشروع لتوسيعه ، أخذوا وحدة VMKU "للنمو": 4 مراكز ، 8 أذرع ذاكرة ، 80 جيجابايت من القرص. ليس الأمر أنني لا أعرف كيفية استخدام التكوينات nginx بيدي ، لم يكن لديّ الحماس للقيام بهذا المشروع عن كثب (انظر أعلاه حول دوام جزئي). لأنه - ضع Plesk (هنا سأحذف تفاصيل التثبيت ، لأنه إلى حد بعيد لم تكن هناك: لقد قمت بتشغيل برنامج التثبيت ، وضبط كلمة المرور للمسؤول ، وأدخل المفتاح - كل شيء) ، في ذلك الوقت كان 17.0. تعمل الإعدادات الأساسية بشكل معقول خارج الصندوق ، وهناك fail2ban وأحدث الإصدارات المتاحة من PHP ، nginx.

ربما يستحق التوقف وشرح السبب. نظرًا لأنني نادراً ما أفعل مثل هذه الأشياء ، وليس لدي أي أدوات خاصة ومجموعة من الفراغات لكل حالة ، فقد كان من الواضح أن هناك حاجة إلى نوع من أتمتة الأشياء الأساسية ، أولاً ، بسرعة ، وبشكل آمن ، وثالثًا ، أفضل الممارسات شخص ما قد نفذت بالفعل.

لذلك ، تعيين. لقد وفر الوقت بشكل لائق ، وتبين أن إعادة تشغيل الموقع على الخادم الجديد كانت فورية تقريبًا. بقي تكمن في تكوين العضلات ، مما يعطيها نصف الذاكرة وزيادة عدد تجمعات المخزن المؤقت ، وإعطاء نصف النوى إلى nginx (لا يلمس Splash التكوينات العالمية) ، ويذهب إلى الصدفة لبضعة أيام للنظر في إحصائيات mysqltuner. نعم ، واشتريت ImunifyAV المدفوعة من كتالوج التمديد للتخلص من malvari التي غمرتها المياه. كان هناك شيء 11000 الملفات المصابة. والمكروه هو أن القطع المعكوسة من الكود سكبت في احصائيات ، وسيكون بالفرشاة يديك مملة تماما. في البداية جربت ClamAV ، لكن اتضح أنه لم يأخذ مثل هذه الأشياء ، لكن ImunifyAV كان بإمكانه. علاوة على ذلك ، تظل الملفات المعالجة في حالة صالحة للعمل ، وتتم إزالة مجرد قطعة بها برنامج ضار.

الحساب بسيط: 50 دولارًا شهريًا لـ VMku ، و 10 دولارات لـ Splash (أقل بالفعل ، لأنك اشتريته على الفور لمدة عام مع خصم لمدة شهرين) و 3 دولارات لمكافحة الفيروسات. أو الكثير من حقائب المال لوقتي ، والتي كنت أنفقها على الخادم في البداية ، جرف هذه الإسطبلات يدويًا. المالك سعيد جدًا بهذا التوافق.


وفي الوقت نفسه ، وجدوا مبرمج جديد. اتفقنا معه على توزيع المسؤولية ، وجعلنا نطاقًا فرعيًا لإصدار الاختبار ، وبدأ العمل. لقد شاهد نسخة جديدة من الموقع على Laravel ، ونظرت إلى fail2ban٪).


ومن المثير للاهتمام أن تدفق الفضوليين لا يتوقف ، وهناك دائمًا حوالي مائة عنوان في قائمة العناوين المحظورة. التأثير مثير للاهتمام: على وجه الخصوص ، عادةً ، عندما أذهب إلى القشرة ، أرى حوالي 20000-30000 محاولة فاشلة للدخول عبر SSH عند الترحيب. مع تشغيل fail2ban ، حوالي 70. جهد مستثمر: 0. لسوء الحظ ، كان هناك انخفاض في القطران. بشكل افتراضي ، كان WAF (modsecurity) "شبه ممكّن": في وضع الاكتشاف. أي أنه كتب نشاطًا مشبوهًا في السجل ، لكنه في الواقع لم يتخذ أي إجراء. و fail2ban يقرأ بشكل عشوائي كل السجلات ، وفقا للسجون المدرجة ، وينقع كل شيء يتحرك. وهكذا حظرنا نصف هيئة التحرير: D. اضطررت إلى تعطيل هذا السجن ، ووضع عناوين IP اللازمة في القائمة البيضاء من أجل الموثوقية. يتم استثمار هذا الجهد: كزة الماوس مرتين وتعليم المحررين أن يقولوا عنوان IP الخاص بهم.


ما أعجب به المبرمج على الفور هو القدرة على تحميل قواعد البيانات مباشرة في اللوحة والوصول السريع إلى phpMyAdmin


ما أعجبني - سجلات والنسخ الاحتياطي. سجلات مكتوبة وتدوير أنفسهم من خارج منطقة الجزاء. يتم تكوين النسخ الاحتياطية ببساطة شديدة. في أكثر الأوقات البطيئة ، يتم عمل نسخة احتياطية كاملة ، في مكان ما في 10 عربات ، ثم كل يوم بشكل تدريجي ، 200 ميجابايت ، لمدة أسبوع. الحبيبية الانتعاش إلى ملف معين أو قاعدة البيانات. إذا كنت بحاجة إلى الاستعادة من التزايد التدريجي ، فإنك لا تحتاج إلى التملص أولاً مع كامل واستعادة السلسلة بأكملها ، يقوم Splash بعمل كل شيء بنفسه. يمكنك تحميل النسخ الاحتياطية في أي مكان: على بروتوكول نقل الملفات ، ودروببوإكس ، دلو s3 ، محرك جوجل ، وأكثر من ذلك.


اليوم واو: أنهى المبرمج أخيرًا المحرك الجديد ، وصبناه في المنتج ، واستوردنا البيانات القديمة وجلسنا لاختيار لون مازيراتي في المستقبل. ما زلنا اختيار.

بدأت المشاكل الأولى. من المتوقع أن يكون الموقع الجديد أثقل من الموقع القديم ، ولكن السبب الحقيقي هو أن Yandex.Zen كان يستخدم من بين أشياء أخرى لجذب حركة المرور ، والتي اشتهرت بالزوار على دفعات. تم ثني الموقع في 150 اتصالًا متزامنًا (لا أتحدث عن RPS ، لأنني لم أقم بقياسه). بدأنا بدس الأزرار ولف المقابض في منطقة إعدادات php_fpm:


Op ، يحمل بالفعل 500 اتصالات. عند تطبيق بطاقة الائتمان على وسائل الترويج ، تصبح موجات المرور أكبر. المعلم التالي هو 1000 الاتصالات المتزامنة. هنا اضطررت إلى الامتناع عن الشفرة وإلقاء نظرة على العضلات في روحي. البداية لم تساعد ، لكنهم لم يتوقعوا ذلك حقًا. قاموا بتشغيل سجل الاستعلامات البطيئة ، وإيقاف الفهارس في قاعدة البيانات ، وإزالة الاستعلامات غير الضرورية من التعليمات البرمجية ، وتمشيط تهيئة mysql مرة أخرى بناءً على نصيحة mysqltuner.

التحدي الجديد - 2000 اتصالات. تمكنت للتو من الافراج عن نسخة Plesk 17.8 ، والتي ، من بين أمور أخرى ، ثمل التخزين المؤقت nginx. تحديث (سهل بشكل مدهش). نحن نحاول. إنه يعمل! وبعد ذلك صعدوا برفق ، توقف تغذية Yandex.Zen عن العمل. الموقع يعمل ، لا يعمل الخلاصة. لا يعمل التغذية ، لا حركة المرور. الجو يسخن. تحت ضغط الظروف وقلة الخيال ، صعدت على الفور إلى nginx ووجدت ما كنت أبحث عنه. اتضح أنه في مرحلة ما ، قام nginx الغبي بتخزين الخطأ 500 في الحال كرد فعل على Yandex get feed.xml. تم تصحيحه عن طريق إضافة استثناءات إلى إعدادات ذاكرة التخزين المؤقت:


من الواضح أن المالك يحتاج إلى STILL ، فالموجات تزداد ببطء. بينما نتعامل معها ، لكننا بدأنا في تجربة memcached مقدما ، لأن Laravel يدعمها خارج الصندوق تقريبا. لم أرغب بطريقة ما في وضع يدي ميماك "للتجول" ، لذلك قمت بتثبيت صورة عامل الميناء. مباشرة من اللوحة.


حسنًا ، أنا أكذب ، كان علي الذهاب إلى القشرة ووضع الوحدة من خلال pecl. مباشرة وفقا للتعليمات . لا يوجد شيء يمكن قوله حول الزيادة في الإنتاجية ، لم تكن هناك تدفقات كبيرة كافية. التقط محرك الموقع على المضيف المحلي: 11211 ، وتظهر الإحصائيات ، والذاكرة آكل. إذا كنت ترغب في ذلك ، دعونا نرى ما يجب القيام به بعد ذلك. إما ترك الأمر بهذه الطريقة أو ضع "الحقيقي" في المحور الصحيح. أو حاول redis بنفس الطريقة

ثم كنت بحاجة لإرفاق قائمة بريدية. لا التبديلات ، فقط مصادقة بروتوكول نقل البريد الإلكتروني. حصلت على عنوان بريدي ، من خلال تفاصيله من خلال PHP نقوم بالرسالة الإخبارية.


منذ وقت ليس ببعيد ، خرج Plesk Obsidian (18.0) ، تم تحديثه وفقًا للتجربة السابقة دون خوف. كل شيء سار بسلاسة ، لا يوجد شيء يمكن التحدث عنه. من اللطيف - تحسنت الواجهة بشكل كبير من حيث الجودة ، وحديثتها وأصبحت أكثر ملاءمة في بعض الأماكن. بارد قطعة رصد متقدمة على غرافانا.


لم أحسبها بعد ، ولكن يمكنك ، على سبيل المثال ، تكوين التنبيهات لأي معلمة في البريد. إلى المالك ، لول.

بما أنني أتحدث عن الواجهة ، فهي قابلة للتكيف وتعمل جيدًا على الهاتف. في المراحل المبكرة ، بينما كنا نحاول العثور على أفضل إعدادات PHP وأشياء أخرى ، ساعدنا كثيرًا. وخاصة عندما يقوم مبرمج في نوبة من الحماس في العمل بشيء ما في تمام الساعة 23 صباحًا ، وأشرب الفودكا في حمام يتناسب مع حماسة العمل ، وأحتاج بشكل عاجل إلى تبديل شيء ما.


يا بالمناسبة. في الصورة ، ظهرت PHP Composer. لم نلعب معه بعد ، ولكن ، على سبيل المثال ، بالنسبة لارافيل نفسه ، يمكنه أن يوفر بضعة تسجيلات دخول في القشرة وبعض الوقت لتثبيت التبعيات. يوجد نفس النظام لـ Node.JS و Ruby.

مع SSL ، كل شيء بسيط. إذا كان المجال يحل المكان الذي يجب أن يكون فيه ، فلنقم بالتشفير بنقرة واحدة ويتم تحديثه بمفرده ، سواء في المجال نفسه أو على النطاقات الفرعية ، وحتى خدمات البريد.


Plesk نفسها ، كما البرمجيات ، هو حاليا لطيفا للغاية ومستقرة. يقوم بتحديث نفسه والمحور هادئ ويستهلك موارد قليلة ويعمل بسلاسة. حتى أنني لا أتذكر أنني في مكان ما صعدت إلى شيء ما ، والذي سيكون عيبًا واضحًا في المنتج. بالطبع ، كانت هناك مشاكل ، لكنها إما كانت بسبب عيب في التكوين ، أو في مكان ما عند التقاطع ، لذلك لم يكن هناك شيء للشكوى منه. انطباعات العمل مع Splash ممتعة بشكل عام. ما هو مفقود في ذلك ، ويجب على المرء أن يفهم هذا ، هو أي (أي) تجميع. لا LB ولا HA. يمكنك المحاولة ، ولكن سيكون هناك الكثير من الجهد المستثمر بحيث يكون من الأفضل القيام بشيء مختلف في البداية.

أعتقد أنه يمكنك تلخيص. في حالة عدم وجود مشرف ، أو أنه لا يكفي ، عندما يتجاوز سعر الاستضافة والموقع الذي يتم تشغيله عليه ، حسناً ، 100u.e. يجدر بك اختيار تعيين مسؤول غير متفرغ ، أو شراء برنامج والحصول على مسؤول "نصف المطبات" ، أو عدم تشغيله على الإطلاق - إنه أمر منطقي بالتأكيد. من وجهة نظر المسؤول عن بعد - نفس الشيء. 10 دولارات شهريًا ، ويوفر الوقت ويمنح مرونة في العمل مقابل مبلغ كبير جدًا. على سبيل المثال ، إذا طُلب مني بقوة اتخاذ مشروع مماثل تحت الجناح ، فسأصر على النقل إلى بليسك.

Source: https://habr.com/ru/post/ar484812/


All Articles