在 Apache 中配置同一台服务器中具有相同 IP 的两个 Ruby on Rails 应用程序

在 Apache 中配置同一台服务器中具有相同 IP 的两个 Ruby on Rails 应用程序

我之前运行过两个 Ruby 和 Rails 应用程序,其中一个使用轨道控制台命令,另一个使用 Apache 通过 Phusion Passenger。两个应用程序都运行在同一个 IP 中,唯一的区别是使用 rails 控制台运行的应用程序可以从端口 3000 访问。

现在,我想用 Apache 运行这两个应用程序,但我知道具体该如何配置才能做到这一点。我读过一些 VirtualHosts,但我不明白。考虑到我只有一台服务器和一个域,我只是使用了不同的端口。我尝试了几次,结果与此类似:

<VirtualHost *:80>
    #ServerAdmin @dummy-host.example.com
    DocumentRoot /webserver/myapp/public
    ServerName myapp-Development
    <Directory /webserver/myapp/public>
         AllowOverride all
         Options -MultiViews
    </Directory>
    ErrorLog logs/k2-error_log
    CustomLog logs/k2-access_log common
</VirtualHost>

<VirtualHost *:3000>
    #ServerAdmin @dummy-host.example.com
    DocumentRoot /webserver/myapp2-admin/public
    ServerName myapp2-admin
    <Directory /webserver/myapp2-admin/public>
         AllowOverride all
         Options -MultiViews
    </Directory>
    #ErrorLog logs/k2-error_log
    #CustomLog logs/k2-access_log common
</VirtualHost>

没有用,我只能通过在浏览器中输入 IP 来访问第一个应用程序。

如何让同一台服务器上的 2 个 RoR 应用程序在不同的端口上使用?

或者

可选:如何让 myapp2 在相同的端口 80 上运行,但在以下方向可用:some.ip.address/admin?

在 Amazon EC2 实例中使用 CentOS 5.7。

我在这个问题中找到了答案,问题是我没有域名来为子域名创建 CNAMES 记录:https://stackoverflow.com/questions/4203580/creating-subdomains-in-amazon-ec2

答案1

您可能忘记编辑 ports.conf,您需要添加另一个 Listen 以使 apache 也绑定到该端口。

答案2

查看我的答案这里关于从子网址提供多个 Rails 应用程序的类似问题。

如果你想从两个不同的端口为你的两款 Rails 应用提供服务,除了虚拟主机之外,你还必须在 apache conf 中添加

Listen 80
Listen 3000
NameVirtualHost *:80
NameVirtualHost *:3000

相关内容