php-fpmとは、phpとnginxを仲介するアプリケーションサーバー
デフォルトのドキュメントルートを
/home/user1/public_htmlのようなディレクトリに設定しておく
vi /home/user1/public_html/info.php
info.phpというファイルを新規作成する
info.phpの中を上記のように設定
ブラウザで
http://ipアドレス/info.php
へアクセスする
nginxでfastcgi_passなどの設定がされていないとphpinfo()の情報は表示されず、
info.phpというファイルがダウンロードされてしまう
nginxでfastcgi_passの設定をすると
ブラウザで.phpファイルを開いたときにダウンロードは発生しなくなる
しかし、php-fpm側の設定が不十分だと
File not found.
と表示される
vi /etc/php-fpm.d/www.conf
/etc/php-fpm.dというディレクトリの
www.confというファイルにphp-fpmの設定が書かれている
デフォルトでは、php-fpmの実行ユーザーはapache:apacheとなっている
これをnginx:nginx(nginxの実行ユーザー)に変更する
cd /etc/php-fpm.d sed -i -e "s/user = apache/user = nginx/" www.conf sed -i -e "s/group = apache/group = nginx/" www.conf sed -i -e "s/;listen.owner = nobody/listen.owner = nginx/" www.conf sed -i -e "s/;listen.group = nobody/listen.group = nginx/" www.conf
user = apache group = apache ;listen.owner = nobody ;listen.group = nobody
user = nginx group = nginx listen.owner = nginx listen.group = nginx
listen.owner = nginx
listen.group = nginxのように設定すると、
php-fpm.sockの所有者がnginx:nginxになる
listen.ownerとlisten.groupをコメントアウトすると、
php-fpm.sockの所有者がroot:rootになる
php-fpm.sockについて、詳細は後述
php-fpmを
127.0.0.1:9000ではなく、
/var/run/php-fpm/php-fpm.sockで動くように設定する方法
KUSANAGIの設定では
php-fpm.sockを使わずに
127.0.0.1:9000を使用していた
php-fpm.sockを使ったほうが処理が速くなるのかと思っていたけど関係ないのかもしれない
WordPressがよくフリーズしてMySQLがダウンしていた頃
php-fpm.sockのchild processが大量に起動してメモリーを食いつくしスワップが大量に発生していた
メモリー2GBの低スペック環境ではphp-fpm.sockはむしろ害悪かも?
cd /etc/php-fpm.d sed -i -e "s@listen = 127.0.0.1:9000@listen = /var/run/php-fpm/php-fpm.sock@" www.conf
/etc/php-fpm.dディレクトリにある
www.confというファイルで
listen = 127.0.0.1:9000の部分を
listen = /var/run/php-fpm/php-fpm.sockに書き換える
vi /etc/nginx/conf.d/default.conf
default.confを開く
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
}
fastcgi_pass 127.0.0.1:9000;の部分をコメントアウト
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;を有効にする
systemctl restart php-fpm systemctl restart nginx
/etc/php-fpm.d/www.confというファイルで
listen = /var/run/php-fpm/php-fpm.sockを設定することで、
/var/run/php-fpmディレクトリに
php-fpm.sockというファイルが作成される
php-fpm.sockは、php-fpmのサービスが起動中のみ存在するファイル
ブラウザで
http://ipアドレス/info.php
へアクセスする
PHPのバージョンや
$_SERVER['DOCUMENT_ROOT']の値など、
PHPに関する各種パラメーターが画面に表示される
これが無事に表示されれば、
PHP・PHP-FPM・NGINXの設定に成功している
info.phpを外部に公開することはセキュリティ的に好ましくない
動作確認が取れたら、php.infoは削除する