CentOS 5.5にNginxをセットアップした記録。
EPELリポジトリにrpmパッケージもあるようだが、かなりバージョンが古かったので(0.6.39)ソースからインストールすることにした。現時点での最新版(stable)は0.8.53。
まず下準備。nginxユーザの追加とビルドに必要なパッケージのインストール。
sudo useradd -s /sbin/nologin -d /usr/local/nginx -M nginx
sudo yum install gcc openssl-devel pcre-devel zlib-devel
続いてソースをダウンロードしてコンパイルする。Nginxはコンパイル時にしか拡張モジュールの組み込みができないので、ビルドの過程はシェルスクリプトの形で残しておいた方が良い。コンパイルオプションについてはWikiを参照のこと。一番下のExample 5(RedHat向け)を参考に調整を行った。
#!/bin/sh
NGINX=nginx-0.8.53
# インストール先は /usr/local/nginx になる
cd $NGINX \
&& make clean \
&& ./configure \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
&& make
正常にビルドが完了したらインストール。足りないディレクトリも作っておく。
sudo make install
sudo mkdir /var/tmp/nginx/{proxy,client,fcgi}
この段階で正常に起動するかどうかを確認しておく。rootで ${prefix}/sbin/nginx を実行後、http://hostname/ にアクセスして、「Welcome to nginx!」と表示されたらOK。
sudo /usr/local/nginx/sbin/nginx
# 確認できたら終了しておく
sudo /usr/local/nginx/sbin/nginx -s quit
この後、設定ファイル(上のコンパイルオプションの場合は /etc/nginx/nginx.conf)を編集してサーバの設定を行うことになるが、そこは省略。
サービス起動ファイルを作る。CentOS(RedHat系Linux)ならひな形がWikiに用意されているので、必要な部分を書き換えた後 /etc/init.d/nginx に保存して、 chkconfig コマンドで設定する。
# 実行ファイルのパスなど変更しておく
vi /etc/init.d/nginx
chmod 755 /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on
# 今すぐ起動するなら
service nginx start
続いてログのローテーションの設定。/etc/logrotate.d/nginx を以下の内容で作成する。パスやパラメータは各自で調整のこと。
/var/log/nginx/*log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
/usr/local/nginx/sbin/nginx -s reopen
endscript
}
設定ファイルのチェックも行っておく。
sudo logrotate -d /etc/logrotate.conf
設定ファイルの内容について後で書くかも。