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のテストファイルが表示されました。