簡體   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