我一直在思考这个问题并搜索了很长时间都没有找到任何东西,所以我假设我遇到了 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/