- 更新日: 2014年6月21日
- Rails
Nginx + UnicornでRailsアプリ(Redmine)を動作させる
Ruby on Rails の環境を構築し Redmine をインストール 〜 CentOS6 | EasyRamble で動作させた Redmine は、Apache + Passenger の環境だったのですが、Nginx の練習がてら Nginx + Unicorn の環境に変更してみました。
CentOS6にNginxをインストール〜バーチャルホスト設定 | EasyRamble
Redmine の gem に unicorn 追加
Gemfile に unicorn を追加して bundle install。
1 2 3 4 5 6 |
# cd /var/lib/redmine # vi Gemfile gem 'unicorn' # bundle install |
続いて、config/unicorn.rb を設定。
config/unicorn.rb
1 2 3 4 5 6 7 8 9 10 11 |
# vi config/unicorn.rb working_directory "/var/lib/redmine" pid "/var/lib/redmine/tmp/pids/unicorn.pid" stderr_path "/var/lib/redmine/log/unicorn.log" stdout_path "/var/lib/redmine/log/unicorn.log" listen "/tmp/unicorn.redmine.sock" worker_processes 2 timeout 30 |
unicorn 起動。
1 2 3 |
# bundle exec unicorn -E production -c config/unicorn.rb -D |
-E production のオプションを付けて unicorn を起動します。Redmine は git clone の後、production 環境でインストールしていましたので。ここ最初忘れてて、development モードで起動してちょっとはまりました。
unicorn を停止させる場合は、専用のコマンドはないので kill で直接プロセスを停止させる。
1 2 3 |
# kill -QUIT `cat tmp/pids/unicorn.pid` |
Nginx サーバーの設定
とりあえず動作確認のため、バーチャルホスト用じゃなくて普通の Nginx サーバー設定ファイルを作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# vi /etc/nginx/conf.d/redmine.conf upstream unicorn { server unix:/tmp/unicorn.redmine.sock fail_timeout=0; } server { listen 80; server_name redmine.centos; root /var/lib/redmine/public; try_files $uri @unicorn; location @unicorn { proxy_set_header Host $http_host; proxy_pass http://unicorn; } # エラーは500.htmlを表示させる error_page 500 502 503 504 /500.html; } |
Nginx 再起動。
1 2 3 |
# service nginx restart |
ブラウザから Redmine のサーバー名でアクセスして動作確認。以上の設定で普通に Redmine を Nginx + Unicorn の環境で動作させることができました。しかもかなり動作が速くなっている。
注意点としては、403 forbidden が出るときは、ディレクトリのパーミッション設定をチェックする。700などになっていたら755に変更。
1 2 3 |
# chmod 755 redmine |
- – 参考リンク –
- RubyonRailsをNginxとUnicornで動かす方法 | Workabroad.jp
- How to start rails server in production model using unicorn and config file? – Stack Overflow
- nginx 403 Forbidden Error hosting in User Home Directory
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!