このセクションでは、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 ~]$