在capistrano / rails中:web和:app组之间的区别是什么?

时间:2017-12-05 04:50:33

标签: ruby-on-rails capistrano

我在我继承的rails应用中设置了不同的capistrano组,我想知道:app group和:web group之间的区别在于capistrano/rails。据我所知,他们做同样的事情。

2 个答案:

答案 0 :(得分:2)

Capistrano的角色可以帮助您仅在某些服务器上运行任务(如果您有多台服务器)。在您的情况下,您可以使用capistrano-sidekiq gem并创建一个capistrano角色(基本上是一个服务器),它只运行sidekiq作业:

set :sidekiq_role, [:workers]

您可以阅读更多herehere

答案 1 :(得分:1)

我无法找到关于此的任何好文档,所以我试图提供它:

角色是相关的,但不同的任务使用它们

数据库和迁移任务在db个角色

的服务器上运行

资产任务在web个角色的服务器上运行。

捆绑任务在所有服务器上运行。

乘客服务器任务在app个角色

的服务器上运行

如果没有仔细检查cap gem,我相信大多数部署任务默认都会在所有角色上运行。

好消息是大部分内容都是可配置的,例如建议:set :migration_role, :app并且assets_roles passenger_rolesbundle_roles有类似的角色配置。

您可以从上面看到:

  • Web角色适用于前端代理服务器,即apache / nginx
  • app角色适用于应用程序服务器,即passenger / puma
  • db角色适用于数据库服务器,但实际上并不建议使用它(https://github.com/capistrano/rails#recommendations
  • 假设代码将部署到所有角色

对于最基本的设置,一切都在一台服务器上,您可能希望配置该服务器上的所有角色。