環境 CentOS Stream release 9 Apache/2.4.57 (CentOS Stream) Xserver VPS
PHPをモジュールで動作させるかCGIで動作させるかについてだが、PHP で並列処理のコーディングを行いたいなら PHP モジュールで、尚且つ、ソースコードで ZTS を指定してインストールする必要があるが、最近の流れから言って dnf で CGI 版を素直にインストールするのが手っ取り早い。
Remi リポジトリのインストール
dnf install http://rpms.remirepo.net/enterprise/remi-release-9.rpm
php-fpm のインストール
dnf -y install php80-php-fpm php-fpm
php-fpm スタート
systemctl start php-fpm
php-fpm 自動起動設定
systemctl enable php-fpm
php-fpm の設定
vi /etc/php-fpm.d/www.conf
ユーザー www は追加済みであることが前提
;user = apache ;↓ user = www ;group = apache ;↓ group = www ;listen = /run/php-fpm/www.sock ;↓ listen = /var/run/php-fpm/php-fpm.sock ;listen.owner = nobody ;↓ listen.owner = www ;listen.group = nobody ;↓ listen.group = www listen.mode = 0660 ;pm = dynamic pm = static pm.max_children = 4 ;pm.start_servers = 300 ;pm.min_spare_servers = 200 ;pm.max_spare_servers = 400 ;pm.process_idle_timeout = 10s; pm.max_requests = 1200
php-fpm リスタート
systemctl restart php-fpm
pm.max_children = 4 は CPU 4 コアの環境に合わせている。
ネット上に MPM の設定も含めて設定情報が出ており、参考にしていじっては見たが、これといった効果は見られず、結局、上の設定内容に落ち着いている。00-mpm.conf の設定においても LoadModule mpm_event_module modules/mod_mpm_event.so が有効になっているだけの設定。(デフォルト)
httpd の設定
vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html"> ⌇ ⌇ Options FollowSymLinks ExecCGI AllowOverride All Require all granted AddHandler cgi-script .cgi .pl .py <FilesMatch .php$> SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost" </FilesMatch> </Directory> # 最終行に下記を追記 Timeout 5400 KeepAlive On MaxKeepAliveRequests 3000 KeepAliveTimeout 0
httpd リスタート
systemctl restart httpd
現在アクティブな php.ini の場所を確認
php -i | grep php.ini
out Configuration File (php.ini) Path => /etc/opt/remi/php80 Loaded Configuration File => /etc/opt/remi/php80/php.ini
php.ini の設定
vi /etc/opt/remi/php80/php.ini
409 max_execution_time = 0 430 memory_limit = 256M 934 date.timezone = Asia/Tokyo 1503 [mbstring] 1507 mbstring.language = Japanese 1514 default_charset = "UTF-8" 1515 mbstring.internal_encoding = UTF-8 1523 mbstring.http_input = pass 1533 mbstring.http_output = pass 1541 mbstring.encoding_translation = Off 1546 mbstring.detect_order = UTF-8,EUC-JP,SJIS,JIS,ASCII