用于 Rails 应用程序的 Apache VirtualHosts

rap*_*tle 1 apache ruby-on-rails apache2 virtualhost

在服务器上已经有一个站点正在运行。我试图让我的 rails 应用程序在同一站点的 url 上运行,即站点是 example.com,而 rails 应用程序将在 example.com/railsapp 上运行。

rails 应用程序将使用乘客,服务器是 ubuntu。当前的 virtualhosts 文件看起来像;

<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>
Run Code Online (Sandbox Code Playgroud)

我需要添加一个单独的主机文件吗?

<VirtualHost *:80> 
 ServerName ??? 
 DocumentRoot /var/www/railsapp/public
 <Directory /var/www/railsapp/public> 
  AllowOverride all 
  # MultiViews must be turned off. 
  Options -MultiViews 
 </Directory> 
</VirtualHost> 
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做...

Sim*_*tti 5

部署到子 URI乘客文档中记录了正确的解决方案:

假设你已经有一个虚拟主机:

<VirtualHost *:80>
    ServerName www.phusion.nl
    DocumentRoot /websites/phusion
    <Directory /websites/phusion>
        Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

并且您希望/websites/rails可以从 URL 访问位于 中的 Rails 应用程序http://www.phusion.nl/subapp

为此,您需要执行以下操作:

  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>
Run Code Online (Sandbox Code Playgroud)