iptablesの設定が完了したら、いよいよサーバの設定。今回はApacheではなく、巷でウワサのアイツ、「Nginx」をインストールしてみたいと思います。というか、Nginxの使い方を勉強するためにこのサーバを立てたと言っても過言ではない。
ウェブサーバの代名詞とも言える「Apache」。そのApacheよりも高速で安定してて省メモリと今、巷でウワサのアイツが「Nginx」です。「Nginx」と書いて「エンジンエックス」と読みます。う、うん。
ただ、Apacheと異なり、Nginxでは、ただインストールしただけではPHPを使用することが出来ません。PHPを使用したければ、FastCGIを導入してPHPを処理出来るようにする必要があります。
NginxでPHPを使用出来るようにするには、spanw-fcgiやphp-fpmというものを使うのが一般的なようです。今回は、設定がより簡単そうなphp-fpmを使うことにしました。PHP5.3.3からphp-fpmが標準で使えるようになったらしく、インストールして使い出すまでの手間がほとんどかかりません。
インストール
MySQLのインストール
まずはMySQLをインストールします。インストールの途中でrootのパスワードを求められるので考えておきましょう。
sudo apt-get update
sudo apt-get install mysql-server
Nginxのインストール
NginxのインストールにはUbuntu PPAを使用しました。PPAを使用するにはpython-software-propertiesが必要なので、最初にこれをインストールします。
sudo apt-get install python-software-properties
続いて、PPAでNginxをインストール。
sudo -s
nginx=stable
add-apt-repository ppa:nginx/$nginx
apt-get update
apt-get install nginx
Nginxのインストールはなんかめんどくさい(もしくは、apt-getでインストール出来るけどVer.がすげー古い)イメージがあったのですが、すげー簡単ですね。ここ最近、急速に環境が整ってきてる感じ?
インストール後、とりあえず起動してみます。PHPインストールしてからでもいいけど、もう待ちきれないだろ?
/etc/init.d/nginx start
起動したら、ブラウザでIPアドレスを叩いてみます。

Nginxへようこそ!
PHPのインストール
つづいてPHPのインストール。ubuntuでは、php-fpmをインストールするのにあーだこーだしなきゃいけない、みたいなのを見た覚えがあるのですが、ubuntu11.10では普通にapt-getでインストール出来ました。
sudo apt-get install php5 php5-fpm php-mbstring php-mysql php-mcrypt
インストールしたらphp-fpmを立ち上げておきます。
sudo /etc/init.d/php5-fpm start
ApacheではApacheの一部としてPHPが動作していたのですが、Nginxでは、Nginxとは別にPHPを立ち上げておいて、phpを処理するときはNginxからphp-fpmへ処理を渡す、という感じになっています。なので、ここではNginxとは別にphp5-fpmを立ち上げています。
php-fpmの設定は、/etc/php-fpm.d/www.conf にあります。いじるのは、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers あたりかと。この項目、どっかで見たような気が……と思ったら、Apacheのmaxclientあたりの設定でした。似ている。やってることが似たようなもんだからかな?
Nginxの設定
細かい設定は置いといて、ここではとりあえず、phpinfoを確認出来るようにします。だって、はやくNginxでPHPが動いてるのを見てみたいじゃない。
Nginxの設定ファイルは /etc/nginx/ の中にあります。
1ファイルにゴリゴリ設定を書き付けるCentOSのやり方(いや、複数ファイルに分ける事も出来ますけれども)に浸りきっている自分には最初意味が分からなかったのですが、Ubuntuでは、Nginx全体に関係する設定は nginx.conf に記述し、ウェブサイト(というかバーチャルホスト)毎の設定は sites-enabled の中に放り込まれたファイルを読み込む、と言う使い方をするようです。(そういえばUbuntuのApacheもこうだった気がする。)
しかも、sites-enabled の中にはシンボリックリンク(エイリアス)が入っています。では、そのファイルの本体はというと、sites-available の中にあります。
たとえば、example.com というサイトの設定を example というファイルに書いて sites-available の中に保存しておきます。この example の設定を有効にしたい場合は、example のシンボリックリンクを sites-enabled の中に作り、Nginxを再起動(というかreload)します。もし、あとでexampleの設定を無効にしたくなったら、sites-enabled の中入れた example のシンボリックリンクを削除して再起動するだけです。
ということもありますよ、ということで、今回は確認するだけなのでさらっと /etc/nginx/sites-available/default を編集しちゃいます。
server {
# 通信を待ち受けるポート番号
# コメントアウトされちゃってますが、
# デフォルトで80番ポートを見るようになっているようです。
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
# rootディレクトリを
# /usr/share/nginx/www から /var/www に変更
# 加えて、index に index.php を追加しておく
root /var/www;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
# サーバの名前。今回は localhost のまま。
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
# リクエストに該当するファイルが存在しない場合、
# index.htmlを参照しろ、という設定。
try_files $uri $uri/ /index.html;
}
# .php の拡張子が付いているファイルをFastCGIで処理する
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
rootディレクトリとして設定した /var/www/ (なければ作成します。てか、作っておかないとNginxをreloadするときに「ディレクトリねーんですけど」って言われます)の中に以下のように記述したファイル index.php を作成します。
<?php phpinfo() ?>
Nginxの設定を更新するため、reloadします。
/etc/init.d/nginx reload
ブラウザでアクセスしてみて、phpinfoが表示されればおk!
という感じ
Nginxをとりあえず動かしてみるのは思ったより簡単でした。ただ、Nginxだと.htaccessが使えないので、たとえば、Wordpressだとか、OpenPNEだとかのアプリケーションを使いたい場合にちょっと大変かも。
Wordpressを動かす場合に関しては、以下のリンクが参考になると思います。Nginxの設定についてもより詳しいことが分かると思います。
- Nginx – WordPress Codex 日本語版
- WordPress サイトに nginx を導入する : dogmap.jp
- WordPressを100倍速くする! MySQLの調整やnginx proxy cache | KRAY Inc
Nginxの設定ファイルに書いてあることを一つ一つ調べて「だいたいこうなんだろうなぁ」と言うことは分かってきたのですが、リファレンス的なものが欲しくなりますね。本屋で「Nginx入門」もちょっと見たのですが、価格を見て若干怯みました。でもこれはやっぱり買っておくべきか。
参考
- Install
- Ubuntu Weekly Recipe:第46回 PPAの活用|gihyo.jp … 技術評論社
- nginx+php5-fpmでPHP実行環境を構築 | Act as Professional – hiroki.jp by HIROCASTER
- PHP: 設定 – Manual
- nginx+PHP-FPMでどこまでチューニングできるか at 改訂版 新卒ネットワークエンジニア