Развертывание нескольких экземпляров приложения Rails - один и тот же код, несколько - PullRequest
6 голосов
/ 02 января 2011

Во-первых, всех с новым годом.

Я новичок в Rails, поэтому, пожалуйста, допускайте любое неправильное использование терминологии ...

Я разработал простое приложение на Rails, опираясь на базу данных MySQL.

Теперь я хотел бы развернуть это приложение для нескольких независимых групп пользователей (т. Е. Это клубное приложение, и я бы хотел развернуть его в ряде совершенно независимых клубов).

Я бы хотел как можно больше использовать один и тот же код приложения Rails и просто иметь отдельный экземпляр базы данных для каждого клуба.

Поскольку каждый экземпляр будет работать на одном и том же сервере (пока загрузка сервера не станет проблемой), я предполагаю, что могу использовать разные порты для каждого сервера Rails, чтобы направить пользователей в нужную группу?

Я бы прочитал, что есть тестовый и производственный режимы, возможно ли иметь несколько [дополнительных] экземпляров производственных режимов, например, club1, club2, все с одним кодом, с уникальными базами данных?

У меня есть вопросы о том, как поддерживать несколько отдельных экземпляров базы данных, а также о том, как лучше всего выполнить маршрутизацию к ним?

Любые советы о том, как это сделать, очень ценятся.

1 Ответ

1 голос
/ 02 января 2011

Если вы используете Git (я рекомендую вам это сделать!), Вы можете хранить центральную версию своего кода в одном месте, а затем развертывать ее несколько раз, изменяя только файл database.yml (его не следует проверять в ваш репозиторий git в этом случае). http://git -scm.com /

Допустим, вы разместили весь свой код на github.com с именем пользователя «snips», и проект называется «clubter». Используя что-то вроде 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

Другой подход заключается в том, чтобы иметь какую-то систему поддоменов, но я оставлю это другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...