5

次の手順を使用して、Rails 3.2.3 を使用する Ubuntu 10.04.4 にシン サーバーをサービスとしてインストールして構成しました。

http://articles.slicehost.com/2008/5/6/ubuntu-hardy-thin-web-server-for-ruby

シン サーバーは、「シン スタート」を使用してアプリケーション ルートから実行すると正常に動作します。

ただし、これらのコマンドのいずれかを使用してサービスを実行しようとすると:

service thin start
sudo service thin start
/etc/init.d/thin start
sudo /etc/init.d/thin start

次のエラーが表示されます。

/home/myuser/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find thin (>= 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 /home/myuser/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
    from /home/myuser/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
    from /home/myuser/.rvm/gems/ruby-1.9.3-p125/bin/thin:18:in `<main>'

これは PATH の問題ではないようです。「which thin」は正しく次を返します。

home/myuser/.rvm/gems/ruby-1.9.3-p125/bin/thin

**/bin/thin が参照されている場所に存在することも確認しました

「gem uninstall thin」、「gem install thin」を使用して gem を再インストールしようとしましたが、成功しませんでした

誰もこれを経験したことがありますか?この問題の別のインスタンスが 1 つだけ見つかりました: リモート マシン経由でシンを再起動できません

その問題は ssh 経由でのみ発生したようですが、シンサービスをローカルで開始することさえできません

ありがとう

4

2 に答える 2

5

スタックトレースから、rvm を使用しているように見え、gem としてインストールされたシンを使用しているため、サービスを機能させるには rvm ラッパーを使用する必要があります。rvmsudo thin install最初にサービス エンドを削除し、代わりに再インストールしsudo thin installます。rvmsudo thin config構成ファイルの作成中にも使用する必要があります。

ラッパーを作成するには、

rvm wrapper <your_rvm_ruby_version>@<your_rvm_gemset_in_use> bootup thin

rvm listrvm gemsetlist をそれぞれ使用して名前を見つけることができます。ラッパーにはbootup_thin、正しい rvm を使用していることを確認できる名前が付けられますbootup_thin。作成中に任意の名前を付けることができます。次に、シンスクリプトを編集する必要があります

sudo nano /etc/init.d/thin

元の DAEMON を次のように変更します

DAEMON=location_of_bootup_thin 

の結果である必要がありwhich bootup_thinます。その後、サービスを開始できます。

sudo service thin start

これが役立つことを願っています

于 2012-05-01T14:16:51.577 に答える
2

各起動ジョブが独自のシェルをロードしているようです。rvmそのため、 thin を開始する前にロードしてみてください:

#! /bin/sh
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then

  # First try to load from a user install
  source "$HOME/.rvm/scripts/rvm"

elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then

  # Then try to load from a root install
  source "/usr/local/rvm/scripts/rvm"

else

  printf "ERROR: An RVM installation was not found.\n"

fi

rvm use 1.9.3
cd /path/to/your/application/code
bundle exec thin -d

これを/etc/init.d/thin_service入れて実行

$ sudo update-rc.d  thin_service defaults

最後に、再起動する代わりにsudo start thin_service&と入力するだけでテストできます。sudo stop start_thinそれでもうまくいかない場合は、railsgems-bundler と rvm wrapper を試してください。また、rvm の Deployment Best Practicesもお読みください。

于 2012-04-30T22:31:26.307 に答える