php

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
file

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
file
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)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です