[英]Configure unicorn service script using RVM
在我的/etc/init.d/unicorn
启动脚本中,我具有如下硬编码路径:
export GEM_HOME=/usr/local/rvm/gems/ruby-2.2.0-dev
export GEM_PATH=/usr/local/rvm/gems/ruby-2.2.0-dev:/usr/local/rvm/gems/ruby-2.2.0-dev/gems:/usr/local/rvm/gems/ruby-2.2.0-dev@global/gems
DAEMON=/usr/local/rvm/gems/ruby-2.2.0-dev/bin/unicorn
UNICORN_OPTS="-D -c /home/unicorn/unicorn.conf -E production"
我正在使用RVM,当我更改红宝石版本时,当前的红宝石应用于独角兽。
那么,如何确保这些变量始终指向正确的红宝石?
在我的捆绑包中,我使用的是机架1.5.5。 现在,在生产服务器上,我必须将unicorn
gem作为“独立宝石”安装,以便可以使用以下命令启动服务器:
service unicorn start
现在, unicorn
宝石安装了rack 1.6.x
,现在我的Rails应用程序崩溃了,因为机架已经加载。 现在在本地,我将使用bundle
执行它,但是当我使用此/etc/inid.d
脚本时该怎么做。
服务器启动的部分如下所示,但我不知道如何在其中“注入”捆绑程序调用,或者这根本不是一个好习惯:
# ...
log_daemon_msg "Starting $DESC" $NAME || true
if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $UNICORN_OPTS; then
配置: /home/unicorn/unicorn.conf
listen "127.0.0.1:8080"
worker_processes 2
user "rails"
working_directory "/home/myapp"
pid "/home/unicorn/pids/unicorn.pid"
stderr_path "/home/unicorn/log/unicorn.log"
stdout_path "/home/unicorn/log/unicorn.log"
假设rubyuser
了所有这些rvm
和rubies
安装后,人们可以解析的输出rvm info
,该用户运行后:
`sudo -H -u rubyuser bash -c '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" && rvm info | grep "^ \+GEM_"| sed -e "s/^ \+/export /" -e "s/: \+/=/"'`
上面的命令将设置变量GEM_HOME
和GEM_PATH
。 要仅输出它们,请删除此命令周围的反引号。
对于本地安装的rvm,它甚至更简单:
[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm" && rvm info | grep "^ \+GEM_"| sed -e "s/^ \+/export /" -e "s/: \+/=/"
# export GEM_HOME="/usr/local/rvm/gems/ruby-2.1.1"
# export GEM_PATH="/usr/local/rvm/gems/ruby-2.1.1:/usr/local/rvm/gems/ruby-2.1.1@global"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.