AC-5

某SEの雑記帳

NginxでPHPを動かす(Amazon Linux)

      2019/04/25

NginxではPHPを動かす事ができません。
色々な方法がありますが、一番スタンダードなPHP-FPMを利用してPHPを利用できるようにします。

PHP-FPMのインストール

[ec2-user@172-11-1-11 ~]$ sudo yum install php71 php71-fpm php71-mysqlnd -y←phpをインストールします
[ec2-user@172-11-1-11 ~]$ sudo php -v←phpバージョン確認
PHP 7.1.27 (cli) (built: Mar  8 2019 18:22:16) ( NTS )←PHP7.1がインストールされました

PHP-FPMの起動設定

[ec2-user@172-11-1-11 ~]$ sudo service php-fpm start←phpを起動します
[ec2-user@172-11-1-11 ~]$ sudo chkconfig php-fpm on←自動起動設定

www.confの変更

[ec2-user@172-11-1-11 ~]$ cd /etc/php-fpm-7.1.d←ディレクトリ移動
[ec2-user@172-11-1-11 php-fpm-7.1]$ sudo cp www.conf www.conf_default←バックアップ作成
[ec2-user@172-11-1-11 php-fpm-7.1]$ sudo vi www.conf←設定ファイル編集
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx←nginxに変更
; RPM: Keep a group allowed to write in log dir.
group = nginx←nginxに変更
:wq

nginx.confの変更

[ec2-user@172-11-1-11 ~]$ cd /etc/nginx/←ディレクトリ移動
[ec2-user@172-11-1-11 nginx]$ sudo cp nginx.conf nginx.conf_default←バックアップ作成
[ec2-user@172-11-1-11 nginx]$ sudo vi nginx.conf←設定ファイル編集
index   index.html index.htm index.php;←index.phpを追加
location / {
        try_files $uri $uri/ /index.php$is_args$args;←追加
}
location ~ \.php$ {←以下コメントアウトを外す
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;←修正
    include        fastcgi_params;
}

Nginxとphp-fpmの再起動

Nginxとphp-fpmを再起動します。

[ec2-user@172-11-1-11 ~]$ sudo service nginx restart←Nginx再起動
[ec2-user@172-11-1-11 ~]$ sudo service php-fpm restart←php-fpm再起動

UNIXドメインソケット設定

UNIXドメインソケットを使うように変更します。
TCPソケットに比べて、その方が速いです。

[ec2-user@172-11-1-11 ~]$ sudo vi /etc/php-fpm-7.1.d/www.conf←www.confの編集
listen = /var/run/php-fpm/www.sock←listenの内容を変更します。
[ec2-user@172-11-1-11 ~]$ sudo vi /etc/nginx/nginx.conf←nginx.confの編集
fastcgi_pass  unix:/var/run/php-fpm/www.sock;←fastcgi_passを変更します。
[ec2-user@172-11-1-11 ~]$ sudo service nginx restart←nginxを再起動します
[ec2-user@172-11-1-11 ~]$ sudo service php-fpm restart←php-fpmを再起動します
[ec2-user@172-11-1-11 ~]$ netstat -al --protocol=unix |egrep "Proto|fpm"←php-fpmのUNIXドメインソケットの動作確認
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     553270 /var/run/php-fpm/www.sock

テストファイルの作成と確認

ドキュメントルートにテストファイルを作成します。

[ec2-user@172-11-1-11 ~]$ sudo su←スーパーユーザーに切り替えます
[ec2-user@172-11-1-11 ~]# echo '<!--?php phpinfo();' > /usr/share/nginx/html/phpinfo.php←テストファイル作成

ブラウザからアクセスします。
http://IPアドレス/phpinfo.php

PHPのテストファイルが表示されました。

 - AWS, Linux, PHP