繁体   English   中英

使用RVM配置独角兽服务脚本

[英]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

那么,如何确保这些变量始终指向正确的红宝石?

问题2

在我的捆绑包中,我使用的是机架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了所有这些rvmrubies安装后,人们可以解析的输出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_HOMEGEM_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM