2012-05-04 5 views
0

Ubuntu 12.04サーバーにnginxをunicornと一緒にインストールしました。すべてが動作し、サイト、db、ユニコーン...良い。だから私は再起動後、nginxとunicornが起動することを確認しようとしています。私はunicornプロセスのためにupdate-rc.dを設定しましたが、再起動後に起動/動作しません。私が実行した場合Ubuntu 12.04: 'unicorn_init.sh start'は動作しますが、 'service unicorn_init start'は無効です

:私はそれは言い換えれば「/etc/init.d/unicorn_init」とは対照的に、「サービス」のUbuntuの使用とは何か

があると疑われる

$ /etc/init.d/unicorn_init start 

ユニコーンはうまく始まり、エラーはありません。

私が実行した場合:

$ service unicorn_init start 

それが失敗したとユニコーンが起動しません。

パスとは関係があると思います。アイブ氏は、PATHにGEM_PATH、& GEM_HOMEを環境パスを追加しましたが、私は/usr/local/rvm/gems/ruby-1.9.3-p194/bin/unicorn実行する場合、私はまだ、同じ結果

1を受け取り、Iエラーを取得:

usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find unicorn (>= 0) amongst[bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError) 
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec' 
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem' 
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/unicorn:18:in `<main>' 

2、私はユニコーンの/ var /レール/ウェブアプリ/ binに/を実行すると、私はエラーを取得:

/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- bundler/setup (LoadError) 
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /var/rails/web-app/bin/unicorn:14:in `<main>' 

任意の助けをいただければ幸いです!おかげ

答えて

3

あなたはすべての必要な環境変数が含まれますユニコーンラッパースクリプトを使用する必要がありますが:

rvm wrapper 1.9.3 ruby-1.9.3 unicorn 

これはinitスクリプトでは、この代わりにちょうどユニコーンのruby-1.9.3_unicorn使用を生成します。あなたが持つラッパーの詳細を見つけることができます

作業がバンドラ介して行われる場合には
rvm wrapper 

(capitranoのような)、その後bundleのラッパー生成:

rvm wrapper 1.9.3 ruby-1.9.3 bundle 

をフルに使いますこのコマンドで表示されるラッパーのパス:

which ruby-1.9.3_bundle 
+0

YES!ありがとうございました。私は、ロードパスを /usr/local/rvm/bin/ruby-1.9に変更しました。3_unicorn と $ service unicorn_init start が正常に動作しました。再起動を試み、ユニコーンが正常に開始されました。本当にありがとう! –

0

Eight、Eric、私は自分でそれをやって、開発モードで走っても問題ありません。 この例を正しく使用することはできませんが、それはまだ非常に粗いです。

マイconfig/unicorn_initファイル:

TIMEOUT=${TIMEOUT-60} 
PID=$APP_ROOT/tmp/pids/unicorn.pid 
CMD="PATH=$_PATH GEM_HOME=$_GEM_HOME GEM_PATH=$_GEM_PATH $APP_ROOT/.bundle/bin/unicorn -D -c $APP_ROOT/config/unicorn.rb" 

set -e 
action="$1" 
set -u 

old_pid="$PID.oldbin" 

cd $APP_ROOT || exit 1 

sig() { 
    test -s "$PID" && kill -$1 `cat $PID` 
} 

oldsig() { 
    test -s $old_pid && kill -$1 `cat $old_pid` 
} 

case $action in 
start) 
    sig 0 && echo >&2 "Already running" && exit 0 
    su -c "$CMD" - $APP_USER 
    ;; 
stop) 
    sig QUIT && exit 0 
    echo >&2 "Not running" 
    ;; 
force-stop) 
    sig TERM && exit 0 
    echo >&2 "Not running" 
    ;; 
restart|reload) 
    sig HUP && echo reloaded OK && exit 0 
    echo >&2 "Couldn't reload, starting '$CMD' instead" 
    su -c "$CMD" - $APP_USER 
    ;; 
upgrade) 
    if sig USR2 && sleep 2 && sig 0 && oldsig QUIT 
    then 
     n=$TIMEOUT 
     while test -s $old_pid && test $n -ge 0 
     do 
      printf '.' && sleep 1 && n=$(($n - 1)) 
     done 
     echo 

     if test $n -lt 0 && test -s $old_pid 
     then 
      echo >&2 "$old_pid still exists after $TIMEOUT seconds" 
      exit 1 
     fi 
     exit 0 
    fi 
    echo >&2 "Couldn't upgrade, starting '$CMD' instead" 
    su -c "$CMD" - $APP_USER 
    ;; 
reopen-logs) 
    sig USR1 
    ;; 
*) 
    echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>" 
    exit 1 
    ;; 
esac 
echo "#\!/bin/bash\n_PATH=$PATH\n_GEM_HOME=$GEM_HOME\n_GEM_PATH=$GEM_PATH\nAPP_ROOT=$(pwd)\nAPP_USER=$USER\n$(cat config/unicorn_init)" > config/unicorn_init.sh 
chmod +x config/unicorn_init.sh 
関連する問題