KagoyaのVPSにNginx+Unicorn+Redmine環境をインストールしてみた

今日一日かかるとは思わなかった…。備忘録代わりです。
想定としては、http://ip/redmine/ でアクセスできるような感じで。

参考サイト

まずは、普通にApache+Passengerでインストールした。以下を参考にすればあっさり出来ると思います。ちょっと面倒くさいけど。
インストール | Redmine.JP
ここのCentOSでのインストールのなかでのサブディレクトリにインストールというのが今回の目的に該当します。


次に、Nginx環境のインストール。
nginx: download
Kagoyaの環境がCentOS 5.8なので、yumにレポジトリ追加して、インストールしました。

最後に、unicornをBundlerを使ってインストール。
というわけで、先にBundlerをインストールしておきましょう。

次は、設定ですが。面倒くさくなってきたので、直接設定ファイル書いてみる。

まずはredmine/config/unicorn.rb。

worker_processes 2

listen '/tmp/unicorn.sock'

stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])
stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])
 
preload_app true
 
before_fork do |server, worker|
    defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
 
    old_pid = "#{ server.config[:pid] }.oldbin"
    unless old_pid == server.pid
    begin
        Process.kill :QUIT, File.read(old_pid).to_i
        rescue Errno::ENOENT, Errno::ESRCH
        end
    end
end
 
after_fork do |server, worker|
    defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end

次に、/etc/nginx/nginx.conf

    upstream redmine {
        server unix:/tmp/unicorn.sock;
       }
    server {
        listen      80;
        server_name ex.vir.kagoya.net;
        root    /var/www/html;
        location /redmine {
            try_files $uri @unicorn;
        }
        location @unicorn {
            if (-f $request_filename) { break; }
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass http://redmine;
        }
    }

ここまで設定したら、unicornの起動

[root@localhost redmine]# unicorn_rails -c config/unicorn.rb -E production -D --path /redmine

最後の"--path /redmine"が無いために、5時間半ぐらい悩んでました。
とりあえず、解決したので、以後もがんばります。

追記:2012年7月19日
Gemfile.localを忘れていました

gem 'unicorn'