【问题标题】:Foreman export upstart scripts as userjob on ubuntu 12.04工头在 ubuntu 12.04 上将新贵脚本导出为 userjob
【发布时间】:2013-08-23 03:21:21
【问题描述】:
我正在尝试使用工头从我的 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 用户安装有关。有没有办法调试这个?谢谢。
【问题讨论】:
标签:
ruby-on-rails
ruby
ubuntu
foreman
upstart
【解决方案1】:
你可以设置
console log
在您的新贵脚本中,输出应显示在日志文件中。
根据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