我一直在考虑这个并且在没有找到任何东西的情况下搜索这个年龄,所以我将假设我遇到了XY问题。
让我来描述我的问题,这听起来很常见。
我们使用capistrano
部署我们的网络应用和数据库。相关部分是我们有一个专用服务器用于延迟作业,我们使用capistrano
部署到它并启动/重启进程。这是具有2个不同Gemfile
和3个队列的自定义工作人员数。
我想要做的是是在服务器重启时启动它们,或者更重要的是,在服务器克隆+启动时启动它们。
我已尝试从服务器本身调用cap production delayed_job:custom_start
..但无效。 (这是我的非XY问题调整问题的核心)。不确定它是否有意义。但我想知道是否有可能。 custom_start
是启动我们的工作人员的任务。
或者我正在考虑将代码抽象为rake
任务或脚本或其他内容,并从capistrano
和我需要添加它的地方调用它在启动时开始。这更有意义吗?
编辑:刚刚找到this post ..令人沮丧......
P.S。我只是想澄清一下,当我说服务器时,我的意思是我的机器/ ec2实例,而不是我的网络应用程序重新启动。
答案 0 :(得分:0)
我的Jenkins部署工作充斥着开发人员可以调用的直接任务,例如cap dev app:fetch_logs,cap qa sanitize_environment等。
Capistrano的这个功能很容易验证。
我猜你要做的是使用Capistrano来设置rc.d文件。是的,你可以这样做。你现在应该使用厨师/木偶吗?考虑。 Scalr / Rightscale也是值得关注的事情。
您可以为所有工作变量添加bash脚本作为.erb模板,然后将脚本上载到deploy_to目录中。最后,您可以设置另一个任务(#{sudo})将rc.d包装器注入rc.d.或者你不是rc.d包装器给你bash脚本,只需从rc.d-local调用bash脚本。您可以使用sed附加到rc.d-local。
答案 1 :(得分:0)
我最终将延迟的作业相关逻辑移动到它自己的脚本,该脚本接受启动/停止,并从capistrano委托给这个脚本。这意味着我可以将此脚本添加到我的rc.local。