[PHP+NGINX+PHP-FPM] centos 7.2にPHP7.1開発環境を構築する方法

# 手順

## PHPのインストール

### 最新のyumリポジトリダウンロード
```bash
$ sudo yum -y update
$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
```

### PHP7.1のインストール
インストール

```bash
# PHPのextensionは各自で必要なものを確認してください。
# 特に mod_php71w, php71w-fpm, php71w-cli は最低でもインストールする必要があります。
# Extensionの一覧は yum search php71w と検索すれば見れます。
$ sudo yum -y install mod_php71w php71w-fpm php71w-common php71w-cli php71w-opcache php71w-pdo
```
PHP7.1がインストールされたか確認

```bash
# 以下が出力されていれば成功です
$ php -v
PHP 7.1.0 (cli) (built: Dec  3 2016 11:17:43) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
```

### nginxのインストール
インストール

```bash
$ sudo yum -y install nginx
```

nginxがインストールされたか確認

```bash
# 以下が出力されていれば成功です
$ nginx -v
nginx version: nginx/1.10.2
```

### php-fpmの設定
www.confの設定変更

```bash
sudo vim /etc/php-fpm.d/www.conf

# 以下に変更
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx # ;のコメントアウトを外す！
listen.group = nginx # ;のコメントアウトを外す！
```

php-fpmの起動&自動起動設定

```bash
# php-fpm 起動
$ sudo systemctl start php-fpm

# php-fpm 自動起動
$ sudo systemctl enable php-fpm

# 起動されている＆自動起動が有効になっているか確認
$ sudo systemctl status php-fpm

# 以下のように　/usr/lib/systemd/system/php-fpm.service; enabled;　になっていれば自動起動が有効になっている
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
# 以下のようにステータスがactiveになっていればphp-fpmが起動されている
Active: active (running)
```

### nginxバーチャルホスト設定
sites-availableにconfファイル作成

```bash
$ sudo mkdir /etc/nginx/sites-available
$ sudo vim /etc/nginx/sites-available/dev.mysite.com.conf
```

以下のように設定（自分も完璧には理解していないので、とりあえずメモ）

```nginx
server {
    listen 80;
    server_name dev.mysite.com; # ドメイン
    root /var/www/dev.mysite.com; # ドキュメントルート（あとで作成）

    location / {
        # ファイル取得のルール設定
        try_files $uri $uri/ index.php$is_args$args =404;
    }

    # php-fpmの設定
    location ~ ^/index\.php(/|$) {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }
}
```

sites-enabledにconfファイルのシンボリックリンクを貼る

```bash
$ sudo mkdir /etc/nginx/sites-enabled
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/dev.mysite.com.conf
```

nginx.confにsites-enabledにあるconfigファイルを読み込ませる設定、indexディレクティブの設定をする

```bash
$ sudo vim /etc/nginx/nginx.conf
```

```nginx
index index.htm index.html index.php; # これを追加

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/sites-enabled/*.conf; # これを追加
include /etc/nginx/conf.d/*.conf;
```

nginxのシンタックスチェック

```bash
$ sudo nginx -t
# 以下が出力されていれば大丈夫
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

nginxの起動&自動起動設定

```bash
# nginx 起動
$ sudo systemctl start nginx

# nginx 自動起動
$ sudo systemctl enable nginx

# 起動されている＆自動起動が有効になっているか確認
$ sudo systemctl status nginx

# 以下のように　/usr/lib/systemd/system/nginx.service; enabled;　になっていれば自動起動が有効になっている
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
# 以下のようにステータスがactiveになっていればnginxが起動されている
Active: active (running)
```

### ドキュメントルート作成
ドキュメントルートになるディレクトリ作成

```bash
$ sudo mkdir -p /var/www/dev.mysite.com
$ sudo chown -R $USER:$USER /var/www/dev.mysite.com
```

php動作確認用phpファイル作成

```bash
$ sudo vim /var/www/dev.mysite.com/index.php
```

```php
<?php
phpinfo();
```

nginxの再起動（自分の場合は再起動の必要がありました。。。理由はわかりませんw）

```bash
$ sudo systemctl restart nginx
$ sudo systemctl restart php-fpm
```

今回はvagrantで環境構築したので、自分のPCのhosts書き換え

```
sudo vim /etc/hosts

# 以下を追加
[IPアドレス] dev.mysite.com
```

ブラウザで表示確認
dev.mysite.comにアクセスしてみて表示確認する