Nginx - PHP との連携!
Updated:
Nginx で PHP を使用するには、PHP の FastCGI 実装が必要です。
今回は PHP の FastCGI 実装の1つである PHP5-FPM(PHP FastCGI Process Manager) を使用します。
0. 前提条件
- Linux Mint 14 Nadia (64bit) での作業を想定。
- Nginx 1.2.6 がソースビルドによりインストール済み。
- パッケージを利用してインストールした Nginx とはディレクトリ構成等が若干異なる。 (別途作成したヴァーチャルホストの設定ファイルを取り込む形式になっていたり・・・)
- PHP 5.4.6 がインストール済み。(古いバージョンだと作業が異なるかも知れない)
1. PHP5-FPM インストール
PHP5-FPM(PHP FastCGI Process Manager) が未インストールなら、Synaptic パッケージマネージャか apt 等でインストールしておく。
(環境によっては、他にも必要なパッケージがあるかも知れません。適宜対応してください)
apt-get
でインストールするなら、以下のようにする。
$ sudo apt-get install php5-fpm
2. PHP5-FPM インストール確認
インストールできているかをコマンドで確認するなら以下のようにする。
fpm-fcgi
が表示されることを確認する。
$ php5-fpm -v
PHP 5.4.6-1ubuntu1.1 (fpm-fcgi) (built: Nov 15 2012 01:27:09)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
3. PHP5-FPM 設定
設定ファイルは、/etc/php5/fpm/php-fpm.conf
と /etc/php5/conf.d/
ディレクトリ配下のファイルで行う。
しかし、今回は特に編集はせずデフォルトのままとした。
4. Nginx 設定
Nginx の設定を編集する。(当方の環境では /usr/local/nginx/conf/nginx.conf
)
server
ディレクティブ内に以下のような記述を追加する。
File: /usr/local/nginx/conf/nginx.conf
1
2
3
4
5
6
7
8
9
location ~ \.php$ {
#root html;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
既存のコメントアウトされている部分を解除・編集している。
編集したのは fastcgi_param
の部分。
5. サンプルページ作成
PHP 動作確認用のページを作成する。
取り急ぎ、サーバルート(当方の環境の場合は /var/www/html/
)に以下のような PHP 情報を表示するスクリプトを作成した。
File: /var/wwww/html/phpinfo.php
1
<?php phpinfo(); ?>
6. PHP5-FPM 起動
以下のようにして PHP5-FPM サービスを起動する。
$ sudo service php5-fpm start
7. Nginx 起動
Nginx が起動していなければ起動し、起動していればリロードする。
8. 動作確認
ブラウザで http://127.0.0.1/phpinfo.php
にアクセスしてみて、以下のようなページが表示されれば OK.
Server API
が FPM/FastCGI
となっていることを確認する。
また、少し下部の cgi-fcgi
部分で php-fpm
が active
になっていることにも確認する。
これで、Nginx で PHP ページが表示できるようになりました。
少し前に、ブログを PHP ベースの WordPress から Ruby 製静的 CMS の Octopress に変更しました。
しかし、当方のサーバ内では多少なりとも PHP を使っている部分もあるので、いずれ Apache から Nginx に完全に移行することを考えると、今回の作業は有用でありました。
以上。
Comments