部署Rails应用程序的多个实例 - 相同的代码,多个

时间:2011-01-02 18:33:47

标签: ruby-on-rails

首先,大家新年快乐。

我是Rails的新手,所以请容忍任何不正确的术语使用......

我开发了一个简单的Rails应用程序,由MySQL数据库支持。

我现在想将此应用程序部署到多个独立的用户组(即,它是一个俱乐部应用程序,我想将其部署到一些完全独立的俱乐部)。

我想尽可能使用相同的Rails应用程序代码,并且每个俱乐部都有一个单独的数据库实例。

由于每个实例都将在同一台服务器上运行(直到服务器负载被证明是个问题)我假设我可以为每个Rails服务器使用不同的端口来引导用户到正确的组?

我读过有测试和生产模式,是否有可能有多个[附加]生产模式实例,例如: club1,club2,所有共享相同的代码,都有独特的数据库?

我的问题是如何支持多个单独的数据库实例,以及如何最好地路由到这些实例?

关于如何解决这个问题的任何建议都很受欢迎。

1 个答案:

答案 0 :(得分:1)

如果您正在使用Git(我建议您应该这样做!)那么您可以将代码的中央版本保存在一个位置,然后多次部署,只更改database.yml文件(不应该在在那种情况下你的git存储库)。 http://git-scm.com/

假设您使用用户名'snips'将所有代码放在github.com上,该项目称为“clubster”。然后使用像Heroku这样的东西:

git clone https://github.com/snips/clubster.git
cd clubster
heroku create boxingclub

因为Heroku自动配置您的数据库,所以不需要database.yml文件

git push heroku master

你在boxingclub.heroku.com上部署了一个代码版本

当您对代码进行更改时,您只需进入每个安装并执行以下操作:

git pull origin master
git push heroku master

在您的应用程序的特定实例上更新您的代码。

如果你得到更高级的话,你会看着Chef为你管理整个设置。 http://www.rubyinside.com/chef-tasty-server-configuraiton-2162.html

另一种方法是拥有某种子域系统,但我会将其留给其他人来覆盖。