このセクションでは、Nginx(Webサーバー)のPHP環境構築について紹介していきます。
現在の環境で、PHPバージョンを確認します。この時点ではPHPのモジュールがインストールされていない状態になっています。
[user@pub-web ~]$ sudo php -v
sudo: php: command not found
[user@pub-web ~]$
PHPの必要なモジュールをインストールします。
[user@pub-web ~]$ sudo dnf -y install php php-mbstring php-pdo php-mysqli
Last metadata expiration check: 1:06:02 ago on Sun Aug 13 20:39:56 2023.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
==============================================================================
ーー(省略)ーー
Installed:
almalinux-logos-httpd-90.5.1-1.1.el9.noarch
apr-1.7.0-11.el9.x86_64
apr-util-1.6.1-20.el9_2.1.x86_64
apr-util-bdb-1.6.1-20.el9_2.1.x86_64
apr-util-openssl-1.6.1-20.el9_2.1.x86_64
httpd-2.4.53-11.el9_2.5.x86_64
httpd-core-2.4.53-11.el9_2.5.x86_64
httpd-filesystem-2.4.53-11.el9_2.5.noarch
httpd-tools-2.4.53-11.el9_2.5.x86_64
libxslt-1.1.34-9.el9.x86_64
mailcap-2.1.49-5.el9.noarch
mod_http2-1.15.19-4.el9_2.4.x86_64
mod_lua-2.4.53-11.el9_2.5.x86_64
nginx-filesystem-1:1.20.1-14.el9.alma.1.noarch
oniguruma-6.9.6-1.el9.5.x86_64
php-8.0.27-1.el9_1.x86_64
php-cli-8.0.27-1.el9_1.x86_64
php-common-8.0.27-1.el9_1.x86_64
php-fpm-8.0.27-1.el9_1.x86_64
php-mbstring-8.0.27-1.el9_1.x86_64
php-mysqlnd-8.0.27-1.el9_1.x86_64
php-opcache-8.0.27-1.el9_1.x86_64
php-pdo-8.0.27-1.el9_1.x86_64
php-xml-8.0.27-1.el9_1.x86_64
Complete!
[user@pub-web ~]$
PHP インストール後、PHPのバージョンを確認します。ここでは、8.0.27バージョンのPHPがインストールされていることが確認できます。
[user@pub-web ~]$ sudo php -v
PHP 8.0.27 (cli) (built: Jan 3 2023 16:17:26) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.27, Copyright (c) Zend Technologies
with Zend OPcache v8.0.27, Copyright (c), by Zend Technologies
[user@pub-web ~]$
ここでは、Nginxで事前に容易されている下記のPHP設定ファイルを参照してPHP環境を構築することにします。
[user@pub-web ~]$ sudo cat /etc/nginx/default.d/php.conf
# pass the PHP scripts to FastCGI server
#
# See conf.d/php-fpm.conf for socket configuration
#
index index.php index.html index.htm;
location ~ \.(php|phar)(/.*)?$ {
fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php-fpm;
}
[user@pub-web ~]$
/conf.d/にある default.conf を編集します。
[user@pub-web ~]$ sudo vi /etc/nginx/conf.d/default.conf
location ディレクティブに /default.d/php.confを参照する設定を追加します。
location / {
root /var/www/nginx;
index index.html index.htm;
include /etc/nginx/default.d/php.conf; ←追加する
}
変更した設定を再起動せずに反映します。
[user@pub-web ~]$ sudo nginx -s reload
[user@pub-web ~]$
PHP-FPMの設定を編集します。
[user@pub-web ~]$ sudo vi /etc/php-fpm.d/www.conf
PHP-FPMの実行ユーザーとグループを nginx にします。
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
;user = apache
; RPM: Keep a group allowed to write in log dir.
;group = apache
user = nginx
group = nginx
PHP-FPMのサービスを再起動します。
[user@pub-web ~]$ sudo systemctl restart php-fpm
[user@pub-web ~]$
PHP-FPMのサービスが再起動後、起動していることを確認します。
[user@pub-web ~]$ sudo systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; preset:>
Active: active (running) since Mon 2023-08-14 00:14:50 EDT; 7s ago
Main PID: 15888 (php-fpm)
Status: "Ready to handle connections"
Tasks: 6 (limit: 11125)
Memory: 12.0M
CPU: 42ms
CGroup: /system.slice/php-fpm.service
├─15888 "php-fpm: master process (/etc/php-fpm.conf)"
├─15889 "php-fpm: pool www"
├─15890 "php-fpm: pool www"
├─15891 "php-fpm: pool www"
├─15892 "php-fpm: pool www"
└─15893 "php-fpm: pool www"
Aug 14 00:14:49 pub-web systemd[1]: Starting The PHP FastCGI Process Manager...
Aug 14 00:14:50 pub-web systemd[1]: Started The PHP FastCGI Process Manager.
[user@pub-web ~]$
PHP-FPM サービスの自動起動を有効にします。
[user@pub-web ~]$ sudo systemctl enable php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[user@pub-web ~]$
PHP-FPM サービスの自動起動が有効になっていることを確認します。
[user@pub-web ~]$ sudo systemctl is-enabled php-fpm
enabled
[user@pub-web ~]$
PHP環境が正常に動作していることを確認します。Webサーバーのドキュメントルートに動作確認用のPHPファイルを作成します。
[user@pub-web ~]$ sudo vi /var/www/nginx/phpinfo.php
ファイルに下記を記述し保存します。
<?php echo phpinfo(); ?>
以下にアクセスし、下記のようなPHP情報が表示されればPHP環境が正常に動作しています。
http://(Nginx WebサーバーのIPアドレス)/phpinfo.php
動作確認が終わったら、動作確認用で作成したPHPファイルは削除するようにしてください。残したままにするとphpinfo.php ファイルにアクセスしPHP環境情報が漏れてしまいます。
[user@pub-web ~]$ sudo rm -rf /var/www/nginx/phpinfo.php
[user@pub-web ~]$