2011-10-25 49 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