現在、次のような構成で同じドメイン下に複数のパスでRedmineを運用しています。
mongrelの起動コマンド:
cd .../redmine-SiteA
mongrel_rails start -e production -a 127.0.0.1 -p 3001 --prefix /
redmine/SiteA
cd .../redmine-SiteB
mongrel_rails start -e production -a 127.0.0.1 -p 3002 --prefix /
redmine/SiteB
Apacheの設定:
<VirtualHost *:80>
...
<Location /redmine/SiteA>
ProxyPass
http://localhost:3001/redmine/SiteA/
</Location>
<Location /redmine/SiteB>
ProxyPass
http://localhost:3002/redmine/SiteB/
</Location>
</VirtualHost>
この設定で、
http://HOST/redmine/SiteA/
http://HOST/redmine/SiteB/
でそれぞれのRedmineにアクセスできるようになっています。
なのですが、問題がいくつかあります。
**メールのURLにパス部分(/redmine/SiteA/)が反映されない。
これは、管理>設定>ホスト名を
HOST/redmine/SiteA
にすることで解決しました。
何だか騙しているようですが…。
**返ってくるCookieを見ると、Path が / となっている。
セッション用の _session_id と自動ログイン用の autologin
この2つのcookieのPathがどちらも / となっています。
このため、例えば
http://HOST/redmine/SiteA/
でRedmineを使っていて、同じブラウザで途中で
http://HOST/redmine/SiteB/
に切り換えて使うと一旦ログイン画面に戻されてしまいます。
とりあえずの対処方法として、現在は次のように修正を加え
autologinだけはPathをセットするようにしています。
サイトを切り替えすると一旦セッションが無効になり、autologinで復活するという感じです。
Index: app/models/setting.rb
===================================================================
--- app/models/setting.rb (revision 5)
+++ app/models/setting.rb (working copy)
@@ -91,0 +92,4 @@
+
+ def self.site_path
+ "/#{host_name.split("/", 2)[1]}"
+ end
Index: app/controllers/account_controller.rb
===================================================================
--- app/controllers/account_controller.rb (revision 5)
+++ app/controllers/account_controller.rb (working copy)
@@ -52 +52 @@
- cookies[:autologin] = { :value => token.value, :expires =>
1.year.from_now }
+ cookies[:autologin] = { :value => token.value, :expires =>
1.year.from_now, :path => Setting.site_path }
できれば根本的に、同じドメイン下に複数のパスで
スムースに運用できるようであればよいのですが、
これに関して何か良いアイデアはありませんでしょうか?