gpt4 book ai didi

ruby-on-rails - 如何在服务器启动时运行 capistrano 任务?

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:59 39 4
gpt4 key购买 nike

我一直在思考这个问题并搜索了很长时间都没有找到任何东西,所以我假设我遇到了 XY 问题。

让我描述一下我的问题,这听起来很常见。

我们使用 capistrano 来部署我们的网络应用程序和数据库。相关部分是我们有一个用于延迟作业的专用服务器,我们使用 capistrano 部署到它并启动/重新启动进程。这是自定义数量的工作人员,具有 2 个不同的 Gemfile 和 3 个队列。

我想做的是在服务器重启时启动它们,或者更重要的是,在服务器克隆 + 启动时启动它们。

我已经尝试从服务器本身调用 cap production delayed_job:custom_start.. 没有用。 (这是我的非XY问题调整题的核心)。不确定它是否有意义。但我想知道这是否可能。 custom_start 是启动我们的工作组的任务。

或者我正在考虑将代码抽象为rake 任务或脚本或其他东西,并从capistrano 和任何地方调用它我需要添加它才能在启动时启动。这样更有意义吗?

编辑:刚刚找到this post ..令人沮丧..

附注我只是想澄清一下,当我说服务器时,我指的是我的 Machine/ec2 实例,而不是我的 Web 应用程序正在重启。

最佳答案

我的 Jenkins 部署作业充满了开发人员可以调用的直接任务,例如 cap dev app:fetch_logs、cap qa sanitize_environment 等。

Capistrano 的这个特性很简单并且经过验证。

我猜你想做的是使用 Capistrano 来设置 rc.d 文件。是的,你可以这样做。此时你应该使用 chef/puppet 吗?考虑。 Scalr/Rightscale 也很有趣。

您可以为所有工作变量添加一个 bash 脚本作为 .erb 模板,然后将脚本上传到 deploy_to 目录。最后,您可以设置另一个任务 (#{sudo}) 以将 rc.d 包装器注入(inject) rc.d。或者你不是 rc.d 包装器到你的 bash 脚本,只是从 rc.d-local 调用 bash 脚本。您可以使用 sed 附加到 rc.d-local。

关于ruby-on-rails - 如何在服务器启动时运行 capistrano 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245094/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com