我正在尝试使用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用户安装有关。有没有办法调试这个?感谢。
答案 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