كيفية إعداد مجموعات PHP-FPM منفصلة في NGINX
نُشرت: ١٥ فبراير ٢٠٢٥ م في ١١:٤١:٥٦ ص UTC
في هذه المقالة، سأستعرض خطوات التكوين اللازمة لتشغيل مجموعات PHP-FPM المتعددة وتوصيل NGINX بها عبر FastCGI، مما يسمح بفصل العملية وعزلها بين المضيفين الافتراضيين.
How to Set Up Separate PHP-FPM Pools in NGINX
تعتمد المعلومات الواردة في هذا المنشور على NGINX 1.4.6 وPHP-FPM 5.5.9 اللذين يعملان على Ubuntu Server 14.04 x64. وقد تكون هذه المعلومات صالحة أو غير صالحة للإصدارات الأخرى. (تحديث: يمكنني تأكيد أنه اعتبارًا من Ubuntu Server 24.04 وPHP-FPM 8.3 وNGINX 1.24.0، لا تزال جميع التعليمات الواردة في هذا المنشور تعمل)
هناك عدد من المزايا لإعداد مجموعات عمليات فرعية متعددة لـ PHP-FPM بدلاً من تشغيل كل شيء في نفس المجموعة. يأتي الأمان والفصل/العزل وإدارة الموارد في مقدمة هذه المزايا.
بغض النظر عن دوافعك، فإن هذه التدوينة سوف تساعدك على القيام بذلك :-)
الجزء 1 - إعداد مجموعة PHP-FPM جديدة
أولاً، تحتاج إلى تحديد الدليل الذي يخزن فيه PHP-FPM تكوينات المجموعة. في Ubuntu 14.04، يكون هذا هو /etc/php5/fpm/pool.d افتراضيًا. ربما يوجد بالفعل ملف يسمى www.conf هناك، والذي يحمل تكوين المجموعة الافتراضية. إذا لم تكن قد نظرت إلى هذا الملف من قبل، فمن المحتمل أن يتعين عليك مراجعته وتعديل الإعدادات فيه لإعدادك لأن الإعدادات الافتراضية مخصصة لخادم ضعيف إلى حد ما، ولكن في الوقت الحالي، قم بعمل نسخة منه حتى لا نضطر إلى البدء من الصفر:
بالطبع، استبدل "mypool" بأي اسم تريد أن يُطلق على مجموعتك.
الآن افتح الملف الجديد باستخدام برنامج nano أو أي محرر نصوص تفضله واضبطه ليناسب غرضك. ربما ترغب في تعديل أرقام العمليات الفرعية وربما المستخدم والمجموعة التي تعمل المجموعة تحتها، ولكن الإعدادين اللذين يجب عليك تغييرهما بالتأكيد هما اسم المجموعة والمقبس الذي تستمع إليه، وإلا فسوف يتعارض مع المجموعة الحالية وستتوقف الأشياء عن العمل.
يوجد اسم المجموعة بالقرب من أعلى الملف، محاطًا بأقواس مربعة. بشكل افتراضي، يكون [www] . يمكنك تغيير هذا إلى أي اسم تريده؛ أقترح نفس الاسم الذي أطلقته على ملف التكوين، لذا من أجل هذا المثال، قم بتغييره إلى [mypool] . إذا لم تقم بتغييره، فيبدو أن PHP-FPM سيقوم فقط بتحميل أول ملف تكوين بهذا الاسم، وهو ما من المرجح أن يؤدي إلى تعطل الأشياء.
ستحتاج بعد ذلك إلى تغيير المقبس أو العنوان الذي تستمع إليه، والذي يتم تحديده بواسطة تعليمة الاستماع . بشكل افتراضي، يستخدم PHP-FPM مآخذ يونكس، لذا من المحتمل أن يبدو تعليمة الاستماع الخاصة بك على هذا النحو:
يمكنك تغييره إلى أي اسم صالح تريده، ولكن مرة أخرى، أقترح الالتزام بشيء مشابه لاسم ملف التكوين، بحيث يمكنك على سبيل المثال تعيينه إلى:
حسنًا، احفظ الملف واخرج من محرر النصوص.
الجزء 2 – تحديث تكوين المضيف الافتراضي NGINX
الآن، تحتاج إلى فتح ملف المضيف الافتراضي NGINX باستخدام تكوين FastCGI الذي تريد تغييره إلى مجموعة جديدة - أو بالأحرى، الاتصال بالمقبس الجديد.
بشكل افتراضي في Ubuntu 14.04، يتم تخزين هذه الملفات في /etc/nginx/sites-available، ولكن يمكن أيضًا تعريفها في مكان آخر. ربما تكون أنت من يعرف مكان تكوينات المضيف الافتراضي الخاص بك ;-)
افتح ملف التكوين ذي الصلة في محرر النصوص المفضل لديك وابحث عن التوجيه fastcgi_pass (الذي يجب أن يكون في سياق الموقع) الذي يحدد مقبس PHP-FPM. يجب عليك تغيير هذه القيمة بحيث تتطابق مع تكوين مجموعة PHP-FPM الجديدة التي قمت بإنشائها في الخطوة الأولى، لذا بمواصلة مثالنا، ستغير هذا إلى:
fastcgi_pass يونكس:/var/run/php5-fpm-mypool.sock؛
ثم احفظ هذا الملف وأغلقه أيضًا. لقد اقتربت من الانتهاء الآن.
الجزء 3 – إعادة تشغيل PHP-FPM وNGINX
لتطبيق تغييرات التكوين التي أجريتها، أعد تشغيل كل من PHP-FPM وNGINX. قد يكون إعادة التحميل بدلاً من إعادة التشغيل كافيًا، لكنني أجد أنه أمر غير دقيق بعض الشيء، اعتمادًا على الإعدادات التي تم تغييرها. في الحالة المعينة، أردت أن تموت عمليات PHP-FPM الفرعية القديمة على الفور، لذا كان من الضروري إعادة تشغيل PHP-FPM، ولكن بالنسبة لـ NGINX، قد تكون إعادة التحميل كافية. جربها بنفسك.
sudo service nginx restart
وفويلا، لقد انتهيت. إذا قمت بكل شيء بشكل صحيح، فيجب أن يستخدم المضيف الافتراضي الذي قمت بتعديله الآن مجموعة PHP-FPM الجديدة ولا يشارك العمليات الفرعية مع أي مضيفين افتراضيين آخرين.