2011-10-25 47 views
4

我正在apache下的單個服務器上設置一對redmine實例。用apache/passenger設置多個redmine實例

第一工作得很好,我有一個虛擬主機設置爲它具有以下的虛擬主機配置:

<VirtualHost *:80>                       
    ServerName tickets.domain.com                  
    DocumentRoot /var/www/redmine                   
    RailsEnv production                      
    RailsBaseURI/                       
    PassengerResolveSymlinksInDocumentRoot on                
</VirtualHost> 

我需要建立一個子目錄關閉主默認站點的第二個:

Alias /ops/ "/var/www/ops/"                   
<Directory "/var/www/ops/">                   
    RailsEnv ops                      
    RailsBaseURI /ops                     
    PassengerResolveSymlinksInDocumentRoot on               
</Directory> 

所以server/ops是第二個實例的url。

我遇到的麻煩是,當我重新啓動apache時,首先你打的任何一個url似乎都是「勝利」的,並且打破了該站點的其他實例。如果我點擊了/ ops url,那麼它會加載得很好,但會去買票。將導致我獲得權限拒絕錯誤,因爲所有的url都有/ ops(對於JS和其他文件)

如果我重新啓動apache並點擊票據。站點首先,它加載得很好,但後來我從Redmine的/ ops url上收到404錯誤。

這是在Ubuntu上使用redmine PPA,並且/ var/www/ops和/ var/www/redmine是與自己定義的環境(生產和操作)共享的redmine源代碼的符號鏈接。

任何提示我如何能夠讓這兩個人並肩成功?

感謝

回答

1

這是我的Apache配置託管多個管理平臺實例(使用domain.tld/DEV1,使用domain.tld/DEV2,...)。

您還必須在每個redmine安裝程序的config/initializers/session_store.rb中更改:key和:session_path。

<IfModule mod_ssl.c> 
     <VirtualHost _default_:443> 
      Servername domain.tld 
      ServerAdmin [email protected] 
      DefaultInitEnv RAILS_ENV production 
      DefaultInitEnv GEM_PATH /var/lib/gems/1.8 
      DocumentRoot /var/www/default-ssl 
      <Directory /var/www/default-ssl> 
      AuthType Basic 
      AuthName "secure section" 
      AuthUserFile /etc/apache2/htpasswd 
      Require valid-user 
      Options +FollowSymLinks +ExecCGI 
      RewriteEngine On 
      RewriteRule ^$ index.html [QSA] 
      RewriteRule ^([^.]+)$ $1.html [QSA] 
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] 
      ErrorDocument 500 "Application error Rails application failed to start properly" 
      AllowOverride None 
      Order allow,deny 
      allow from all 
      </Directory> 

      LogLevel warn 
      ErrorLog /ssl_error.log 
      CustomLog /ssl_access.log combined 
      ServerSignature Off 
      SSLEngine on 
      SSLCertificateFile /etc/ssl/certs/domain.tld.crt 
      SSLCertificateKeyFile /etc/ssl/private/domain.tld.key 
      SSLCACertificateFile /etc/ssl/certs/domain.tld.ca 

      <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
      SSLOptions +StdEnvVars 
      </FilesMatch> 
      BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 
      BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 

      Alias /dev1 /var/www/default-ssl/dev1/public 
      <Directory /var/www/default-ssl/dev1/public> 
      PassengerAppRoot /var/www/default-ssl/dev1 
      RailsBaseURI /dev1 
      Require user user1 user2 
      </Directory> 

      Alias /dev2 /var/www/default-ssl/dev2/public 
      <Directory /var/www/default-ssl/dev2/public> 
      PassengerAppRoot /var/www/default-ssl/dev2 
      RailsBaseURI /dev2 
      Require user user1 
      </Directory> 

      ... 

     </VirtualHost> 
     </IfModule> 
+1

謝謝,我想你回答了我的問題。基本上我需要不同的源代碼目錄來生活。我試圖看看是否可以從同一個目錄下運行兩個實例。我複製了源目錄,一切運行良好。 – Rick

0

乘客distingues根據路徑配置。請看看到Ubuntu的bug數據庫: Multiple instance of redmine does not work with passenger

爲每個配置創建目錄:

/var/lib/redmine/*configname* 

從管理平臺目錄創建符號鏈接:

ln -s /usr/share/redmine /var/lib/redmine/*configname*/passenger 
在Apache虛擬主機

您可以添加替代PassengerAppRoot:

PassengerAppRoot /var/lib/redmine/*configname*/passenger