Table of Contents
CentOS8からPHPはFPMのeventモードを使用するように変更になった。
インストールの前提条件は、Remi Repositoryがインストール済み
Remi Repository,apacheは、別記事を参照
PHPのバージョン確認
# dnf module list php
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
インストール
# dnf module install php:remi-7.4
# dnf install php-imap php-devel php-gd php-zip php-mysqlnd php-intl
リセット
インストールするバージョンを変更する場合は、一度リセットを行うか、removeでアンインストールが必要
# dnf module reset php
または、
# dnf module remove php
Apacheとの連携設定(パケージからインストールされる内容を一部抜粋)
# vi /etc/php-fpm.d/www.conf
----------------------------------------
[www]
user = apache
group = apache
listen = /run/php-fpm/www.sock
※1 従来の所有権・パーミッションによるアクセス制限に変更(なんとなく)
listen.owner = apache
listen.group = apache
listen.mode = 0660
;listen.acl_users = apache,nginx
;listen.acl_groups =
;listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 10000
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
----------------------------------------
# vi /etc/httpd/conf.modules.d/00-proxy.conf
----------------------------------------
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
----------------------------------------
# vi /etc/httpd/conf.modules.d/00-mpm.conf
----------------------------------------
# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
LoadModule mpm_event_module modules/mod_mpm_event.so
----------------------------------------
# vi /etc/httpd/conf.d/php.conf
----------------------------------------
# Redirect to local php-fpm if mod_php (5 or 7) is not available
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
----------------------------------------
Webを再起動
# systemctl restart php-fpm
# systemctl restart httpd
phpのバージョン確認phpのバージョン確認
# php -v
PHP 7.4.13 (cli) (built: Nov 24 2020 10:03:34) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.13, Copyright (c), by Zend Technologies
phpのモード確認
# httpd -M | grep -i mpm
mpm_event_module (shared)
動作確認
PHPINFO
# vi /var/www/status/phpinfo.php
----------------------------------------
<?php phpinfo(); ?>
----------------------------------------
https://www.chinaz.org/status/phpinfo.php
FPMのステータス
# vi /etc/php-fpm.d/www.conf
----------------------------------------
[www]
pm.status_path = /phpfpm_status
----------------------------------------
# vi /etc/httpd/conf.d/status.conf
----------------------------------------
### status
<LocationMatch /phpfpm_status>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
Require all denied
Require ip 192.168.x.
</LocationMatch>
----------------------------------------
http://192.168.xxx.xxx/phpfpm_status
listen queue: ペンディングとなっているコネクションのキューの数。
max listen queue: FPMを起動してからのlisten queueの最大値。
どちらも、0でない場合はもう少しプロセスを増やした方がいい
参考URL
小黒のTECHメモ(仮): 5月 2020
CentOS 8のApache環境にPHP 7.2をインストールして使えるようにする手順 – レムシステム エンジニアブログ
CentOS 8 標準の Apache と PHP の関係について – ラボラジアン
PHP-FPM(php7.4) Apache2.4 でWebサーバ構築 on CentOS8 | 404 motivation not found
php-fpmを使ってphpを快適にfastcgiで実行する – Qiita
PHP-FPM と nginxのステータスページを見られるようにする – イケてる SaaS を作りたい (koni blog)