[server] apache + passengerを捨ててnginx + thinにしてみた
nginx と thinの組み合わせが速いらしいので変更してみることにした。
現在運用しているのは
webdavについては別途書くとしてとりあえずrailsアプリとSinatraアプリをthinに。リバースプロキシをnginxにしてみる。
ちなみに環境はCentOS 4.6
以下作業ログ
nginxのインストール
$ sudo su - # cd /usr/local/src # wget http://nginx.org/download/nginx-0.7.65.tar.gz # yum install pcre-devel zlib-devel openssl-devel # tar -zxvf nginx-0.7.65.tar.gz # cd nginx-0.7.65 // configure の参考 http://wiki.nginx.org/NginxInstallOptions // 上記のExample2に--with-sha1あたりを足してconfigureしてみる # ./configure \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --http-log-path=/var/log/nginx/access.log \ --with-http_dav_module \ --http-client-body-temp-path=/var/lib/nginx/body \ --with-http_ssl_module \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --with-http_stub_status_module \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --with-debug \ --with-http_flv_module \ --with-sha1-asm \ --with-sha1=/usr/include # make # make install
とりあえずポート8080番で動かしてみる
# vi /etc/nginx/nginx.conf server { listen 8080; # 8080番にする server_name localhost; #access_log logs/host.access.log main; # /usr/local/nginx/sbin/nginx -t the configuration file /etc/nginx/nginx.conf syntax is ok configuration file /etc/nginx/nginx.conf test is successful // OKが出たので起動 # /usr/local/nginx/sbin/nginx # lsof -i :8080 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME nginx 6886 root 6u IPv4 580333295 TCP *:webcache (LISTEN) nginx 6887 nobody 6u IPv4 580333295 TCP *:webcache (LISTEN)
thinのインストール
# gem install thin
redmineをthin(でしかもunix socket)で動かす
# mkdir -p /tmp/thin # chmod 777 /tmp/thin # su - redmine $ cd /var/www/redmine $ thin start -e production -s -4 --socket /tmp/think/redmine.sock $ ls /tmp/thin/ redmine.0.sock redmine.1.sock redmine.2.sock redmine.3.sock
unix socketなthinにnginxからアクセスできるようにする
# vi /etc/nginx/nginx.conf // httpセクションの一番最後に下記のincludeを入れる include /etc/nginx/sites-enable/*; } # mkdir /etc/nginx/sites-{available,enable} // このあたりのディレクトリ構成はDebianのapacheをパクっている # vi /etc/nginx/sites/available/redmine server{ listen 8080; server_name redmine.ya-lab.org; location / { proxy_pass http://redmine; } } upstream redmine{ server unix:/tmp/thin/redmine.0.sock; server unix:/tmp/thin/redmine.1.sock; server unix:/tmp/thin/redmine.2.sock; server unix:/tmp/thin/redmine.3.sock; } # cd /etc/nginx/sites-enable/ # ln -s ../sites-available/redmine 001-redmine # /usr/local/nginx/sbin/nginx -t the configuration file /etc/nginx/nginx.conf syntax is ok configuration file /etc/nginx/nginx.conf test is successful # /usr/local/nginx/sbin/nginx -s reload
この状態でredmine.ya-lab.org:8080にブラウザからアクセスしてみると見事redmineの画面が表示された。
しかもわりと速いように感じる。
引き続きsinatraアプリケーション
$ cd /path/to/sinatra_app $ mkdir -p log tmp/pids public $ thin -s 4 -R config.ru --socket /tmp/thin/sinatra.sock start $ sudo su - # vi /etc/nginx/sites-available/sinatra server{ listen 8080; server_name sinatra.ya-lab.org; location / { proxy_pass http://sinatra; } } upstream sinatra{ server unix:/tmp/thin/sinatra.0.sock; server unix:/tmp/thin/sinatra.1.sock; server unix:/tmp/thin/sinatra.2.sock; server unix:/tmp/thin/sinatra.3.sock; } # cd /etc/nginx/sites-enable # ln -s ../sites-available/sinatra 002-sinatra # /usr/local/nginx/sbin/nginx -t the configuration file /etc/nginx/nginx.conf syntax is ok configuration file /etc/nginx/nginx.conf test is successful # /usr/local/nginx/sbin/nginx -s reload