كيفية إعداد مجموعات PHP-FPM منفصلة في NGINX
نُشرت: ١٥ فبراير ٢٠٢٥ م في ١١:٤١:٥٦ ص UTC
آخر تحديث: ١٢ يناير ٢٠٢٦ م في ٨:٢٩:٥١ ص UTC
في هذه المقالة، سأستعرض خطوات التكوين اللازمة لتشغيل مجموعات PHP-FPM متعددة وربط NGINX بها عبر FastCGI، مما يسمح بفصل العمليات وعزلها بين المضيفات الافتراضية.
How to Set Up Separate PHP-FPM Pools in NGINX
تستند المعلومات الواردة في هذه المقالة إلى NGINX 1.4.6 وPHP-FPM 5.5.9 المُشغّلين على خادم أوبونتو 14.04 (64 بت). قد لا تكون هذه المعلومات صالحة للإصدارات الأخرى. (تحديث: أؤكد أنه اعتبارًا من خادم أوبونتو 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 مقابس Unix، لذا من المحتمل أن يبدو توجيه الاستماع الخاص بك على النحو التالي:
يمكنك تغييره إلى أي اسم صالح تريده، ولكن مرة أخرى، أقترح الالتزام باسم مشابه لاسم ملف التكوين، لذا يمكنك على سبيل المثال تعيينه إلى:
حسنًا، احفظ الملف واخرج من محرر النصوص.
الجزء الثاني - تحديث إعدادات المضيف الافتراضي لـ NGINX
الآن تحتاج إلى فتح ملف المضيف الظاهري NGINX مع تكوين FastCGI الذي تريد تغييره إلى مجموعة جديدة - أو بالأحرى، الاتصال بالمقبس الجديد.
في نظام أوبونتو 14.04، تُخزَّن هذه الإعدادات افتراضيًا في المسار /etc/nginx/sites-available، ولكن يمكن تحديدها في مكان آخر. من الأفضل أن تعرف مكان ملفات إعدادات المضيف الافتراضي لديك.
افتح ملف الإعدادات ذي الصلة في محرر النصوص المفضل لديك، وابحث عن توجيه fastcgi_pass (الذي يجب أن يكون ضمن سياق الموقع) الذي يُعرّف مقبس PHP-FPM. يجب عليك تغيير هذه القيمة لتتوافق مع إعدادات مجموعة PHP-FPM الجديدة التي أنشأتها في الخطوة الأولى، لذا، استكمالاً لمثالنا، ستُغيّرها إلى:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
ثم احفظ الملف وأغلقه أيضاً. لقد شارفت على الانتهاء الآن.
الجزء 3 - إعادة تشغيل PHP-FPM و NGINX
لتطبيق تغييرات الإعدادات التي أجريتها، أعد تشغيل كل من PHP-FPM وNGINX. قد يكفي إعادة تحميل الصفحة بدلاً من إعادة التشغيل، لكنني أجد أن هذه الطريقة غير مضمونة النتائج، وذلك بحسب الإعدادات التي تم تغييرها. في حالتي تحديدًا، أردتُ إيقاف عمليات PHP-FPM الفرعية القديمة فورًا، لذا كان من الضروري إعادة تشغيل PHP-FPM، أما بالنسبة لـ NGINX، فقد تكون إعادة تحميل الصفحة كافية. جرب بنفسك.
sudo service nginx restart
وهكذا، تكون قد انتهيت. إذا قمت بكل شيء بشكل صحيح، فيجب أن يستخدم المضيف الافتراضي الذي قمت بتعديله الآن مجموعة PHP-FPM الجديدة ولن يشارك العمليات الفرعية مع أي مضيفات افتراضية أخرى.
