我有一台配有以下配置的专用服务器
i3 - Dual Core - 3.06Ghz H/T
16GB RAM
500GB SATA2
现在我想在一个专用服务器上执行两个不同的Rails应用程序。这两个应用程序是不同的,但它们使用共同的数据库。
是否可以实现这一点?如果可以-如何做到这一点? 使用Apache的Phusion Passenger是一个好方法吗?如果是-如何配置一个Phusion Passenger服务器来运行两个应用程序?
我有一台配有以下配置的专用服务器
i3 - Dual Core - 3.06Ghz H/T
16GB RAM
500GB SATA2
我将描述如何在一台 Linux 服务器上运行多个 Rails 应用程序,使用 Apache、Phusion Passenger 和某个版本的 Ruby。你有许多选择,但这应该可以帮助你入门。其中许多细节来自安装脚本。
首先,安装 Phusion Passenger。
> gem install passenger
第二步,构建Apache 2乘客(Passenger)模块。在第一步安装时应该能够执行以下脚本。
> passenger-install-apache2-module
这个脚本将编译Apache 2模块,并说明如何配置Apache。如果缺少依赖关系,该脚本应该会提供一些有用的建议,告诉你如何安装它们。
第三步,编辑你的Apache配置文件。我必须添加类似以下内容的东西。(只用这个作为参考,不用担心.rvm)第二步运行的脚本将给你一些可以复制粘贴的内容。
LoadModule passenger_module /Users/me/.rvm/gems/ree/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
PassengerRoot /Users/me/.rvm/gems/ree/gems/passenger-3.0.9
PassengerRuby /Users/me/.rvm/wrappers/ree/ruby
第四步,为想要运行的每个应用程序在您的Apache配置文件中添加类似以下内容的代码。
<VirtualHost *:80>
ServerName app1.example.com
DocumentRoot /somewhere/app1/public # <-- be sure to point to 'public'!
<Directory /somewhere/app1/public>
AllowOverride all # <-- relax Apache security settings
Options -MultiViews # <-- MultiViews must be turned off
</Directory>
</VirtualHost>
如果您有两个共享一个数据库的Rails应用程序,那么它们在config/database.yml中都会有类似的连接信息。是的,这绝对是可能的。我尚未使用Passenger + Apache完成此操作,但我相信那也是一种不错的方式。我只用过thin + nginx来实现它。
使用Apache的Passenger Phusion是一个可靠的方法。它们使用相同的数据库并不应该成为问题(只需确保它们在任何方面都不会互相干扰)。
通常,只需按照正常方式设置事物,但要查看Apache基于名称的虚拟主机:
passenger_module
?因为我有两个使用不同Ruby版本(和gemsets)的Rails应用程序。 - Peter Lee