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.

NGINX_PHP

Server APIFPM/FastCGI となっていることを確認する。
また、少し下部の cgi-fcgi 部分で php-fpmactive になっていることにも確認する。


これで、Nginx で PHP ページが表示できるようになりました。

少し前に、ブログを PHP ベースの WordPress から Ruby 製静的 CMS の Octopress に変更しました。
しかし、当方のサーバ内では多少なりとも PHP を使っている部分もあるので、いずれ Apache から Nginx に完全に移行することを考えると、今回の作業は有用でありました。

以上。





 

Sponsored Link

 

Comments