【问题标题】:Which roles should I include in production.rb while deploying a Rail API app using Capistrano?在使用 Capistrano 部署 Rail API 应用程序时,我应该在 production.rb 中包含哪些角色?
【发布时间】:2019-07-06 13:09:34
【问题描述】:

我有一个 Rails 5 API 应用程序,我想将它部署在同时托管应用程序和数据库 (Postgres) 的远程服务器上。

我只有在删除 webapp 角色后才设法部署

server "myserver", user: "myuser", roles: %w{db} 

当我添加 webapp 时,Capistrano 无法部署。例如,它尝试预编译资产或尝试查找不存在的文件夹。

我了解 Capistrano 允许我们为每个服务器标记一个或多个角色,因此我们可以控制在哪里执行哪些任务。

我们如何确切地知道哪个角色执行哪个任务?特别是,我需要什么角色才能成功部署 Rails 5 API 应用程序?

我在 Capistrano 主页上找不到任何信息来回答我的问题。

【问题讨论】:

    标签: ruby-on-rails ruby continuous-deployment capistrano3


    【解决方案1】:

    对于单服务器部署,我的 Capistrano 配置通常如下所示

    # role-based syntax
    role :app, %w{user@myserver}
    role :web, %w{user@myserver}
    role :db, %w{user@myserver}
    

    所以三个role 语句用于同一台服务器。

    我猜 Capistrano 正在根据每个角色执行不同的任务 - 例如。迁移在db 上运行,资产编译在web 上运行等等。因此,如果您只有一台服务器,它将承担所有角色。

    如果您的部署仅适用于某些角色,则表明您的部署过程设置不正确。

    【讨论】:

    • 为了判断我的部署过程是否设置正确,我需要知道哪个角色(db、web、app)运行哪些任务。我真的知道 db 运行迁移(因为它与 db 相关)。我还推断,经过一些试验(不是从文档中学习),网络运行资产编译。应用程序运行什么任务?任何文档或参考资料?
    • 在您的问题中,您说您部署到单个服务器。在这种情况下,您不需要关心角色 - 任务关系。仅当您有更复杂的负载平衡设置时才需要角色配置的全部内容,其中多个服务器用于同一应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多