В чем разница между:web и: группами приложений в capistrano/rails

Я настраиваю разные capistrano групп в приложении rails, которое я унаследовал, и мне было интересно, в чем разница между:app group и:web group capistrano/rails, Из того, что я могу сказать, они делают то же самое.

2 ответа

Роли Capistrano помогают запускать задачи только на определенных серверах (если у вас несколько серверов). В вашем случае вы можете использовать capistrano-sidekiq gem и создайте роль capistrano (сервер в основном), которая выполняет только задания sidekiq с:

set :sidekiq_role, [:workers]

Вы можете прочитать больше здесь и здесь

Я не смог найти хорошую документацию по этому вопросу, поэтому вот моя попытка предоставить это:

Роли связаны, но они используются по-разному в разных задачах

Задачи базы данных и миграции выполняются на серверах с db роли

Задачи актива выполняются на серверах с web роли.

Пакетные задачи выполняются на всех серверах.

Задачи пассажирского сервера выполняются на серверах с app роли

Не слишком подробно рассматривая гем cap, я считаю, что большинство задач развертывания по умолчанию выполняются во всех ролях.

Хорошей новостью является то, что большая часть этого настраивается, например, рекомендуется: set :migration_role, :app и есть аналогичные конфиги роли для assets_rolespassenger_roles а также bundle_roles,

Из вышесказанного видно, что:

  • Веб-роль предназначена для внешних прокси-серверов, то есть apache / nginx.
  • Роль приложения для сервера приложений, то есть пассажир / пума
  • Роль db предназначена для сервера базы данных, хотя на самом деле ее не рекомендуется использовать ( https://github.com/capistrano/rails)
  • Предполагается, что код будет развернут во всех ролях

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

Другие вопросы по тегам