[英]ROR, Redis, Resque, God & Cron on Ubuntu Server - Boot
在我的ruby应用程序中,我已经做了几个上帝照顾的工作。 但是,当服务器重新启动时,作业将停止。 我想避免这种情况,所以我在我的服务器上制作了这个脚本。 看起来像这样。
my_app.sh
#!/bin/bash
# god tasks
#
case $1 in
start)
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god start
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque.god
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque_schedule.god
;;
esac
exit 0
如果我手动登录并写入
“/etc/init.d/my_app start”
它给了我
Sending 'start' command
No matching task or group
Sending 'load' command with action 'leave'
The following tasks were affected:
resque-0
resque-1
resque-2
resque-3
resque-4
Sending 'load' command with action 'leave'
The following tasks were affected:
resque_scheduler
一切正常,它做我想做的事,即工作。
我已经尝试了几种方法在启动时启动此脚本(Linux 10.4.4 LTS),rc.local,rc-default,现在我的最新尝试是crontab。
该脚本必须在我的用户下运行而不是root用户(如果我在root下运行它,则无法找到ruby安装)。
因此我在我的用户帐户下配置了crontab:
@reboot /etc/init.d/my_app start
可悲的是,这不起作用......我不是我做错了。 这可能不是必要的。 我的意思是,在启动ruby应用程序时,你不应该为每个自动启用吗?
我在这台服务器上使用乘客,我不知道这是否与它有关?
下面的解决方案是我对sh所做的更改:
my_app.sh
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god start"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque.god"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque_schedule.god"
忘记cronjob。
CentOS的/ Fedora的:
sudo chmod a+x /etc/init.d/my_app
sudo chkconfig --add my_app
sudo chkconfig my_app on
Ubuntu的/ Debian的:
sudo update-rc.d my_app defaults
这两个符号链接脚本/etc/rc1.d
, /etc/rc2.d
等,使脚本可在引导那些运行级别运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.