nginx install on ubuntu 9.10
他にやること沢山あるのに、思い立ったが吉日ということで、apacheからnginx乗り換えました。
理由はただ一つ。軽いから。
ということで、早速インストールの話なんですが、ubuntuで提供されている nginxはpassengerのmodule loadに対応していないので、ソースからインストールすることに。
今回は安定版の最新の0.7.65を使うことにしました。
注意:今回は面倒なのですべてrootで作業してます。
まずはソースからインストールに必要なものをインストール
# apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev
次に公式からソースをダウンロードして展開。
# cd /tmp
# wget http://sysoev.ru/nginx/nginx-0.7.65.tar.gz
# tar -zxf nginx-0.7.65.tar.gz
その後、既にインストールしてあるpassengerのインストーラスクリプトを使ってインストール
# /var/lib/gems/1.9.1/bin/passenger-install-nginx-module
ただ標準のままだとsslがonに出来無いのでカスタムインストールを選択(2を選択)
その後の画面で、展開済みのソースのディレクトリを指定されるので、/tmp/nginx-0.7.65と入力。
次にインストール先のprefixを聞いてくるが、今回はデフォルトのままとした。
その次はオプションの指定で、ここでsslモジュール追加のオプション --with-httpsslmodule を入力する。
これで良いか?って聞いてくるので、そのままEnter
後は、コンパイルが始まって終わるまで待機してれば、nginxのインストールは終わります。
次にWordpressなどで使っているPHPを動かすように設定するために、php-cgiとspawn-fcgiをインストール。
# apt-get install php5-cgi spawn-fcgi
spawn-fcgiを使ってphp-cgiを起動するために、スクリプトを用意
# vi /etc/init/php-fastcgi.conf
# /etc/init/php-fastcgi.conf
# php-fastcgi - starts php-cgi as an external FASTCGI process
start on runlevel [2345]
stop on runlevel [!2345]
exec /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/php-fastcgi.pid
respawn
# initctl start php-fastcgi
これで後はnginxのconfの設定。
最終的に以下のようにしました。
user www-data www-data;
worker_processes 3;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
passenger_root /var/lib/gems/1.9.1/gems/passenger-2.2.11;
passenger_ruby /usr/bin/ruby1.9.1;
include mime.types;
include fastcgi.conf;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 15;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /opt/nginx/conf/sites/*.conf;
}
サイト毎の設定は /opt/nginx/conf/site/にファイルを作って読み込み。
passengerを使ったサイトの例
server {
listen 80;
server_name domain_name;
root /var/www/vhosts/domain_name/public;
access_log logs/domain_name.access.log main;
passenger_enabled on;
}
phpを使ったサイトの例
server {
listen 80;
server_name domain_name;
root /var/www/vhosts/domain_name/htdocs;
access_log logs/domain_name.access.log main;
location / {
index index.php;
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
location ~ /\.ht {
deny all;
}
}
次に、今まで使っていたapache2の自動起動を停止
# update-rc.d -f apache2 remove
nginxの設定ファイルは借りているVPSにサンプルがここにあったので、そのまま使わせてもらった。
# mv init-deb.sh /etc/init.d/nginx
# chmod +x /etc/init.d/nginx
# update-rc.d -f nginx defaults
これでインストール終了。
長かった(;´Д`)
nginxについてはetagを標準装備していないとか、access_logの設定とかこの辺が気になるのだけど、まずはこれで落ち着かせて、少しずつ様子を見る予定。