开发者

Deploying multiple instances of a Rails app - same code, multiple

Firstly, Happy New Year everyone.

I'm new to Rails, so please tolerate any incorrect use of terminology...

I have developed a simple Rails application, backed by a MySQL database.

I would now like to deploy this application to multiple, independent groups of users (i.e. it is a club application, and I would like to deploy it to a number of completely independent clubs).

I would like to use the same Rails Application code as much as possible, and just have a separate instance of the database for each club.

As each instance will be running on the same server (until server load proves to be an issue) I assume I can use a different port for each Rails server to steer users to the correct group?

I'd read that there are test and production modes, is it possible to have multiple [additional] instances of production modes, e.g. club1, club2, all sharing the same code, with unique databas开发者_运维技巧es?

My questions are how to support multiple separate database instances, and also how best to route to these?

Any advice on how to go about this much appreciated.


If you are using Git (I suggest you should be!) then you can keep a central version of your code in one place and then deploy it multiple times, changing only the database.yml file (it should not be checked in to your git repository in that case). http://git-scm.com/

Let's say you put all of your code up on github.com with username 'snips' and the project is called 'clubster'. Using something like Heroku you would then do:

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

Because Heroku auto-configures your database there is no need for a database.yml file

git push heroku master

And you'd have a version of your code deployed at boxingclub.heroku.com

When you make changes to your code you just go to each of your installations and do:

git pull origin master
git push heroku master

Which updates your code on that particular instance of your application.

And if you're getting a little more advanced you'd be looking at Chef to manage the whole setup for you. http://www.rubyinside.com/chef-tasty-server-configuraiton-2162.html

The other approach would be to have some kind of subdomain system, but I'll leave that to others to cover.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜