Условное развертывание нескольких приложений rails3

В случае приложения, требующего масштабирования, необходимо развернуть несколько экземпляров приложения в разное время.

staging.theapp.tld (for admin testing)
sandbox.theapp.tld (for user testing, actually in development mode for better logging)
theapp.tld (actual production mode. To be run with and without 'www.' prefix)

Развертывание должно происходить одним из трех способов:
- постановка в одиночку (для проверки материала в производственном режиме)
- постановка + песочница
- песочница + режим реального производства

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

master.theapp.tld
vps1.theapp.tld
vps1.theapp.tld

Внизу postgresql выполняет процесс ведущий-ведомый для обновления данных до VPS.

Учитывая количество задействованных переменных и отсутствие настройки работы нескольких серверов, количество возможностей объединения работ становится экспоненциальным... Соответствующие компоненты приложения:

gem 'capistrano', '2.14.2'
gem 'rvm-capistrano', '1.2.7'
gem 'pg', '0.17.1'

Как должно быть настроено capistrano?

1 ответ

Это очень широкий вопрос. Вместо того, чтобы давать конкретные ответы, я могу предложить только пару вещей:

  • переключиться на capistrano3, Прошло много времени с момента его выпуска.
  • рассмотрите возможность использования некоторых плагинов capistrano вместо того, чтобы начинать с нуля
  • capistrano-unicorn-nginx в значительной степени поддерживает все, что вы упомянули в посте, с минимальной конфигурацией: несколько приложений на одном сервере, а также поддержка нескольких серверов.
  • capistrano-postgres также поддерживает конфигурации с одним и несколькими серверами. У него пока нет поддержки настройки master-slave в postgresql, так что часть должна быть выполнена сама по себе.
Другие вопросы по тегам