1

Ubuntu12.04サーバーにユニコーン付きのnginxをインストールしました。サイト、データベース、ユニコーンなど、すべてが機能します。だから私は再起動後にnginxとユニコーンが起動することを確認しようとしています。ユニコーンプロセスにupdate-rc.dを設定しましたが、再起動後に起動/動作しません。「/etc/init.d/unicorn_init」ではなく、ubuntuの「サービス」の使用と関係があるのではないかと思います。

言い換えると:

私が実行した場合:

$ /etc/init.d/unicorn_init start

ユニコーンは問題なく起動し、エラーは発生しません。

私が実行した場合:

$ service unicorn_init start

失敗し、ユニコーンは起動しません。

パスと関係があると思います。環境PATHSをPATH、GEM_PATH、およびGEM_HOMEに追加しましたが、それでも同じ結果が得られます

1、/ usr / local / rvm / gems / ruby​​-1.9.3-p194 / bin / unicornを実行すると、エラーが発生します。

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 / rails / web-app / bin / unicornを実行すると、エラーが発生します。

/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>'

どんな助けでも大歓迎です!ありがとう

4

3 に答える 3

3

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

rvm wrapper 1.9.3 ruby-1.9.3 unicorn

ruby-1.9.3_unicorninit スクリプトで unicorn だけでなく、これを使用して生成されます。

ラッパーの詳細については、次を参照してください。

rvm wrapper

作業がバンドラー (capitrano など) を介して行われる場合は、次のラッパーを生成しますbundle

rvm wrapper 1.9.3 ruby-1.9.3 bundle

次のコマンドで表示されるラッパーへのフル パスを使用します。

which ruby-1.9.3_bundle
于 2012-05-04T19:19:15.237 に答える
0

あなたが言った通りです、エリック、私は自分でそれを行い、開発モードで実行しても問題ありません。この例は適切に使用できません。まだ非常に粗雑です。

私の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
于 2013-01-27T20:16:39.350 に答える
0

これは、6 年前のこの質問/回答の更新です。RVM 1.29.4およびUbuntu 16.04以降。mpapis からの回答は、古いバージョンの ubuntu および rvm に対しても有効です。

RVM 1.29.4の時点で、上記の回答vm wrapper 1.9.3 ruby-1.9.3 unicornは機能しなくなり、必要もなくなりました。

ラッパーは既に作成されており、必要に応じて適切な gemset と共にその場所で見つけることができます。

次のディレクトリの場所を調べます/usr/local/rvm/wrappers。そこに、希望する Ruby バージョンと gemset へのリンクがあります。そのリンクをたどると、すべてのラッパーが表示されます:unicorn, unicorn_rails, god, puma, thin, thor, ...など

例:

TIMEOUT=${TIMEOUT-60}

APP_ROOT=/var/rails/com.domain.site/current
PID=$APP_ROOT/tmp/pids/unicorn.pid
DAEMON=/usr/local/rvm/wrappers/ruby-2.5.1@app/unicorn

CMD="$DAEMON -D -c $APP_ROOT/config/unicorn.rb -E production"

または、ダイレクト パスを使用することもできます。

DAEMON=/usr/local/rvm/gems/ruby-2.5.1@app/wrappers/unicorn

わかります(^_^)

于 2018-07-08T19:36:12.533 に答える