rails3.0.9・unicorn・nginxの組み合わせで、subディレクトリにアプリケーションをデプロイしようとすると、少しはまったのでメモを残しておきます。
■設定方法
http://ホスト名/foo 以下にアプリをデプロイしたい場合...
○unicorn
unicorn_railsを実行する際に--pathを渡します。
例)
$ unicorn_rails -c config/unicorn.rb -E production -D --path /foo
○nginx
passengerと同じくDocument Root直下に、subディレクトリ名でpublicへのシンボリックリンクをはればOKです。またlocation設定はsubディレクトリ毎に設定するのが良い感じでしょうね。
例)
$ ln -s /path/to/foo_root/public /var/apps/foo $ vim /etc/nginx/nginx.conf ... root /var/apps/; ... location /foo { 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://(foo用のunixドメインのソケット); }
○rails3.0.9
ActionController::Base.config.relative_url_root= が、deprecatedなのでどうしようかと思いますが検証した結果、下記で上手く行きました。
通常のroutingもassetもこれで上手くいきます(config.serve_static_assets = false なので、assetsはnginxが処理します)。
・unicon_rails --pathの設定は、ENV['RAILS_RELATIVE_URL_ROOT']となってrack側に渡される
・ENV['RAILS_RELATIVE_URL_ROOT']は、ActionController::Base.config.relative_url_rootに代入されている(?)
・よってconfig.ruで下記のようにrunを囲む
map ActionController::Base.config.relative_url_root || "/" do run FooApp::Application end参考:困った時のstackoverflow http://stackoverflow.com/questions/3181746/what-is-the-replacement-for-actioncontrollerbase-relative-url-root
0 件のコメント:
コメントを投稿