2014-01-17 89 views
1

在服務器上已經有一個網站的運行。我試圖讓我的rails應用程序在同一網站的url上運行,即網站是example.com,rails應用程序將在example.com/railsapp上運行。阿帕奇VirtualHosts的Rails應用程序

rails應用程序將使用乘客和服務器是Ubuntu的。 當前的虛擬主機文件看起來像;

<VirtualHost *:80> 
    DocumentRoot /var/www 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride All 
    </Directory> 
    <Directory /var/www/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride None 
     Order allow,deny 
     allow from all 
    </Directory> 
    <Directory /var/www/examplesite/> 
       Options Indexes FollowSymlinks Multiviews 
       AllowOverride All 
       Order allow,deny 
       allow from all 
    </Directory> 
</VirtualHost> 

我需要添加一個單獨的hosts文件嗎?

<VirtualHost *:80> 
ServerName ??? 
DocumentRoot /var/www/railsapp/public 
<Directory /var/www/railsapp/public> 
    AllowOverride all 
    # MultiViews must be turned off. 
    Options -MultiViews 
</Directory> 
</VirtualHost> 

我不知道該怎麼辦...

回答

4

正確的解決方案是Deploying to a sub URI客運文檔中記載:

假設你已經有一個虛擬主機:

<VirtualHost *:80> 
    ServerName www.phusion.nl 
    DocumentRoot /websites/phusion 
    <Directory /websites/phusion> 
     Allow from all 
    </Directory> 
</VirtualHost> 

而且您希望可以從URL http://www.phusion.nl/subapp訪問位於/websites/rails的Rails應用程序。

要做到這一點,你需要執行以下操作:

  1. Alias {SUBURI} {PATH TO YOUR APPLICATION'S PUBLIC DIRECTORY}
  2. 創建<Location /{SUBURI}>塊。
  3. Location塊內部,設置PassengerBaseURI /{SUBURI}
  4. Location塊內,設置PassengerAppRoot {PATH TO YOUR APPLICATION ROOT}
  5. 創建<Directory {PATH TO YOUR APPLICATION'S PUBLIC DIRECTORY}>塊。
  6. Directory區塊內,設置Allow from all
  7. Directory區塊內,禁用MultiViews

下面是一個例子:

<VirtualHost *:80> 
    ServerName www.phusion.nl 
    DocumentRoot /websites/phusion 
    <Directory /websites/phusion> 
     Allow from all 
    </Directory> 

    # These have been added: 
    Alias /subapp /websites/rails/public 
    <Location /subapp> 
     PassengerBaseURI /subapp 
     PassengerAppRoot /websites/rails 
    </Location> 
    <Directory /websites/rails/public> 
     Allow from all 
     Options -MultiViews 
    </Directory> 
</VirtualHost> 
+1

Apache是​​拒絕啓動,因爲PassengerBaseURI是一個無效的命令。這個文檔是否過時了? – XanderStrike

+0

@XanderStrike你一定是乘客> v4我認爲。你在什麼版本? –

+0

這是前一陣子。我解決了這個問題,忘記了將包含乘客的模塊複製到我的'smb.conf'中。 – XanderStrike