1

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

阶段:

来自 Beanstalk 博客

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

来自 Github

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

角色:

从 SO(接受的答案)

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

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

PS 如果有帮助,我正在部署 PHP。

4

1 回答 1

1

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

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

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

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

于 2013-09-22T11:02:12.920 回答