apache じゃなくて php-fpm だよ。実際に検証してみた。nginx と php-fpm との通信はTCPよりUNIXドメインソケットの方が早いとのことなので、早い方で行う。
その時の構築メモを残す。正常に動作するまでに発生したエラーの対処も記す予定だったけど別エントリにまとめる。
構築手順概要
環境
以下の環境を想定(いずれもリポジトリを追加してyumでインストール)
- CentOS 7.2( SELinux無効/firewalld無効 )
- php 7.2.0RC1
- nginx 1.12.1
目次
以下の流れで構築
- PHP
・リポジトリ追加
・インストール
・設定 - Nginx
・リポジトリ追加
・インストール
・設定 - 動作確認
構築手順詳細
PHP
PHP のバージョンを7にするために、epel と remi のリポジトリを追加します。
1 2 3 4 5 |
# rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm # yum update epel-release # rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # yum update remi-release |
続いて、追加したリポジトリを指定して、yum でインストールしていきます。
1 2 3 |
# yum --enablerepo=remi-php72,epel install php-fpm php-gd php-gmp php-mbstring php-pecl-mcrypt php-opcache php-pdo php-pear-MDB2-Driver-mysqli php-pecl-memcached php-pecl-msgpack php-xml # php -v PHP 7.2.0RC1 (cli) (built: Aug 30 2017 12:04:28) ( NTS ) |
PHP の設定は、ここではタイムゾーンのみ明示します。
1 2 |
# vi /etc/php.ini date.timezone = "Asia/Tokyo" |
php-fpm の設定を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# vi /etc/php-fpm.d/www.conf ; ユーザをnginxに変更 ;user = apache ;group = apache user = nginx group = nginx ; nginxとphp-fpm が UNIX ドメインソケットで通信するように指定 ;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock ; lister.owner の変更 ※これを変更しないと502エラーとなる ;listen.owner = nobody ;listen.group = nobody ;listen.mode = 0660 listen.owner = nginx listen.group = nginx listen.mode = 0660 |
php-fpm の起動と自動起動設定を行います。
1 2 |
# systemctl start php-fpm # systemctl enable php-fpm |
PHP関連は以上です。続いて nginx の設定に進みます。
Nginx
標準リポジトリからはインストールできないため、リポジトリを追加します。
1 2 3 4 |
# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm # yum --enablerepo=nginx install nginx # nginx -v nginx version: nginx/1.12.1 |
続いて、設定ファイルを編集します。以下(上)はデフォルトの状態です。それを以下(下)に変更します。
1 2 3 4 5 6 7 |
#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; #} |
1 2 3 4 5 6 7 |
location ~ \.php$ { root /var/www/html; # ドキュメントルート変更 fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; # UNIXドメインソケットを指定 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; # .phpファイルの保存先(今回はドキュメントルート配下のファイルを読ませる) include fastcgi_params; } |
nginx の起動と自動起動設定を行います。
1 2 |
# systemctl start nginx # systemctl enable nginx |
動作確認
テストページを作成します。
1 2 3 4 5 |
# cat << EOF > /var/www/html/index.php <?php phpinfo(); ?> EOF |
Webブラウザでアクセスします。
1 |
http://HOSTNAME/index.php |
以下の様に php 情報が表示されれば正常に動作している。
おまけ
うまく動かない場合の確認箇所と修正方法を以下のエントリにまとめています。
以上です。
↓↓↓ 持っていると便利な一冊。