![在 Apache 中配置同一台服务器中具有相同 IP 的两个 Ruby on Rails 应用程序](https://linux22.com/image/578863/%E5%9C%A8%20Apache%20%E4%B8%AD%E9%85%8D%E7%BD%AE%E5%90%8C%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%20IP%20%E7%9A%84%E4%B8%A4%E4%B8%AA%20Ruby%20on%20Rails%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我之前运行过两个 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