在一台专用服务器上运行两个不同的Rails应用程序

16

我有一台配有以下配置的专用服务器

i3 - Dual Core - 3.06Ghz H/T
16GB RAM
500GB SATA2

现在我想在一个专用服务器上执行两个不同的Rails应用程序。这两个应用程序是不同的,但它们使用共同的数据库。
是否可以实现这一点?如果可以-如何做到这一点? 使用Apache的Phusion Passenger是一个好方法吗?如果是-如何配置一个Phusion Passenger服务器来运行两个应用程序?
3个回答

14

我将描述如何在一台 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中都会有类似的连接信息。

1
我能否在Apache2中同时加载不同版本的passenger_module?因为我有两个使用不同Ruby版本(和gemsets)的Rails应用程序。 - Peter Lee

1

是的,这绝对是可能的。我尚未使用Passenger + Apache完成此操作,但我相信那也是一种不错的方式。我只用过thin + nginx来实现它。


1
我可以再多一些细节吗?有没有链接或者任何东西,让我开始思考或者部署这个应用程序呢? - AMIC MING

0

使用Apache的Passenger Phusion是一个可靠的方法。它们使用相同的数据库并不应该成为问题(只需确保它们在任何方面都不会互相干扰)。

通常,只需按照正常方式设置事物,但要查看Apache基于名称的虚拟主机:

http://httpd.apache.org/docs/2.2/vhosts/name-based.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接