CentOS 7の初期設定まで記事はこちらになります。
それでは前回までに作成したCentOS 7でnginx・php-fpmの環境構築をしていきます。
Contents
開発環境
- Mac OS X(El Capitan) 10.11.6
- CentOS 7 (x86_64) – with Updates HVM
- nginx version: nginx/1.13.8
- PHP 7.2.1 (cli)
- php-fpm-7.2.1-1.el7.remi.x86_64
事前に用意しておく必要があるもの
- 接続先EC2のパブリックDNS
- 作業ユーザ(CentOS 7の場合デフォルトはcentos)
- EC2からダウンロードした秘密鍵(デフォルトは****.pem)
参考
- CentOS7 に nginx導入 – Qiita
- CentOS7 に PHP7 をインストールする方法 │ Web備忘録
- EC2にnginx+php(php-fpm socket)環境を最速で構築 – Qiita
- CentOS7(x86_64)+nginx+PHP7+php-fpm+MySQL5.7環境構築手順 – Qiita
AWSのEC2にSSH接続
SSH接続
以下のコマンドを実行してAWSのEC2にSSH接続します。
1 |
$ ssh -i ~/.ssh/秘密鍵名.pem ユーザ名@パブリックDNS |
ログイン完了
以下が表示がされたらログイン完了です。
1 |
[centos@ip-パブリックDNS ~]$ |
nginxをインストール
リポジトリ追加
以下のコマンドを実行して設定を追記したnginx.repoのファイルを作成します。
1 2 3 4 5 6 7 8 |
# nginxリポジトリ追加 $ sudo vi /etc/yum.repos.d/nginx.repo + [nginx] + name=nginx repo + baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ + gpgcheck=0 + enabled=1 |
nginxをインストール
以下のコマンドを実行してnginxをインストールします。
1 2 3 4 5 |
# nginxをインストール $ sudo yum install nginx -y # インストール確認 $ nginx -v |
nginxの起動設定
以下のコマンドを実行してnginxを起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 起動 $ sudo systemctl start nginx # 自動起動設定確認 $ systemctl list-unit-files --type=service | grep nginx # 自動起動有効化設定 $ sudo systemctl enable nginx # ステータス確認 $ sudo systemctl status nginx # ブラウザ確認 $ パブリックDNS |
php-fpmをインストール
リポジトリ追加
以下のコマンドを実行して設定を追記したEPELとRemiのリポジトリを追加します。
1 2 3 4 5 |
# EPELリポジトリ追加 $ sudo yum install epel-release -y # Remiリポジトリ追加 $ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
php-fpmをインストール
以下のコマンドを実行してリポジトリを有効化しphp-fpmをインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# phpをインストール $ sudo yum install --enablerepo=remi,remi-php72 php php-fpm -y # インストール確認 $ php -v # パッケージバージョン確認 $ rpm -qa | grep php php-common-7.2.1-1.el7.remi.x86_64 php-cli-7.2.1-1.el7.remi.x86_64 php-7.2.1-1.el7.remi.x86_64 php-json-7.2.1-1.el7.remi.x86_64 php-fpm-7.2.1-1.el7.remi.x86_64 |
php-fpmの起動設定
以下のコマンドを実行してphp-fpmを起動します。
1 2 3 4 5 6 7 8 9 10 11 |
# 起動 $ sudo systemctl start php-fpm # 自動起動有効化設定 $ sudo systemctl enable php-fpm # 起動 $ sudo systemctl start php-fpm # ステータス確認 $ sudo systemctl status php-fpm |
php-fpmとnginxの接続設定
www.confの編集
ファイルパス:/etc/php-fpm.d/www.conf
以下のコマンドを実行して、www.confファイル内の【user】と【group】を【apache】から【nginx】に変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# www.confファイルがあるディレクトリへ移動 $ cd /etc/php-fpm.d/ # オリジナルファイルのバックアップを作成 $ sudo cp www.conf www.conf.org # www.confの編集 $ sudo vi www.conf # php-fpmでのnginx実行ユーザー指定 - user = apache + user = nginx - group = apache + group = nginx |
default.confの編集
ファイルパス:/etc/nginx/conf.d/default.conf
以下のコマンドを実行して、default.confファイル内の【server】ブロック内を変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# default.confファイルがあるディレクトリへ移動 $ cd /etc/nginx/conf.d/ # オリジナルファイルのバックアップを作成 $ sudo cp default.conf default.conf.org # default.confの編集 $ sudo vi default.conf # ドキュメントルート・インデックスファイル指定 #access_log /var/log/nginx/host.access.log main; + root /usr/share/nginx/html; + index index.html index.htm index.php; # try_filesディレクティブ設定 - location / { - root /usr/share/nginx/html; - index index.html index.htm; - } + location / { + try_files $uri $uri/ /index.php$is_args$args; + } # nginxでのphpスクリプト実行設定 - #location ~ \.php$ { - # root html; - # fastcgi_pass 127.0.0.1:9000; - # fastcgi_index index.php; - # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; - # include fastcgi_params; - #} + location ~ \.php$ { + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } |
php-fpmとnginxの接続確認
ドキュメントルートにphpinfo.phpのテストファイルを追加
以下のコマンドを実行して、ドキュメントルートでphpが実行できるか確認します。
1 2 3 4 5 |
# スーパーユーザーに切り替え $ sudo su # テスト用phpファイルの作成 $ echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/phpinfo.php |
nginxとphp-fpmの再起動
以下のコマンドを実行して、nginxとphp-fpmを再起動し設定を反映させます。
1 2 3 4 5 6 7 8 |
# nginxの再起動 $ sudo systemctl restart nginx # php-fpmの再起動 $ sudo systemctl restart php-fpm # ブラウザ確認 パブリックDNS/phpinfo.php |
UNIXドメインソケット設定
php-fpmのUNIXドメインソケット動作確認
以下のコマンドを実行して、php-fpmでUNIXドメインソケットを使用しているか確認できます。
1 2 3 4 |
# php-fpmのUNIXドメインソケット動作確認 $ netstat -al --protocol=unix |egrep "Proto|fpm" Proto RefCnt Flags Type State I-Node Path |
www.confの編集
ファイルパス:/etc/php-fpm.d/www.conf
以下のコマンドを実行して、www.confファイル内の【listen】と【listen.owner】と【listen.group】を変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# www.confの編集 $ sudo vi /etc/php-fpm.d/www.conf # listenの内容を変更 - listen = 127.0.0.1:9000 - ;listen.owner = nobody - ;listen.group = nobody + listen = /var/run/php-fpm/php-fpm.sock + listen.owner = nginx + listen.group = nginx |
default.confの編集
ファイルパス:/etc/nginx/conf.d/default.conf
以下のコマンドを実行して、default.confファイル内の【fastcgi_pass】を変更します。
1 2 3 4 5 6 |
# default.confの編集 $ sudo vi /etc/nginx/conf.d/default.conf # fastcgi_passの変更 - fastcgi_pass 127.0.0.1:9000; + fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; |
nginxとphp-fpmの再起動
以下のコマンドを実行して、nginxとphpfpmを再起動し設定を反映させます。
1 2 3 4 5 6 7 8 9 10 11 |
# nginxの再起動 $ sudo systemctl restart nginx # php-fpmの再起動 $ sudo systemctl restart php-fpm # php-fpmのUNIXドメインソケット動作確認 $ netstat -al --protocol=unix |egrep "Proto|fpm" Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 33580 /var/run/php-fpm/phpfpm.sock |