AWS EC2インスタンスにインストールしたNginx環境下にプログラミング言語「PHP」をインストールして環境を整えます。
目次
ここで使用する環境について。
PHPについては自宅サーバ作業第6回目を参照ください。
RemiリポジトリよりPHP7.3のパッケージをインストールしてきます。ただし、RemiリポジトリをインストールするためのEPELリポジトリの用意が必要になってきますので、事前にEPELリポジトリをインストールします。
EPELリポジトリのインストールは次のコマンドを入力します。
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
EPELリポジトリの用意ができましたので、次はRemiリポジトリをインストールします。
$ sudo dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
インストールすると利用可能なリポジトリリストに「remi-php73.repo」という名前が表示されるようになります。
$ ls /etc/yum.repos.d/ : : remi-php73.repo :
以下のパッケージをインストールしていきますが、ここではPHPをCGIとして動作させるため「php-fpm」と呼ばれるパッケージをインストールする点に注意が必要です。
以下のコマンドを入力するとphp73-phpパッケージをインストールする過程で、上記項目パッケージも同時にインストールできるようです。インストールされなかった場合には、パッケージ名を指定してインストールしてあげましょう。
$ sudo dnf install --enablerepo=remi-php73 php73-php
また、パッケージがインストールできたか確認する場合は、
$ sudo dnf list installed | grep php73
などとして、希望のパッケージがインストールできたか確認できます。
インストールしたPHPのバージョンを調べる際は以下のコマンドを入力します。
$ php73 -v
「PHP 7.3.9 (CLI) (built: Aug 27 2019 22:52:39) ( NTS )」などといったメッセージが返ってきたら無事インストール成功です。
Apache環境下で動作していたPHPはApacheの拡張機能という扱いで動作していたため、ApacheとPHPをインストールしたらすぐに(?)PHPを実行できましたが、Nginx環境下でPHPを実行する場合、CGIとして単体で起動させることになります。
そのため、PHP-FPM(FastCGI Process Manager)サービス関連ファイルの設定を行い、Nginxとの紐付けを行います。以下はそれら関連ファイルの設定についてです。
$ sudo vi /etc/opt/remi/php73/php-fpm.d/www.conf # 55行目あたりnginxを追加 listen.acl_users = apache,nginx
Nginx設定ファイル(/etc/nginx/nginx.conf)を開き以下のinclude文で指定されたディレクトリ内にPHPファイルをプログラムとして実行するための紐付け用の設定ファイルを作成します。
※PHPのインストール環境によってはすでに作成されている場合もあります。
$ sudo vi /etc/nginx/nginx.conf # 36行目あたり include /etc/nginx/conf.d/*.conf; # 45行目あたり include /etc/nginx/default.d/*.conf;
$ sudo vi /etc/nginx/conf.d/php-fpm.conf # PHP-FPM FastCGI server # network or unix domain socket configuration upstream php-fpm { # www.confの40行目あたりlisten項目を指定 server unix:/var/opt/remi/php73/run/php-fpm/www.sock; }
$ sudo vi /etc/nginx/default.d/php.conf # pass the PHP scripts to FastCGI server # # See conf.d/php-fpm.conf for socket configuration:q # 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; }
FastCGIパラメーター例は以下を参照ください。
以下のコマンドを入力してPHP-FPMサービスを起動します。
$ sudo systemctl start php73-php-fpm
加えて、Nginx設定ファイルを編集したのでNginxを再起動します。
$ sudo systemctl restart nginx
php情報を出力するファイルを作成してPHPの動作確認をします。
$ sudo vi /usr/share/nginx/html/phpinfo.php <?php echo phpinfo(); ?>
以下のような画面が表示されたら動作確認完了です。
設定ファイルを探すときは次のコマンドを適宜活用すると良さそうです。以下はPHP7.3のPHP.ini設定ファイルの場所を出力するコマンドです。
$ php73 -i | grep php.ini
Remi経由で別バージョンのPHP7.3をインストールしたためか、設定ファイルの設置場所が変わっています。例えば、php.ini設定ファイルがetcディレクトリ直下に無いなど。
コマンドを利用すればわざわざ設定ファイルを探す手間が省けてラクですね。