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

Amazon Linux2の初期設定までの記事は<a href="https://ninolog.com/set-amazonlinux2-aws-ec2/">こちら</a>になります。それでは<a href="https://ninolog.com/set-amazonlinux2-aws-ec2/">前回</a>までに作成したAmazon Linux2でnginx・php-fpmの環境構築をしていきます。

### バージョン情報
- [Mac OS](https://ninolog.com/about-my-mac/) 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
```
![set-amazonlinux2-nginx-phpfpm-aws-ec2_02.png](https://qiita-image-store.s3.amazonaws.com/0/203758/93f046c1-e8ac-2c41-2808-606b6fa54a4d.png)


### 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
```
![set-amazonlinux2-nginx-phpfpm-aws-ec2_01.png](https://qiita-image-store.s3.amazonaws.com/0/203758/fe9ee9c3-295f-1868-c677-6f85bb177e4c.png)


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

- ファイルパス：/etc/nginx/nginx.conf
- ファイルパス：/etc/nginx/default.d/php.conf
- ファイルパス：/etc/nginx/conf.d/php-fpm.conf

##### 関連
- [AWSのEC2で行うAmazon Linux2の初期設定 – Ninolog](https://ninolog.com/set-amazonlinux2-aws-ec2/)
- [AWSのEC2で行うAmazon Linux2（MySQL5\.7）環境構築 – Ninolog](https://ninolog.com/install-amazonlinux2-mysql-aws-ec2/)