Foreman在ubuntu 12.04上将upstart脚本导出为userjob

时间:2013-08-23 03:21:21

标签: ruby-on-rails ruby ubuntu foreman upstart

我正在尝试使用foreman从我的rails应用程序导出upstart脚本,但我不想使用sudo来做到这一点。 我看到我正在使用的Ubuntu 12.04支持userjob http://upstart.ubuntu.com/cookbook/#user-job所以我启用了它。它已成功启用我放置在~/.init的测试脚本,所以我尝试bundle exec foreman export upstart ~/.init -a myapp -l log -u myuser并将所有我的工头任务导出到〜/ .init。 现在,当我运行start myapp时,它的工作正常,但我的瘦实例根本无法启动,我无法弄清楚原因。也许它与使用RVM用户安装有关。有没有办法调试这个?感谢。

1 个答案:

答案 0 :(得分:1)

您可以设置

console log

在你的upstart脚本中,输出应该以log-fie显示。

根据recen upstart cookbook,会话作业输出将显示在$XDG_CACHE_HOME/upstart/<jobname>中,(should可以回退到$HOME/.cache)。

或者,您可以使用upstart命令的--logdir选项告诉它在其他地方进行记录。

由于您的问题已有几个月的历史,因此您可能已经意识到,不推荐使用$HOME/.init用于“用户”作业而使用$XDG_CONFIG_HOME/upstart(或$HOME/.config/upstart/)。看起来latest Foreman没有给出好的默认值,尽管它仍然可能。

至于你的脚本无法启动的原因,需要考虑的一些事情是

  • 您是否以正确的用户身份运行? setuid <user>
  • 该用户是否可以在此环境中访问bundle

我不确定RVM,但我在chruby取得了一些成功。这是一个例子(记录):


description "A Rails application" 
author "Me (me@example.com)"

start on runlevel [2345] 
stop on runlevel [016] 

respawn 

setuid appuser 
setgid appuser 

console output 

chdir /var/www/app/current 
exec chruby-exec 2.0 -- bundle exec unicorn_rails -E production -P 5000