Miklix

نحوه راه اندازی استخرهای جداگانه 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 است که بر روی سرور اوبونتو 14.04 x64 اجرا می شوند. ممکن است برای نسخه های دیگر معتبر باشد یا نباشد. (به روز رسانی: من می توانم تأیید کنم که از سرور اوبونتو 24.04 ، PHP-FPM 8.3 و NGINX 1.24.0 ، همه دستورالعمل های این هنوز کار می کنند)

راه اندازی چندین استخرهای فرآیند فرزند PHP-FPM به جای اجرای همه چیز در یک استخر مزایای زیادی دارد. امنیت، جداسازی/انزوا و مدیریت منابع به عنوان چند مورد اصلی به ذهن خطور می کند.

صرف نظر از اینکه انگیزه شما چیست، این به شما در انجام آن کمک می کند :-)


قسمت 1 - یک استخر PHP-FPM جدید راه اندازی کنید

ابتدا باید دایرکتوری را پیدا کنید که PHP-FPM تنظیمات استخر خود را در آن ذخیره می کند. در اوبونتو 14.04، این به طور پیش فرض /etc/php5/fpm/pool.d است. احتمالا در حال حاضر فایلی به نام www.conf وجود دارد که پیکربندی استخر پیش فرض را در خود جای داده است. اگر قبلا به آن فایل نگاه نکرده اید، به احتمال زیاد باید آن را مرور کنید و تنظیمات موجود در آن را برای راه اندازی خود تغییر دهید، زیرا پیش فرض ها برای یک سرور نسبتا ضعیف است، اما در حال حاضر فقط یک کپی از آن تهیه کنید تا مجبور نباشیم از ابتدا شروع کنیم:

sudo cp www.conf mypool.conf

البته، "mypool" را با هر چیزی که می خواهید استخر شما نامیده شود، جایگزین کنید.

اکنون فایل جدید را با استفاده از nano یا هر ویرایشگر متنی که ترجیح می دهید باز کنید و آن را متناسب با هدف خود تنظیم کنید. احتمالا می خواهید اعداد فرآیند فرزند و احتمالا کدام کاربر و گروهی را که استخر تحت آن اجرا می شود، تغییر دهید، اما دو تنظیمی که باید کاملا تغییر دهید نام استخر و سوکتی است که به آن گوش می دهد، در غیر این صورت با استخر موجود در تضاد خواهد بود و همه چیز از کار می افتد.

نام استخر در بالای فایل قرار دارد و در پرانتز محصور شده است. به طور پیش فرض [www] است. این را به هر چیزی که می خواهید تغییر دهید. من پیشنهاد می کنم همان چیزی که شما نام فایل پیکربندی را گذاشتید، بنابراین به خاطر این مثال آن را به [mypool] تغییر دهید. اگر آن را تغییر ندهید، به نظر می رسد که PHP-FPM فقط اولین فایل پیکربندی را با این نام بارگذاری می کند که احتمالا همه چیز را خراب می کند.

سپس باید سوکت یا آدرسی را که به آن گوش می دهید تغییر دهید، که توسط دستورالعمل گوش دادن تعریف شده است. به طور پیش فرض، PHP-FPM از سوکت های یونیکس استفاده می کند، بنابراین دستورالعمل گوش دادن شما احتمالا به این شکل خواهد بود:

listen = /var/run/php5-fpm.sock

شما می توانید آن را به هر نام معتبری که می خواهید تغییر دهید، اما دوباره، پیشنهاد می کنم به چیزی شبیه به نام فایل پیکربندی پایبند باشید، بنابراین می توانید به عنوان مثال آن را روی زیر تنظیم کنید:

listen = /var/run/php5-fpm-mypool.sock

بسیار خوب، فایل را ذخیره کنید و از ویرایشگر متن خارج شوید.


قسمت 2 - پیکربندی میزبان مجازی NGINX را به روز کنید

اکنون باید فایل میزبان مجازی NGINX را با پیکربندی FastCGI که می خواهید به یک استخر جدید تغییر دهید باز کنید - یا بهتر است بگوییم به سوکت جدید متصل شوید.

به طور پیش فرض در اوبونتو 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 php5-fpm restart
sudo service nginx restart

و voila، شما تمام شده اید. اگر همه کارها را به درستی انجام دادید، میزبان مجازی که تغییر داده اید اکنون باید از استخر جدید PHP-FPM استفاده کند و فرآیندهای فرزند را با هیچ میزبان مجازی دیگری به اشتراک نگذارد.

در Bluesky به اشتراک بگذاریددر فیسبوک به اشتراک بگذاریددر لینکدین به اشتراک بگذاریددر Tumblr به اشتراک بگذاریددر X به اشتراک بگذاریددر لینکدین به اشتراک بگذاریدپین در پینترست

میکل بنگ کریستنسن

درباره نویسنده

میکل بنگ کریستنسن
مایکل خالق و صاحب miklix.com است. او بیش از 20 سال تجربه به عنوان یک برنامه نویس حرفه ای کامپیوتر / توسعه دهنده نرم افزار دارد و در حال حاضر به طور تمام وقت برای یک شرکت بزرگ فناوری اطلاعات اروپایی مشغول به کار است. هنگامی که وبلاگ نویسی نمی کند، اوقات فراغت خود را صرف مجموعه وسیعی از علایق، سرگرمی ها و فعالیت ها می کند، که ممکن است تا حدی در موضوعات مختلف پوشش داده شده در این وب سایت منعکس شود.