我目前正在尝试使用 god 监视总共三个 Rails/Rack 应用程序的各种进程/守护进程。监控效果很好,问题是我无法将上帝配置为在重新启动后自动启动所有进程。
我的设置:我正在使用 Centos 和 Plesk 运行 Linux VPS。我有一个非 root linux 用户“部署者”,用于部署和运行三个 Rails/Rack 应用程序。两个应用程序正在使用乘客 apache 模块运行,第三个应用程序使用瘦服务器(这是必要的,因为该应用程序不能与 apache 一起使用)。使用乘客的两个 Rails 应用程序有额外的 rake 任务在后台运行 - 这些和瘦服务器由上帝监控。
神 gem 在所有三个应用程序的 Gem 文件中指定。
在每个 deploy.rb 文件中,我都有一个看起来像的方法
namespace :misc do
desc "restart woekers using gog; restart webserver"
task :restart, roles: [:web, :resque] do
run "touch #{current_path}/tmp/restart.txt"
god.all.start
god.all.reload
god.all.terminate
god.all.start
end
end
重新启动服务器后,如果我手动为所有三个应用程序运行 cap misc:restart,所有进程都会启动并正确监控。
到目前为止,每次尝试在启动时自动启动 God 并启动所有必要的进程都失败了。我尝试了很多不同的东西,但没有任何效果。到目前为止,我的方法是使用 @reboot 创建一个运行以下三个脚本的 cron 任务:
#!/bin/bash -l
cd /path/to/app/ && bundle exec god -c /path/to/app/config/god/resque.god && bundle exec god load /path/to/app/config/god/resque.god && bundle exec god start resque
这对第一个应用程序非常有用:上帝和所有进程都已启动。当为第二个应用程序执行脚本时(当然使用正确的路径),上帝无法启动任务。我启用了登录上帝,错误消息(在机架应用程序的情况下)是“瘦:找不到命令”。当我首先启动 Rack Application 时,thin 已正确启动,并且未找到其他任务的命令。
我不明白我的配置有什么问题。如上所示,我在上帝调用之前添加了 bundle exec 命令(因此这些命令应该在其各自应用程序的环境中执行) - 然而,它只是不起作用。
如果有人能帮助我让上帝自动启动,我将不胜感激。
如果您需要更多信息,请随时询问!
提前致谢!