~5 دقیقه مطالعه • بروزرسانی ۲۶ بهمن ۱۴۰۴
PHP FastCGI Process Manager (PHP-FPM)
آخرین ویرایش: 11 نوامبر 2022
Overview
PHP-FPM یک FastCGI daemon پیشرفته برای PHP است که به وبسایتها اجازه میدهد بارهای سنگین را با سرعت و کارایی بالا پردازش کنند. PHP-FPM با استفاده از Poolها (کارگرهایی که درخواستهای PHP را پردازش میکنند) عملکرد بسیار بهتری نسبت به روشهای CGI سنتی مانند SUPHP دارد.
هشدار مهم: فعالسازی PHP-FPM فقط زمانی توصیه میشود که سرور حداقل 2GB RAM یا حداقل 30MB RAM برای هر دامنه داشته باشد. در غیر این صورت، سرور با مشکلات شدید عملکردی مواجه خواهد شد.
مزایای PHP-FPM
- سرعت بسیار بالاتر نسبت به CGI و SUPHP
- عدم مصرف بیرویه RAM توسط Apache
- مناسب برای محیطهای چندکاربره
- پشتیبانی از Poolهای جداگانه برای هر دامنه
نکته درباره LiteSpeed
LiteSpeed از PHP-FPM استفاده نمیکند و بهجای آن از lsphp استفاده میکند. بنابراین تنظیمات PHP-FPM در MultiPHP Manager روی LiteSpeed اعمال نمیشود.
مانیتورینگ PHP-FPM
برای مانیتور کردن سرویس PHP-FPM در WHM، گزینه Monitor را در بخش Service Manager فعال کنید:
WHM » Home » Service Configuration » Service Manager
PHP-FPM در EasyApache 4
PrivateTmp چیست؟
EasyApache 4 برای افزایش امنیت، از گزینه PrivateTmp برای PHP-FPM استفاده میکند. این گزینه برای هر نسخه PHP یک دایرکتوری موقت اختصاصی در /tmp ایجاد میکند.
هشدار: حذف این دایرکتوریها باعث اختلال در عملکرد PHP-FPM میشود. اگر مجبور به حذف آنها هستید، حتماً سرویس PHP-FPM را ریستارت کنید:
/usr/local/cpanel/scripts/restartsrv_apache_php_fpm --hard
PHP-FPM Code & Filesystem Layout
آخرین ویرایش: 13 جولای 2022
Overview
این بخش ساختار فایلها و نحوهٔ پیادهسازی PHP-FPM در EasyApache 4 را توضیح میدهد. PHP-FPM به سرورها اجازه میدهد منابع مشخصی را برای هر دامنه اختصاص دهند و درخواستهای PHP را سریعتر پردازش کنند.
فایلهای اصلی PHP-FPM
EasyApache 4 از دو فایل YAML برای تولید فایلهای نهایی PHP-FPM استفاده میکند:
/var/cpanel/ApachePHPFPM/system.yaml
/var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
این فایلها باید بهصورت دستی ایجاد شوند:
mkdir -p /var/cpanel/ApachePHPFPM/
touch /var/cpanel/ApachePHPFPM/system.yaml
touch /var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
نکات مهم
- فقط مقادیر متفاوت از پیشفرضها را در فایلها قرار دهید.
- کاراکترهای غیرمجاز مانند
.[]()را با_جایگزین کنید.
نمونه system.yaml
---
daemonize: yes
فایلهای نهایی PHP-FPM
فایلهای زیر توسط YAMLها تولید میشوند:
/opt/cpanel/ea-php80/root/etc/php-fpm.conf
/opt/cpanel/ea-php80/root/etc/php-fpm.d/[domain].conf
هشدار: این فایلها را هرگز بهصورت دستی ویرایش نکنید.
فایلهای ضروری و اختیاری
فایل ضروری برای هر دامنه:
/var/cpanel/userdata/[user]/[domain].php-fpm.yaml
فایلهای اختیاری:
/var/cpanel/ApachePHPFPM/system.yaml/var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
نکته: اگر تنظیمات یک دامنه را در MultiPHP Manager تغییر دهید، دیگر از تنظیمات پیشفرض سیستم پیروی نمیکند.
بازگردانی PHP در صورت حذف اشتباه
هشدار: هرگز بستههای PHP را از Package Manager حذف نکنید. این کار باعث خرابی سایتها و حتی Apache میشود.
برای بازگردانی PHP:
ea_install_profile --install /etc/cpanel/ea4/profiles/cpanel/default.json
/usr/local/cpanel/scripts/restartsrv_apache_php_fpm
اگر این دستورات کار نکرد، باید با مدیر سیستم تماس بگیرید.
Conclusion
PHP-FPM یک ابزار قدرتمند برای افزایش سرعت و کارایی PHP است. با شناخت ساختار فایلها، نحوهٔ پیادهسازی و تنظیمات آن در EasyApache 4، میتوانید بهترین عملکرد را برای سایتهای PHP فراهم کنید.
PHP-FPM Domain Pools
آخرین ویرایش: 18 ژانویه 2021
Overview
این سند توضیح میدهد که سیستم چگونه برای هر دامنه یک Pool در PHP-FPM ایجاد میکند و فایلهای پیکربندی مربوطه چگونه ساخته میشوند.
سیستم چگونه Pool ایجاد میکند؟
سیستم زمانی یک Pool ایجاد میکند که فایل زیر برای دامنه وجود داشته باشد:
/var/cpanel/userdata/[user]/[domain].php_fpm.yaml
این فایل باید حداقل شامل خطوط زیر باشد:
---
_is_present: 1
میتوانید هر مقدار دلخواه مربوط به Pool را در این فایل قرار دهید.
نکات مهم:
- وجود خط
---الزامی است. - مقدار
_is_presentاختیاری است، اما اگر هیچ مقدار دیگری تنظیم نکردهاید باید آن را قرار دهید. - این فایل فقط باید شامل مقادیری باشد که با مقادیر پیشفرض متفاوت هستند.
هشدار: هنگام ویرایش فایلهای YAML نهایت دقت را داشته باشید. کوچکترین خطای نحوی باعث از کار افتادن سرویسها میشود. قبل از ویرایش، حتماً از سیستم خود بکاپ بگیرید.
ایجاد یک Pool
برای ایجاد یک Pool، دستور زیر را اجرا کنید:
Cpanel::PHPFPM::rebuild_files()
یا میتوانید از اسکریپت زیر استفاده کنید:
/scripts/php_fpm_config --rebuild
سیستم چه مراحلی را انجام میدهد؟
- فایلهای
system.yamlوsystem_pool_defaults.yamlرا بررسی کرده و برای هر نسخه PHP یک پیکربندی سیستم ایجاد میکند. - فایلهای YAML مربوط به دامنهها را جستجو میکند.
- برای هر فایل دامنه، یک فایل پیکربندی ایجاد میکند:
/opt/cpanel/[ea_php_version]/root/etc/php-fpm.d/[domain].conf
سپس Apache برای ارسال درخواستهای PHP به PHP-FPM به شکل زیر پیکربندی میشود:
# php -- BEGIN cPanel-generated handler, do not edit
SetHandler "proxy:unix:/home/cptest3/cptest3_tld.php_fpm.sock|fcgi://cptest3.tld/"
# php -- END cPanel-generated handler, do not edit
نکته: هر فایل .conf که فایل YAML متناظر نداشته باشد حذف میشود.
ساخت سوکت PHP-FPM
سیستم یک سوکت PHP-FPM در مسیر زیر ایجاد میکند:
/opt/cpanel/phpversion/root/usr/var/run/php-fpm/obscure_domain.sock
مثال:
/opt/cpanel/ea-php56/root/usr/var/run/php-fpm/4cfb2f15c04ae8a6a980ad6b78a834e7c8661958.sock
پس از ایجاد فایلها، سیستم Poolها را ریستارت میکند (بسته به سیستمعامل با systemd یا init.d). همچنین Poolهای نسخههای PHP که دامنهای ندارند حذف میشوند.
Jail Shell
اگر یک Pool دامنه PHP-FPM ایجاد شود، سیستم در صورت وجود شرایط زیر آن را به mount مربوط به virtfs متصل میکند:
- فایل
/var/cpanel/feature_toggles/apachefpmjailوجود داشته باشد. - اکانت WHM از jailshell یا noshell استفاده کند.
- گزینه زیر در WHM فعال شده باشد:
WHM » Home » Server Configuration » Tweak Settings » Experimental: Jail Apache Virtual Hosts using mod_ruid2 and cPanel jailshell
Conclusion
Poolهای PHP-FPM به هر دامنه اجازه میدهند PHP را با سرعت و کارایی بالا و با پیکربندی اختصاصی اجرا کند. شناخت نحوهٔ ایجاد Pool، ساختار فایلهای YAML و نحوهٔ تعامل Apache با PHP-FPM برای مدیریت حرفهای سرور ضروری است.
نوشته و پژوهش شده توسط دکتر شاهین صیامی