如何设置Apache conf和可能的Passenger以允许更多的vh​​ost运行一个代码库

时间:2011-03-31 17:41:21

标签: ruby-on-rails-3 configuration apache2 passenger

我的代码库根据标识符(OXID)对用户进行细分,但我希望细分用户拥有单独的公开文件夹,并且让我将网站关闭而不会骚扰其他用户站点 - 这就是为什么我希望我的httpd.conf包含如下:

<VirtualHost *:80>
    ServerName ny1.alco.dk
    DocumentRoot /var/www/html/alco/current/sites/user_A/public
    PassengerAppRoot /var/www/html/alco/current
    SetEnv OXID 23
</VirtualHost>

<VirtualHost *:80>
    ServerName ny2.alco.dk
    DocumentRoot /var/www/html/alco/current/sites/user_B/public
    PassengerAppRoot /var/www/html/alco/current
    SetEnv OXID 25
</VirtualHost>

Apache对此很酷 - 但Passenger咆哮着“没有这样的文件加载 - 捆绑” - 很明显,这是不对的!

这是否可行(至少使用Apache / 2.2.14(Unix),Ruby 1.8.7 p330,Rails 3.0.3和Passenger 3.0.2)

更新!
事实证明乘客'吠声'在我身上:(

我已启动并运行了2个站点 - 但两个站点都报告了第一个被访问主机的ENV ['OXID']! IE浏览器。如果我浏览ny1.alco.dk/something-我得到'23'这是好的,但如果我然后浏览到ny2.alco.dk我也得到'23'!同样 - 如果我在触摸tmp / restart.txt之后浏览到ny2.alco.dk/something作为第一件事,我得到'25',这将是我得到的相同值,当随后浏览到ny1.alco.dk时 - 嗯

2 个答案:

答案 0 :(得分:0)

也许这是一个黑客 - 我需要进一步调查,但是:

如果我这样做

ln -s /data/www/html/alco/current ny1
ln -s /data/www/html/alco/current ny2

然后编辑我的/data/apache/conf.d/alco.conf以保存

<VirtualHost *:80>
    ServerName ny1.alco.dk
    DocumentRoot /var/www/html/alco/ny1/sites/user_A/public
    PassengerAppRoot /var/www/html/alco/ny1
    SetEnv OXID 23
</VirtualHost>

<VirtualHost *:80>
    ServerName ny2.alco.dk
    DocumentRoot /var/www/html/alco/ny2/sites/user_B/public
    PassengerAppRoot /var/www/html/alco/ny2
    SetEnv OXID 25
</VirtualHost>

我很好:)

我仍然喜欢这个的第二个意见 - 但是现在;我很好:)

答案 1 :(得分:0)

Rails 3.2.0包含一个config.ru,它似乎真的是罪魁祸首 - 完全删除它解决了我的多站点问题。

所以,到目前为止,如果您想在类似网站之间共享代码,那么Rails应用程序不会轻易耙!