NginxはApacheに比べて、とてつもなくはやい。同スペックのサーバを利用するのであればNginxが圧倒的なパフォーマンスを発揮するケースがほとんどだろう。
そして、Apacheできることのほとんどは、Nginxでもできる。
年末年始を利用して、PHPで稼働しているサービスをすべてNginxへ移行できたので、その備忘録を書く。
今回はUbuntu 10.04(lucid)でnginxをhttpサーバとして、PHPを実行できる環境を構築するまで。
nginxをインストール
Ubuntu 10.04(lucid) LTSで最初からインストールできるNignxのバージョンはとても古い。よって、本家のパッケージを利用してインストールをする。
GPG署名
Nginxの電子署名を設定する。
wget http://nginx.org/packages/keys/nginx_signing.key
cat nginx_signing.key | sudo apt-key add -
/etc/apt/sources.list
パッケージの参照先を追加する。
deb http://nginx.org/packages/ubuntu/ lucid nginx
deb-src http://nginx.org/packages/ubuntu/ lucid nginx
インストール
実際にNginxをインストールする。比較的最新版がインストールされるはず。
$ sudo apt-get update
$ sudo apt-get install nginx
PHP-FPM (FastCGI Process Manager)をインストール
FastCGIって、Lighttpdが話題になったとき以来だったので、あんまり覚えていなかったのだけど、FastCGI Process Managerということで、PHP 5.3.3からPHP本体に同梱されているようなのですね。
Debianだとphp5-fpmというパッケージ名で最初からあるっぽいのだけど、Ubuntu 10.04(lucid)ではありません。
Nginx同様に外部のパッケージをインストールすることにします。
/etc/apt/sources.list
パッケージの参照先を追加する。
deb http://ppa.launchpad.net/nginx/php5/ubuntu lucid main
deb-src http://ppa.launchpad.net/nginx/php5/ubuntu lucid main
インストール
実際にphp5-fpmをインストールする。
$ sudo apt-get update
$ sudo apt-get install php5-fpm
Nginxの設定
Nginxにバーチャルホストを追加するには/etc/nginx/sites-available/以下に設定ファイルを作成して、/etc/nginx/sites-enabled/からシンボリックリンクで参照させて、Nginxに設定を読ませる感じになる。
ファイルを作成する
/etc/nginx/sites-available/example にこんな感じでファイルを設定する。example.hiroki.jpというURLのバーチャルホストだと仮定する。
server {
listen 80;
server_name example.hiroki.jp;
root /var/www/html;
index index.php index.html index.htm;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
location ~* \.php$ {
try_files $uri /index.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;
}
}
シンボリックリンクの作成
シンボリックリンクを /etc/nginx/sites-enabled/ 側からはる。
$ cd /etc/nginx/sites-enabled/
$ ln -s /etc/nginx/sites-available/example example
設定ファイルのチェック
設定ファイルの記述に誤りが無いかをチェックします。間違いを指摘された場合、修正しましょう。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
こんな表示になれば、設定ファイルに問題はありません。
Nginxに設定ファイルの反映
設定ファイルに問題が無ければ、Nginxに反映します。
$ sudo /etc/init.d/nginx reload
nginx+php-fpm
この設定ファイルだと、 /var/www/html 以下に拡張子がphpのファイルをおけば動作するはずです。
次回はWordPressを動かすための設定を書き留める予定です。