我之前运行过两个 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