Capistrano'阶段'和'角色'之间有什么区别

时间:2013-09-19 06:33:42

标签: deployment capistrano

以下是我在网上发现的一些引用:

阶段:

来自Beanstalk博客

  

“允许您设置一个配方以将代码部署到多个配方   位置“。

来自Github

  

“我们有一个生产服务器和一个登台服务器。很自然,我们   想要两个部署阶段,生产和分期。我们也   假设您从头开始创建应用程序。“

角色:

从SO(接受回答)

  

角色允许您编写仅适用于某些任务的capistrano任务   服务器。这实际上仅适用于多服务器部署。该   “app”,“web”和“db”的默认角色也在内部使用,所以   他们的存在不是可选的(AFAIK)

在我天真的时候,这听起来像是一回事,有人可以用祖母可以理解的方式解释不同的东西吗?

P.S我正在部署PHP,如果有帮助的话。

1 个答案:

答案 0 :(得分:1)

阶段用于将不同的分支部署到不同的服务器组(其中一个组可能是一个或多个服务器)。

角色用于将同一分支部署到同一组中的不同服务器 ,并允许您在该组中的某些服务器上运行某些capistrano命令。例如,如果在部署期间运行数据库更新任务,则可以指定仅为:db角色运行它,其中:db表示单个服务器,而不是浪费在两个服务器上运行相同命令的资源服务器获得相同的结果。

仅当服务器组中有多个服务器(例如,staging1和staging2,prod1和prod2)时,这才非常有用。如果您有用于登台和生产的单个服务器,则无需担心角色。

请注意,我在这里也简化了阶段的定义。如果需要,您可以通过使:deploy_to依赖于舞台来实际将多个阶段部署到单个服务器。