1

我正在尝试使用工头从我的 Rails 应用程序中导出新贵脚本,但我不想使用 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 用户安装有关。有没有办法调试这个?谢谢。

4

1 回答 1

1

你可以设置

console log

在您的新贵脚本中,输出应显示在日志文件中。

根据最近的新贵食谱,会话作业输出将出现在$XDG_CACHE_HOME/upstart/<jobname>,(应该回退到$HOME/.cache)。

或者,您可以使用--logdirupstart 命令的选项告诉它在其他地方登录。

由于您的问题是几个月前的问题,您可能已经意识到使用$HOME/.init“用户”作业已被弃用,有利于$XDG_CONFIG_HOME/upstart(或$HOME/.config/upstart/)。看起来最新的 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
于 2013-11-14T02:07:35.980 回答