2010年10月20日水曜日

Webサーバソフトウェアnginxの導入まで


軽量で高速と言われているnginxを試してみました。


OSはCent64bitです。


試してみようと思った経緯


Webサーバを構築しようと思った時、殆どの方はApacheを無意識のうちに選んでいると思います。


Apacheは稼働実績も多く、情報も豊富にあるので最良の選択だと思います。


そこで、ひねくれ者の僕はApacheって本当に最良の選択なの?っという疑問が生まれました。



Webサーバソフトウェアの種類


では、現在Webサーバソフトウェアの選択肢として何があるのか?


僕がWebサーバソフトウェアとして見つけることができたのは以下の3つです。



  1. Apache

  2. nginx

  3. perlbal


今回はnginxを試してみました。




インストール


不要なソフトウェアやモジュールがインストールされるのを防ぐために、基本的に全てソースからインストールを行います。


ソースからのインストールは、ソフトウェア管理やアンインストールが不便ですので、これらを管理できるpacoなどの利用をお勧めします。


http://d.hatena.ne.jp/koujirou6218/20100927#1285740277



nginx公式サイトから安定版をダウンロードしてきます。


現在はnginx-0.8.53



解凍後、特にオプションなしで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.



どうやら、PCRE libraryがないようです。


ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/:title=PCRE最新版]をダウンロードします。


現在はpcre-8.10.tar.gz


ダウンロード後解凍してください。


今度は、先ほど解凍したPCREを指定してconfigureします。



./configure --with-pcre=/home/user/work/pcre-8.10



エラーがないので、そのままmake、make installしてください。


/usr/local/nginx/conf/nginx.confを編集します。


設定内容はApacheとよく似ているのでApacheの設定を行った事がある人は簡単にできると思います。


編集に関しては以下のWikiを参考しました。


http://viz.is-a-geek.com/~viz/cw/index.php?nginx




pid logs/nginx.pid; #コメントアウトを外す





location / {


root /usr/local/nginx/html; #DocumentRootに該当する部分


index index.html index.htm; #Indexesに該当する部分


}



とりあえず、上記の設定を行えば動きます。


起動方法は/sbin内のnginxを実行します。


自動起動に関しては先ほど紹介したURL内に自動起動スクリプトがあるので、そちらを配置する必要があります。


起動テスト



./nginx -t


the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok


configuration file /usr/local/nginx/conf/nginx.conf test is successful



エラーがなければOKです。


起動



./nginx



ブラウザからアクセスするとWelcome to nginx!が表示されればOKです。


ヘッダーもnginxになっています。



200 OK


Date: Thu, 07 Oct 2010 20:52:01 GMT


Content-Length: 151


Last-Modified: Thu, 07 Oct 2010 18:09:44 GMT


Server: nginx/0.8.53


Content-Type: text/html


Accept-Ranges: bytes





ログファイル


デフォルトの設定であれば/usr/local/nginx/logsに出力されています。


access.log



192.168.0.1 - - [08/Oct/2010:04:21:05 +0900] "GET / HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"


192.168.0.1 - - [08/Oct/2010:04:21:06 +0900] "GET /favicon.ico HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"


192.168.0.1 - - [08/Oct/2010:05:07:49 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"


192.168.0.1 - - [08/Oct/2010:05:07:50 +0900] "GET /favicon.ico HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"


192.168.0.1 - - [08/Oct/2010:05:52:01 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"




error.log



2010/10/08 04:21:06 [error] 5760#0: *1 open() "/usr/local/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.0.128"


2010/10/08 05:07:50 [error] 5760#0: *2 open() "/usr/local/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.0.128"



アクセスログをカスタムするのはできるのか不明です。




今後すること


Apacheとのパフォーマンス比較


PHP導入


カスタムログの方法


perlbalとnginxとApacheの比較


0 件のコメント:

コメントを投稿