【问题标题】:What's the difference between Capistrano 'stages' and 'roles'Capistrano“阶段”和“角色”有什么区别
【发布时间】:2013-09-19 06:33:42
【问题描述】:

这是我在网上找到的一些报价:

阶段:

来自 Beanstalk 博客

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

来自 Github

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

角色:

来自 SO(已接受的答案)

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

在我的天真中,这些听起来像是一回事,有人可以用你祖母能理解的方式解释一下不同之处吗?

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

【问题讨论】:

    标签: deployment capistrano


    【解决方案1】:

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

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

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

    请注意,我在这里还简化了阶段的定义。如果需要,您实际上可以将多个阶段部署到单个服务器,方法是使 :deploy_to 依赖于阶段。

    【讨论】:

    • 谢谢,我明白了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2011-04-16
    • 2013-04-18
    • 2013-06-20
    • 2012-06-12
    相关资源
    最近更新 更多