使用正确的用户环境变量在启动时启动命令

使用正确的用户环境变量在启动时启动命令

我正在尝试创建一个启动脚本,它将在我的 ubuntu 12.04 服务器启动时运行此命令:

bundle exec thin -R config.ru start -p 3030

当我以普通用户身份运行它时,它工作正常,瘦 Web 服务器启动,我可以访问我需要的页面。下面是我尝试使用的启动脚本 /etc/init/thin.conf:

description "thin"
version "1.0"
author "Me"

env LANG=en_US.UTF-8
env APP_HOME=/home/username/onlinetraining_dashboard
respawn
start on runlevel [23]
script
cd $APP_HOME
sudo -u username /home/username/.rvm/gems/ruby-1.9.3-p448@global/bin/bundle exec thin -R config.ru start -p 3030 > $APP_HOME/log/thin.log 2>&1
end script

然后我将输入“sudo start thin”来运行脚本,它应该在启动时启动。

当我启动服务时,日志文件中出现此错误:

/usr/bin/env: ruby_executable_hooks: No such file or directory

我正在使用带有 RVM 1.9.3 的 ruby​​。

这是我的 .bash_profile,我假设它允许我运行命令 bundle exec thin -R config.ru start -p 3030 而不会出现错误:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

我也在脚本中尝试过这个,但没有成功。

sudo -u username bundle exec thin -R config.ru start -p 3030 > $APP_HOME/log/thin.log 2>&1

谢谢您的帮助。

答案1

您应该使用包装器,您可以在这里阅读有关它们的更多信息:http://rvm.io/integration/init-d

相关内容