Syntax Error.

[Sy] Amazon Linux (2017.09 release) でのPHP7(+php-fpm)とnginxの設定方法(インストール、設定、自動起動)

2017/10/03 (更新: 2017/10/11)

Amazon Linux(2017.09 release)PHP7nginx で使えるようにする手順です。インストールからnginxとphp-fpmの設定、自動起動まで説明します。 502エラーになってしまう方などは設定を照らし合わせてみてください。

1. PHP7をインストール

では環境を作っていきます。

Amazon Linux(2017.09 release)では、php7系が標準でyumでインストール可能です。(今回は7.0にします)

php本体と、php-fpmなどをまとめて入れます。

$ sudo yum install -y php70 php70-mbstring php70-mysqlnd php70-zip php70-fpm

2. nginxをインストール

これもシンプルにyumで入れます。

$ sudo yum install -y nginx

3. ドキュメントルート用のディレクトリとファイルを作成

今回は、/var/www/testというディレクトリを用意し、index.phpを作成してphpinfo()の結果を表示するということをやります。

次のコマンドを実行していきます。

$ sudo usermod -a -G nginx ec2-user       <- nginxグループにec2-userを追加
$ exit                                    <- 一度ログアウト

(ec2-userで再ログイン)
$ groups
ec2-user wheel nginx                      <- 所属グループにnginxが追加された

$ sudo chown -R ec2-user:nginx /var/www             <- /var/www配下の所有者を変更
$ sudo chmod 2775 /var/www                          <- /var/www配下にnginxグループの書き込み許可
$ find /var/www -type d -exec sudo chmod 2775 {} \; <- /var/www配下のすべてのディレクトリにnginxグループの書き込み許可
$ find /var/www -type f -exec sudo chmod 0664 {} \; <- /var/www配下のすべてのファイルにnginxグループの書き込み許可

$ mkdir /var/www/test      <- ドキュメントルート用のディレクトリを作成
$ vim /var/www/test/index.php   <- PHPファイル作成

index.phpには以下の内容を保存しておきます。

<?php phpinfo();

上の手順を行うと、/var/www/test/var/www/index.phpの権限は以下のようになっているはずです。

$ ls -al /var/www/test
total 12
drwxrwsr-x 2 ec2-user nginx 4096 Oct  2 23:20 .
drwxrwsr-x 9 ec2-user nginx 4096 Oct  2 23:15 ..
-rw-rw-r-- 1 ec2-user nginx   17 Oct  2 23:20 index.php

4. nginxの設定

仮に、http://test.utano.jpというURLで先程のindex.phpにアクセスできるように、バーチャルホストの設定ファイルを作成します。ファイル名は任意で構いません。

$ sudo vim /etc/nginx/conf.d/01_test.utano.jp.conf

01_test.utano.jp.confの内容はこのようにします。

server {
    listen       80;
    server_name  test.utano.jp;
    root /var/www/test;

    location / {
      index index.html index.php;
    }

    location ~ \.php$ {
      fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include        fastcgi_params;
    }
}

5. php-fpmの設定

php-fpmの設定ファイルは、以下の場所にあるので開いていくつか設定値を書き換えます。

$ sudo vim /etc/php-fpm-7.0.d/www.conf
listen = 127.0.0.1:9000
↓
listen = /var/run/php-fpm/php-fpm.sock

;listen.owner = nobody
;listen.group = nobody
↓
listen.owner = nginx  <- コメントアウトを解除してnginxに変更
listen.group = nginx  <- コメントアウトを解除してnginxに変更

6. 起動

$ sudo service nginx start
Starting nginx:                                            [  OK  ]

$ sudo service php-fpm start
Starting php-fpm-7.0:                                      [  OK  ]

ブラウザからhttp://test.utano.jpにアクセスすると、phpinfo()の実行結果が表示されるはずです。

PHP7とnginxでphpinfo()実行

※もし表示されない場合は、nginxのエラーログをチェックしてみてください。

$ sudo su
# less /var/log/nginx/error.log

7. 自動起動の設定

nginxの自動起動はこれでOKです。

$ sudo chkconfig nginx on

php-fpmは、一度chkconfigの管理対象に追加する必要があります。

$ sudo chkconfig --add php-fpm
$ sudo chkconfig php-fpm on

これで自動起動の設定まで完了です。