我在apache下部署了我的rails站点。 apache作为服务运行。现在我在那里添加了delayed_job并且工作正常。
现在我想和apache一起启动工作人员,例如,重新启动服务器后,我的站点和工作人员都准备好了,所以我不必登录并输入“sudo RAILS_ENV = production script / delayed_job -n 2开始“。
另一个问题是每当我想要启动delayed_job时我都要使用“sudo”......
知道如何避免这两个问题吗?
感谢您的帮助。
答案 0 :(得分:3)
使用whenever gem及其' every:reboot'功能。在schedule.rb中:
environment = ENV['RAILS_ENV'] || 'production'
every :reboot do
command "cd #{path} && #{environment_variable}=#{environment} bin/delayed_job --pool=queue1:2, --pool=queue2,queue3:1 restart"
end
答案 1 :(得分:1)
你能创建一个shell脚本来执行你需要的命令吗?
#!/bin/sh
# stop delayed job
# restart apache
apachectl restart
# start delayed job
sudo RAILS_ENV=production script/delayed_job -n 2 start
答案 2 :(得分:1)
听起来你想在启动硬件后apache启动后自动启动delayed_job。如果是这种情况,您需要在/etc/init.d
或/etc/rc.d/init.d
中编写初始化脚本(取决于您的系统)。这个页面给出了一个很好的入门:
http://www.philchen.com/2007/06/04/quick-and-dirty-how-to-write-and-init-script