PHP-FPM چیست و چگونه در EasyApache 4 پیاده‌سازی می‌شود؟

این مقاله توضیح می‌دهد PHP-FPM چیست، چرا برای سرورهای پرترافیک ضروری است، چه هشدارهایی هنگام فعال‌سازی آن وجود دارد، EasyApache 4 چگونه PHP-FPM را پیاده‌سازی می‌کند، ساختار فایل‌ها و دایرکتوری‌های آن چگونه است، و چه فایل‌هایی باید برای سفارشی‌سازی ایجاد شوند. همچنین روش صحیح بازگردانی PHP در صورت حذف اشتباه بسته‌ها توضیح داده می‌شود.

cPanel PHP-FPM configurationEasyApache 4 PHP-FPMPHP-FPM performance

~5 min read • Updated Feb 15, 2026

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

سیستم چه مراحلی را انجام می‌دهد؟

  1. فایل‌های system.yaml و system_pool_defaults.yaml را بررسی کرده و برای هر نسخه PHP یک پیکربندی سیستم ایجاد می‌کند.
  2. فایل‌های YAML مربوط به دامنه‌ها را جستجو می‌کند.
  3. برای هر فایل دامنه، یک فایل پیکربندی ایجاد می‌کند:

/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 برای مدیریت حرفه‌ای سرور ضروری است.


Written & researched by Dr. Shahin Siami