このドキュメントは、Nginx 1.4.x HTTPサーバ 向けに PHP を PHP-FPM とともにインストールし、設定する方法を示します。
このガイドは、あなたが Nginx をソースコードからビルドしたことを想定しています。
よって、すべてのバイナリと設定は
/usr/local/nginx
にあると想定しています。
仮にこれに当てはまらず、Nginx を他の手段で取得した場合は、
» Nginx Wiki を参照し、
このマニュアルをあなたのセットアップに読み替えてください。
このガイドは、Nginx サーバが PHP アプリケーションを実行できるように設定し、 それを port 80 で公開するための基本的な設定を示します。 あなたのセットアップを最適化したい場合、Nginx と PHP-FPM のドキュメント を調べることを推奨します。セットアップの最適化は、このガイドの範囲外です。
このドキュメント全体を通して、バージョン番号は ドキュメント全体が将来でも正しく保たれるようにするため、 'x' で置き換えられている点に注意してください。 'x' については、必要に応じて対応するバージョン番号に置き換えるようにしてください。
あなたのシステム向けに Nginx を取得し、インストールするために、 Nginx Wiki の » install を参照することを推奨します。
PHP のソースコードを取得し、展開します。
tar zxf php-x.x.x
PHP を configure し、ビルドします。 ここで PHP を様々なオプションを使ってカスタマイズできます。 たとえば、どの拡張機能を有効にするか、のようなものです。 利用できるオプションの一覧については、 ./configure --help を 参照してください。 私達の例では、PHP-FPM を MySQLi のサポートを有効にして シンプルに configure することにします。
cd ../php-x.x.x ./configure --enable-fpm --with-mysqli make sudo make install
設定ファイルを取得し、正しい場所に移動します。
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf cp sapi/fpm/php-fpm /usr/local/bin
ファイルが存在しなかったときは、Nginx が PHP-FPM バックエンドに、 リクエストを渡さないようにし、任意のスクリプトの挿入を防げるようにすることが重要です。
php.ini ファイルで、
cgi.fix_pathinfo
ディレクティブを 0
に設定することで、
この設定を行うことができます。
php.ini をエディタで読み込みます:
vim /usr/local/php/php.ini
cgi.fix_pathinfo=
の行を探し、以下のように修正します:
cgi.fix_pathinfo=0
サービスを開始する前に、php-fpm が www-data ユーザーと www-data グループで 必ず実行されるように、php-fpm.conf も修正しなければいけません:
vim /usr/local/etc/php-fpm.d/www.conf
以下の部分を探し、修正します:
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data
ここまで来れば、php-fpm サービスを開始できます:
/usr/local/bin/php-fpm
このガイドでは php-fpm をこれ以上設定しませんが、 php-fpm のさらなる設定に興味がある場合、ドキュメントを参照してください。
Nginx が PHP アプリケーションの実行をサポートするように設定しなければなりません。
vim /usr/local/nginx/conf/nginx.conf
Nginx が、.php ファイルをサービスすることを認識させるため、 デフォルトの location ブロックを修正します:
location / { root html; index index.php index.html index.htm; }
次のステップは、 .php ファイルへのリクエストが PHP-FPM バックエンドに渡されるようにすることです。 コメントアウトされているデフォルトの PHP location ブロックを 以下のように修正します:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
Nginx を再起動します。
sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx
テスト用のファイルを作成します。
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
http://localhost にアクセスすれば、 phpinfo() が表示されるはずです。
上のステップに従うことで、
FPM
SAPI
モジュールとして
PHP をサポートした Nginx Web サーバを実行できるでしょう。
もちろん、さらに沢山の設定オプションが Nginx と PHP では利用可能です。
さらに多くの情報を得るには、対応するソースツリーで、
./configure --help とタイプしてみてください。