首先,大家新年快乐.
我是Rails的新手,所以请容忍任何不正确的术语使用......
我开发了一个简单的Rails应用程序,由MySQL数据库支持.
我现在想将此应用程序部署到多个独立的用户组(即,它是一个俱乐部应用程序,我想将其部署到一些完全独立的俱乐部).
我想尽可能使用相同的Rails应用程序代码,并且每个俱乐部都有一个单独的数据库实例.
由于每个实例将在同一台服务器上运行(直到服务器负载被证明是一个问题)我假设我可以为每个Rails服务器使用不同的端口来引导用户到正确的组?
我读过有测试和生产模式,是否有可能有多个[附加]生产模式实例,例如club1,club2,所有共享相同的代码,具有独特的数据库?
我的问题是如何支持多个单独的数据库实例,以及如何最好地路由到这些实例?
任何关于如何去做的建议都非常感激.
如果您正在使用 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
Run Code Online (Sandbox Code Playgroud)
由于 Heroku 自动配置您的数据库,因此不需要 database.yml 文件
git push heroku master
Run Code Online (Sandbox Code Playgroud)
您将在 boxingclub.heroku.com 上部署您的代码版本
当您更改代码时,您只需转到每个安装并执行以下操作:
git pull origin master
git push heroku master
Run Code Online (Sandbox Code Playgroud)
它会更新应用程序特定实例上的代码。
如果您想更高级一点,您会希望 Chef 为您管理整个设置。http://www.rubyinside.com/chef-tasty-server-configuraiton-2162.html
另一种方法是拥有某种子域系统,但我将把它留给其他人来讨论。