ネットワーク > Webサーバー > nginx
Nginxは、最近人気のWebサーバソフトです。Apacheの代わりに使われだしています。
nginx(「エンジンエックス」と発音) は、軽量高性能なWebサーバ/リバースプロキシであり、同時に電子メール(IMAP/POP3)プロキシである。BSD系ライセンスでリリースされている。Unix系、Linux、BSD系、Mac OS X、Solaris、Microsoft Windows(Cygwinを使用)で動作する。
#html{{
table border="0" cellpadding="5"><tr><td valign="top">
a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048702270/sagasite-22/" target="_blank"><img src="" border="0"></a>
/td>
td valign="top">
a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048702270/sagasite-22/" target="_blank">ハイパフォーマンスHTTPサーバ Nginx入門</a>
br>
Clement Nedelcu<br>
アスキー・メディアワークス<br>
2011-04-21<br>
3150円/td></tr></table>
}}
Nginxを、CentOSに、ソースコードからコンパイルして、手動でインストールする手順のまとめ
(参考)
CentOSにNginxをインストールする | HAPPY*TRAP
http://www.happytrap.jp/blogs/2012/02/23/8243/
Nginx最新安定版(stable)を公式サイトからダウンロードします。
(例) Stable version nginx-1.2.6
$ cd /tmp
$ wget http://nginx.org/download/nginx-1.2.6.tar.gz(wgetコマンドがインストールされていない場合は、「sudo yum install wget」)
$ tar zxf nginx-1.2.6.tar.gz
$ cd nginx-1.2.6
$ sudo useradd -s/sbin/nologin -d/usr/local/nginx -M nginx
$ sudo yum install gcc $ sudo yum install pcre pcre-devel $ sudo yum install zlib zlib-devel $ sudo yum install openssl openssl-devel
$ ./configure --prefix=/usr/local/nginx-1.2.6 --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module
$ make $ sudo make install
ln -s /usr/local/nginx-1.2.6 /usr/local/nginx
Nginxをソースからインストールした場合は、起動スクリプトが作成されないので自作します。
# vi /etc/init.d/nginx
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # cf. http://www.happytrap.jp/blogs/2012/02/23/8243/ # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse # proxy and IMAP/POP3 proxy server # processname: nginx # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" lockfile=/usr/local/nginx/logs/nginx.lock start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
$ sudo chmod +x /etc/init.d/nginx
$ sudo chkconfig --add nginx $ sudo chkconfig nginx onこれで、serviceコマンドでも起動・終了・再起動が実行できるようになります。
$ sudo chkconfig --list nginxこれで、
$ sudo service nginx configtest
$ sudo service nginx start
$ sudo service nginx stop
$ sudo service nginx restart
(参考)nginx の バーチャルホスト設定 - hogeskyの日記
http://d.hatena.ne.jp/hogesky/20120416/1334588838
バーチャルホスト設定ファイルの置き場を作る
バーチャルホストの設定は、nginx のインストールディレクトリにある nginx.conf に記述する。
このファイルに各ドメインの設定をそのままベタ書きしてもいいのだけど、そうすると管理が煩わしくなるので、ドメインごとに設定ファイルを作り、nginx.conf から読み込ませるようにする。
まず、nginxのインストールディレクトリにドメイン毎の設定ファイルを収めるディレクトリを作る。sudo mkdir /usr/local/nginx/sites-available sudo mkdir /usr/local/nginx/sites-enabledApache2 風の構成。
sites-available にドメイン毎の設定ファイルを置き、sites-enabled からシンボリックリンクを張り、nginx.conf からは sites-enabled を読み込ませるようにする。
こういうふうにしておくメリットは、いくつかある。
・バーチャルホストの使用/不使用を簡単に切り替えられる。
・あるドメインの利用を一時的に止めるときは、単にシンボリックリンクを削除するだけで済むし、再開するときはリンクを作り直すだけでいい。
・あるドメインが別のサーバに引越す際に、設定ファイルをそのまま持ち越せる。
・ドメイン毎に設定ファイルが分かれているため、編集失敗の影響が他に及びにくい。
ディレクトリを作ったら、nginx.conf の httpセクションに次の1行を加える。include /usr/local/nginx/sites-enabled/*;記述場所は、33行目の「#gzip on;」の後あたりが分かりやすい。(serverセクションの中に入れてはいけない。)
なるほど~!(・∀・)
バーチャルホストの数が少なくて、手動で管理するなら、この手法で十分でしょう。
(=もっと多くなったら、RDBを使って管理した方が良い?)
上記の方法をちょっと手直しするなら、自分の環境だと、「/usr/local/nginx」自体がシンボリックリンクになっているので、バーチャルホストの設定ファイル置き場は、「home」ディレクトリーに「nginx」というユーザーのディレクトリーを作り、そこの置くとかが良いかな?
# cd /home # mkdir nginx # chown nginx:nginx nginx # chmod 0700 nginx
# ls -la drwx------ 2 nginx nginx 4096 Jul 14 15:06 nginx
# mkdir /home/nginx/conf/sites-available # mkdir /home/nginx/conf/sites-enabled
# vi /usr/local/nginx/conf/nginx.conf include /home/nginx/conf/sites-enabled/*;
というかんじでOK。
(Linuxコマンドの復習)
$ cp file1 file2
$ ln -s リンク元 リンク先
$ su ← サーバー管理者になる $ cd /home/nginx/conf/site-available $ cp vhost_template.conf vhost_subdomain.conf ← テンプレートをコピーする $ chown nginx:nginx vhost_subdomain.conf ← 属性を変更する $ vi vhost_subdomain.conf ← 設定ファイルの中身を編集する
ln -s リンク元 リンク先
$ ln -s /home/nginx/conf/site-available/vhost_subdomain.conf /home/nginx/conf/site-enabled/vhost_subdomain.conf
$ service nginx configtest ← 設定ファイルの文法チェック(念のため。エラー出たら中身を確認) $ service nginx restart ← 再起動