2016年7月30日土曜日

Nginx + Redmine

■前提
nginx, Redmine(ruby, bundler, unicorn含む)はインストール済みとする

■nginxの設定
/etc/nginx/sites-available のサーバー設定に以下を追加

upstream unicorn {
    server unix:[redmineインストールパス]/tmp/unicorn.sock fail_timeout=0;
}

server {} の中に locationを追加

location /redmine {
    alias [redmineインストールパス]/public;
    try_files $uri/index.html $uri.html $uri @unicorn;
}

location @unicorn {
    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_redirect off;
    proxy_pass http://unicorn;
}

■Redmineの設定
sub-uri /redmine で動作するように若干変更

[redmineインストールパス]/config/routes.rb の以下の部分を変更

(変更前)
Rails.application.routes.draw do
  root :to => 'welcome#index', :as => 'home'
  ・
 ・
 ・
end

(変更後)
Redmine::Utils::relative_url_root="/redmine"

Rails.application.routes.draw do
scope Redmine::Utils::relative_url_root  do
  root :to => 'welcome#index', :as => 'home'
  ・
 ・
 ・
end
end

■Redmineの起動
cd [redmineインストールパス]
bundle exec unicorn -c config/unicorn.rb -E production -D

これでunicorn経由でRedmineがデーモン状態で立ち上がる

■nginx再起動
service nginx restart