如何在 Ubuntu 服务器上托管 2 个版本的 Rails 应用程序

如何在 Ubuntu 服务器上托管 2 个版本的 Rails 应用程序

我正在尝试在同一台服务器上托管 Rails 应用程序的多个版本(开发和暂存),但目前无法通过浏览器访问这两个版本。

我正在运行 Apache2、Passenger、Rails 3 和 Ubuntu 10.04 LTS。

我想通过相同的 IP 但使用不同的端口访问这两个站点。这可以吗?当我通过“http://1.2.3.4“,它工作得很好,但是当我尝试通过“访问开发环境时http://1.2.3.4:8080“,浏览器提示无法连接到”http://1.2.3.4:8080“。

从理论上讲,这应该可行吗?我需要分配实际的域吗(例如“http://example.com“ 和 ”http://dev.example.com“)?

# ports.conf

Listen 80
NameVirtualHost *:80
Listen 8080
NameVirtualHost *:8080

# sites-enabled/staging-example.com

<VirtualHost *:80>
  ServerName example.com
  DocumentRoot "/home/www/example/staging/current/public"
  <Directory "/home/www/example/staging/current/public">
    Allow from all
    Options -MultiViews   
  </Directory>
</VirtualHost>

# sites-enabled/dev-example.com

<VirtualHost *:8080>
  ServerName dev-example.com
  DocumentRoot "/home/www/example/dev/current/public"
  <Directory "/home/www/example/dev/current/public">
    Allow from all      
    Options -MultiViews   
    RailsEnv development
  </Directory>
</VirtualHost>

注意:我还按照建议创建了 config/setup_load_paths.rbhttp://dalibornasevic.com/posts/21-rvm-and-passenger-setup-for-rails-2-and-rails-3-apps

答案1

Passenger 可能配置为在端口 80 上发布两个应用程序(我没有看到任何地方有自定义配置可以覆盖此功能)。

尽管如此,我还是会使用带有域的虚拟主机,即:

NameVirtualHost <IP>:80

<VirtualHost <IP>:80>
    ServerName www.x.com
    ServerAlias x.com
    <DocumentRoot  //etc, left out for simplicity...
</VirtualHost>

<VirtualHost <IP>:80>
    ServerName www.dev-x.com
    ServerAlias dev-x.com
    <DocumentRoot //etc, left out for simplicity...
</VirtualHost>

填写其余信息应该可以让 apache 指向正确的服务器。

希望对您有所帮助,如果不清楚请告诉我

更新:

顺便说一句,由于您使用的是 Ubuntu,因此您只需将每个 vhost 配置添加到 sites-available 并使用 a2ensite 来打开/关闭它们 => 我们有 2 个这样的服务器,第一个服务器上有大约 15 个不同的站点,第二个有大约 10 个。

相关内容