pirosikick's diary

君のハートにunshift

CentOS5.5へのNginxのインストール

CentOSApache入れようかと思ったけど、ちょっと気になってたnginxを入れることにしました。Passengerも対応しているみたいだし。

Nginxの特徴

ざっと調べた感じだと、こんな特徴があります。

  • 「えんじんえっくす」と発音。開発元はロシア
  • 軽量で高速
  • 設定がApacheほど複雑ではない
  • トラフィックが高いサイトでの採用事例が伸びており、最近shareを伸ばしつつある

CentOS5.5にインストール

こちらから安定版のソースを取得し、解凍。これを書いている時点での安定版は0.7.670.8.53。

$ cd /usr/local/src
$ sudo wget http://sysoev.ru/nginx/nginx-0.7.67.tar.gz
$ sudo tar zxvf nginx-0.7.67.tar.gz 

解凍してできたディレクトリに入り、./configureを実行。「./configure --help」で./configureオプションが表示されます。今回は何もなしでやります。

$ sudo ./configure

あれ、なんかエラーがでました。。

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

# てきとー和訳
HTTP rewriteモジュールはPCREライブラリが必須。「--without-http_rewrite_module」オプションを使って無効にするか、PCREライブラリを入れてください

PCREライブラリがいるらしいですね。。てかなんだそれ!「Perl Compatible Regular Expression」の略らしい。おそらくPerlの正規表現系のライブラリでしょう。
yumで入るようです。

$ sudo yum -y install pcre-devel

もう1度./configureしてみる。今度うまくいった!デフォルトの設定が表示されています。

$ sudo ./configure

...

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + md5: using system crypto library
  + sha1 library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"

makeします。

$ sudo make

…

objs/src/os/unix/ngx_process.o: In function `ngx_process_get_status':
ngx_process.c:(.text+0xe22): warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
ngx_process.c:(.text+0xe10): warning: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
make[1]: ディレクトリ `/usr/local/src/nginx-0.7.67' から出ます

なんかWarninng出た、、気にせずmake installします。

$ sudo make install
make -f objs/Makefile install
make[1]: ディレクトリ `/usr/local/src/nginx-0.7.67' に入ります
test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
test -d '/usr/local/nginx/sbin'                 || mkdir -p '/usr/local/nginx/sbin'
test ! -f '/usr/local/nginx/sbin/nginx'                 || mv '/usr/local/nginx/sbin/nginx'                     '/usr/local/nginx/sbin/nginx.old'
cp objs/nginx '/usr/local/nginx/sbin/nginx'
test -d '/usr/local/nginx/conf'                 || mkdir -p '/usr/local/nginx/conf'
cp conf/koi-win '/usr/local/nginx/conf'
cp conf/koi-utf '/usr/local/nginx/conf'
cp conf/win-utf '/usr/local/nginx/conf'
test -f '/usr/local/nginx/conf/mime.types'              || cp conf/mime.types '/usr/local/nginx/conf'
cp conf/mime.types '/usr/local/nginx/conf/mime.types.default'
test -f '/usr/local/nginx/conf/fastcgi_params'          || cp conf/fastcgi_params '/usr/local/nginx/conf'
cp conf/fastcgi_params          '/usr/local/nginx/conf/fastcgi_params.default'
test -f '/usr/local/nginx/conf/fastcgi.conf'            || cp conf/fastcgi.conf '/usr/local/nginx/conf'
cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default'
test -f '/usr/local/nginx/conf/nginx.conf'              || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf'
cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'
test -d '/usr/local/nginx/logs'                 || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/logs' ||              mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html'                 || cp -r html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' ||              mkdir -p '/usr/local/nginx/logs'
make[1]: ディレクトリ `/usr/local/src/nginx-0.7.67' から出ます

うーん、出力が短いけどエラー出てないから出来ているはずでしょう。

./configureにオプション無しだと

prefix /usr/local/nginx
設定ファイルのパス /usr/local/nginx/conf/nginx.conf
コマンド /usr/local/nginx/sbin/nginx
設定ディレクトリ /usr/local/nginx/conf
PIDファイル /usr/local/nginx/logs/nginx.pid
エラーログファイル /usr/local/nginx/logs/error.log
アクセスログファイル /usr/local/nginx/logs/access.log

デフォルトの設定はこんな感じらしいです。

設定

設定はこちらがかなり詳しいです。今日は端折ります。

起動

$ sudo /usr/local/nginx/sbin/nginx

ブラウザでアクセスすると、
f:id:pirosikick:20101019001438p:image
この画面が表示されます。OK!

停止

$ sudo kill `cat /usr/local/nginx/logs/nginx.pid`

停止しているか確認

$ ps aux | grep nginx
AnaiMB   22154  0.0  0.1  65372   820 pts/1    S+   00:16   0:00 grep nginx
$

プロセスが無いのでOK!

まとめ

インストールは楽でした。Apache比べたら断然楽だと思います。ドキュメントも結構あるし、Apacheに比べると設定ファイルの形式とかがシンプルでわかりやすく、Apacheのような高機能さを求めない場合はNginxで十分なんじゃないかなーと思いました。
セキュリティとかたぶんもっと細かく設定しなければいけないと思うので継続して調査です!とりあえずPassengerでも入れてみようかなー

Nginx HTTP Server

Nginx HTTP Server