آپاچی؛ شب ۳۵: PHP-FPM روی AlmaLinux و Rocky Linux
فهرست نوشته
در خانوادهٔ RHEL 9، مدل بستهبندی PHP با FPM کار میکند. امشب stream مناسب را آگاهانه انتخاب میکنیم و socket اختصاصی را به میزبان وصل میکنیم.
این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نامها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.
محیط: AlmaLinux/Rocky Linux 9 بهروز با AppStream؛ stream php:8.3 باید در مخزن همان VM موجود باشد. روی سرور دارای PHP، ابتدا طرح مهاجرت جدا لازم است.
انتخاب بسته، بدون reset کور#
sudo dnf module list php
sudo dnf module enable php:8.3
sudo dnf install php-fpm php-cli php-mysqlnd php-gd php-xml \
php-mbstring php-intl php-opcache
php -v
sudo httpd -M
اگر stream موجود نیست، release و مخزن را بررسی کن؛ مخزن ناشناس یا فرمان Ubuntu جایگزین نمیشود. این دستورها برای VM تمیزند؛ module reset روی سرویس موجود میتواند مسیر ارتقا را تغییر دهد.
فایل /etc/php-fpm.d/lab.conf:
[lab]
user = apache
group = apache
listen = /run/php-fpm/lab.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660
pm = ondemand
pm.max_children = 4
pm.process_idle_timeout = 10s
pm.max_requests = 300
clear_env = yes
security.limit_extensions = .php
php_admin_value[cgi.fix_pathinfo] = 0
اگر فایل نمونه را کپی کردهای، listen.acl_users و listen.acl_groups را بررسی کن؛ با فعال بودن ACL، مقدار owner/group ممکن است نادیده گرفته شود. در فایل Apache /etc/httpd/conf.d/php.conf handler سراسری پیشفرض را بخوان؛ برای این lab، با backup فقط بلوک handler سراسری را بردار و حفاظت فایلها را نگه دار.
در VirtualHost HTTPS www:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php-fpm/lab.sock|fcgi://localhost/"
</FilesMatch>
آزمون زنجیره#
sudo php-fpm -t
sudo systemctl enable --now php-fpm
sudo systemctl restart php-fpm
sudo httpd -t
sudo systemctl reload httpd
ls -lZ /run/php-fpm/lab.sock
check.php باید fpm-fcgi بدهد. در شکست، لاگ httpd، journal مربوط به php-fpm، مجوز socket و AVC را جدا ببین. اتصال Unix socket برای PHP به باز کردن پورت 9000 یا خاموش کردن SELinux نیاز ندارد.
بازگشت: سایت دارای PHP را ابتدا ببند و config/socket قبلی را بازیابی کن؛ بعد سایت را با درخواست تازه آزمایش کن. تغییر PHP stream را با Snapshot یا برنامهٔ مهاجرت برگردان، نه صرف تغییر نام socket.
منبع: PHP 8.3 در یادداشت انتشار RHEL 9.6 ، PHP-FPM در Rocky .