メモ > サーバ > 構築: Webサーバ設定 > nginx+PHP7
nginx+PHP7
CentOSにてnginxでPHPを動かす
http://qiita.com/utano320/items/36b6eac2bbd5bb5657f6
EC2にnginx+php(php-fpm socket)環境を最速で構築
http://qiita.com/koni/items/05158e33b4c8aac07b59
nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する
http://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc
HHVM を導入して、PHP実行環境を高速化する | しょぼんブログ
https://syobon.jp/2017/01/30/hhvm-install/
さくらVPS(CentOS7)で、Nginx+PHP7.1+MariaDBのWordPressを構築(HTTPS対応) - Qiita
https://qiita.com/ktkiyoshi/items/bf920b4df02d98b570e3
■FPMについて
FPM(FastCGI Process Manager)は、PHPのFastCGI実装のひとつ。
nginxがphp-fpmと通信してPHPを実行する。
まず、PHPの実行方式には以下がある。
・モジュール方式 … PHPはWebサーバの実行権限で動作する。
レンタルサーバなどの環境であっても、ユーザごとに実行権限制御ができない。
Apacheで利用可能。
・CGI方式 … PHPはWebサーバとは完全に個別の権限で動作する。
他ユーザに干渉する危険が無い。
ApacheとNginxで利用可能。
速度を優先するならモジュール方式だが、セキュリティを考慮するならCGIの方が好ましい。
ただしCGI方式は各リクエストごとに新しいプロセスを起動/終了するので動作が遅い。
この対策として、FastCGIというものが使われるようになった。
FastCGIは、プロセス初回実行時に該当プロセスを一定時間サーバー内に保持することで、次回以降の実行時に「プロセスの起動/終了」を省略する。
これによりプロセスの起動/終了に伴うCPUへの負荷を軽減することで、速度面で優れるとされるモジュール版PHPと同等の処理能力を持たせている。
php-fpmは、FastCGIプロトコルを介してWebサーバー(通常はNginxやApacheなど)と通信し、
PHPの処理を行うアプリケーションサーバー的な役割を果たすもの。
大量のアクセスがある想定で、かつセキュリティ的な配慮が求められる場合に利用するのが良い。
Re: WebサーバーアーキテクチャとPHP実行方式の理解から始めるphp-fpmとはなにか?
https://zenn.dev/bs_kansai/articles/3706c12408160c
FastCGIについて | レンタルサーバーならエックスサーバー
https://www.xserver.ne.jp/manual/man_server_php_fastcgi.php
■古いPHPを削除する場合の例
# yum remove php-*
# yum remove php56* … 必要に応じて。
# yum remove php70w* … 必要に応じて。
# rm -rf /etc/php-fpm.d/ … 必要に応じて。
■CentOS7にPHP7をインストールする場合
# yum -y install epel-release … EPELのリポジトリを追加。
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm … Remiのリポジトリを追加。
# yum -y install --enablerepo=remi-php70 php php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-xml
… RemiのリポジトリからPHP7をインストール。
# chkconfig php-fpm on
# php -v … PHP7のインストールを確認。
■AmazonLinux2にPHP7をインストールする場合
# amazon-linux-extras install php7.3 -y … ExtrasリポジトリからPHP7を追加。
# yum -y install php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-xml
# php -v … PHP7のインストールを確認。
■CentOS6やAmazonLinuxにPHP7をインストールする場合
# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm … PHP7のリポジトリを追加。
# yum -y install --enablerepo=webtatic-testing php70w php70w-devel php70w-fpm php70w-mysql php70w-mbstring php70w-pdo php70w-xml
# chkconfig php-fpm on
# php -v … PHP7のインストールを確認。
PHP7.1をインストールする場合、「yum -y install」の内容を以下のようにする。(「php70」を「php71w」に変更。)
# yum -y install --enablerepo=webtatic-testing php71w php71w-devel php71w-fpm php71w-mysql php71w-mbstring php71w-pdo php71w-xml
■セッションの設定
そのままだとセッションが使えないので調整する。
# chgrp nginx /var/lib/php/session … セッション置き場のグループが「apache」になっているので、「nginx」に変更。
■php-fpmの設定
# vi /etc/php-fpm.d/www.conf … php-fpmの設定ファイルを編集。
これでnginxでPHPを使うことができる。
必要に応じて php-mbstring や gd もインストールし、/etc/php.ini も設定する。
/etc/php.ini を編集した場合、以下で php-fpm を再起動する。
;user = apache
user = nginx
;group = apache
group = nginx
# vi /etc/nginx/nginx.conf … nginxの設定ファイルを編集。
#index index.html index.htm;
index index.php index.html index.htm; … インデックスページに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 /var/www/html$fastcgi_script_name; … 公開ディレクトリのパスを設定。
include fastcgi_params;
}
# service php-fpm start … php-fpmを起動。
# chkconfig php-fpm on … php-fpmの自動起動を設定。
# service nginx configtest … 設定ファイルの構文をチェック。
# service nginx restart … nginxを再起動。
# service php-fpm restart
nginxの設定方法は Docker.txt も参照。