目前我真的没有必要惹上乘客或卡皮斯特拉诺。 我只是想在端口3000启动时运行rails。我试图复制节点的这个教程,尽可能多地运行rails:
我在/etc/init.d/中有一个railsup脚本,如下所示:
#!/bin/sh export PATH=$PATH:/usr/local/bin case "$1" in start) cd /root/rails_app; /usr/local/rvm/gems/ruby-2.0.0-p247/bin/rails server -d -p 3005 ;; # starting other stuff *)
我也把它包含在update-rc.d
我得到它的工作,但只有我手动运行脚本 – 它似乎并没有启动时运行。 ../bin/rails在启动时是不可用的吗?
我想有一些关于ruby path \ rvm \ rails的东西,我不知道? 有没有办法使用crontab的@reboot呢?
init.d 如果有新的System-V并行系统,则必须在脚本的顶部添加一个INIT INFO部分。
看一下/etc/init.d/README并尝试在脚本的顶部添加它:
#! /bin/sh ### BEGIN INIT INFO # Provides: rails # Required-Start: $local_fs $remote_fs # Required-Stop: # X-Start-Before: rmnologin # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Start Rails on port 3000 ### END INIT INFO
cron (并作为你自己的用户运行) 您可以在每次重新启动时使用特定的cron语法运行守护进程 :
crontab -l | sed '$a@reboot /usr/bin/rail-or-other-bin -arg1 -arg2 -port 3000' | crontab
警告运行这个命令( crontab没有参数和pipe道标准input)会改变你的crontab ! 看到man crontab !
…然后在没有最后一个crontab情况下试试这个:
crontab -l | sed '$a@reboot /usr/bin/rail-or-other-bin -arg1 -arg2 -port 3000'
这样做的好处是,守护进程运行在用户空间,运行错误将作为邮件以正常的方式发送给你。
脚本是否运行? 我会尝试添加:
echo RAILSUP >/tmp/railsup.log
如果真的是这样,你是否检查了日志,看看错误是什么时候试图启动运行? 就个人而言,我会在strace下运行它,并将所有操作logging到一个文件中,以便在您login后进行检查。这可能会提供一些线索。
它真的是,你有没有检查日志,看看错误是什么时候试图启动运行? 就个人而言,我会在strace下运行它,并将所有操作logging到一个文件中,以便在您login后进行检查。这可能会提供一些线索。