AWSのEC2で行うAmazon Linux2(nginx・php-fpm)環境構築


Amazon Linux2の初期設定までの記事はこちらになります。それでは前回までに作成したAmazon Linux2でnginx・php-fpmの環境構築をしていきます。

バージョン情報

  • Mac OS 10.11.6(El Capitan)
  • Amazon Linux 2 AMI (HVM)
    • nginx version: nginx/1.12.2
    • PHP 7.2.8 (fpm-fcgi)

事前に用意しておく必要があるもの

  • 接続先EC2のパブリックDNS
  • 作業ユーザ(Amazon Linux2の場合デフォルトはec2-user)
  • EC2からダウンロードした秘密鍵(デフォルトは****.pem)

AWSのEC2にSSH接続

以下のコマンドを実行してAWSのEC2にSSH接続します。

$ ssh -i ~/.ssh/秘密鍵名.pem ユーザ名@パブリックDNS

nginxをインストール

以下のコマンドを実行してnginxをインストールします。

#amazon-linux-extrasでnginxのTopicを検索
$ amazon-linux-extras list
$ amazon-linux-extras info nginx1.12
nginx1.12 recommends nginx # yum install nginx

#インストール
$ sudo amazon-linux-extras install nginx1.12 -y
$ nginx -v
nginx version: nginx/1.12.2

#自動起動設定
$ sudo systemctl start nginx.service
$ sudo systemctl enable nginx.service
$ systemctl status nginx.service

#ブラウザ確認
$ パブリックDNS

php-fpmをインストール

以下のコマンドを実行してphp-fpmをインストールします。

#amazon-linux-extrasでphp-fpmのTopicを検索
$ amazon-linux-extras list
$ amazon-linux-extras info php7.2
php7.2 recommends php-cli # yum install php-cli
php7.2 recommends php-pdo # yum install php-pdo
php7.2 recommends php-fpm # yum install php-fpm
php7.2 recommends php-json # yum install php-json
php7.2 recommends php-mysqlnd # yum install php-mysqlnd

#インストール
$ sudo amazon-linux-extras install php7.2 -y
$ php-fpm -v
PHP 7.2.8 (fpm-fcgi) (built: Aug 14 2018 16:48:43)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

#自動起動設定
$ sudo systemctl start php-fpm.service
$ sudo systemctl enable php-fpm.service
$ systemctl status php-fpm.service

UNIXドメインソケット接続設定

nginxとphp-fpmのUNIXドメインソケット接続確認

以下のコマンドを実行して、nginxとphp-fpmでUNIXドメインソケット接続を使用しているか確認できます。

$ netstat -al --protocol=unix |egrep "Proto|fpm"
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 53736 /run/php-fpm/www.sock

www.confの編集

  • ファイルパス:/etc/php-fpm.d/www.conf

以下のコマンドを実行して、www.confファイル内の[ user ]と[ group ]を[ apache ]から[ nginx ]に変更します。

#php-fpmでのnginx実行ユーザー指定
- user = apache
+ user = nginx
- group = apache
+ group = nginx

#php-fpm再起動
$ sudo systemctl restart php-fpm.service

接続確認用phpファイル追加

以下のコマンドを実行して、ドキュメントルートでphpが実行できるか確認します。

#スーパーユーザーに切替
$ sudo su

#接続確認用phpファイル追加
$ echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/phpinfo.php

#ブラウザ確認
$ パブリックDNS/phpinfo.php

その他設定

以下のファイルを必要に応じて設定変更してください。

  • ファイルパス:/etc/nginx/nginx.conf
  • ファイルパス:/etc/nginx/default.d/php.conf
  • ファイルパス:/etc/nginx/conf.d/php-fpm.conf
関連