2012年12月20日木曜日

nginx + unicornな環境でRailsアプリをサブディレクトリに配置する方法

nginxのalias

nginxの設定ではlocationディレクティブにaliasで指定してあげるのがコツ。


upstream app {
  server unix:/path/to/rails/app/sock;
}

location /app {
    alias /path/to/rails/app;
    access_log  /access_log/path;
    error_log   /error_log/path;
    try_files $uri $uri/index.html $uri.html @app;
  }


Rackのmap

config.ruに以下のように記述。アプリに合わせて要修正


# This file is used by Rack-based servers to start the application.

require ::File.expand_path('../config/environment',  __FILE__)

if ENV['RAILS_RELATIVE_URL_ROOT']
  # unicorn_rails --path PATHが指定されている時はこちら
  # cdcontrolなどのサブディレクトリに配置する時はpathオプションが必要です
  map ENV['RAILS_RELATIVE_URL_ROOT'] do
    run YourRailsApp::Application
  end
else
  # pathオプションをしていない時は
  # http://localhost:8080/ でアクセスできます
  run YourRailsApp::Application
end


unicorn_railsの--pathオプション

unicornを起動する時に、unicorn_rails --path /app とすると、/app以下がRailsアプリとなります。 asset_pathなども自動で置き換わります。


これでRedmineもGitLabも同じドメインが使えるねっ!

0 件のコメント: