2012-04-30 3 views
5

ich die folgenden Anweisungen verwendet, um den Thin Server als Dienst auf Ubuntu 10.04.4 mit Rails 3.2.3 zu installieren und konfigurieren:Kann nicht dünn Server als Dienst, RubyGems starten: nicht dünn finden kann

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

Thin Server funktioniert es aus der Anwendung root ausgeführt wird, ‚Thin start‘

jedoch verwenden, wenn ich versuche, den Dienst mit einem dieser Befehle auszuführen:

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

bekomme ich folgende Fehlermeldung:

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

Dies scheint nicht ein Problem mit PATH zu sein ‚die dünn‘ korrekt zurückgibt:

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

Ich habe auch die Existenz von ** überprüft/bin/dünn, wo es

verwiesen hat ich habe versucht, das Juwel der Neuinstallation ‚Juwel deinstallieren dünn‘ verwenden, ohne Erfolg ‚gem dünn installieren‘

hat jemand experie nced dies vorher? Ich fand nur eine andere Instanz dieses Problem: Cannot restart thin via remote machine

Das Problem scheint nur über ssh zu haben, während ich nicht einmal die dünne Dienst gestartet lokal bekommen

Dank

+0

Der Leitfaden hilft Ihnen folgen ist für alte Version von Ubuntu, hat die Art und Weise 10.04 Init-Skripte arbeiten geändert hat. Außerdem, warum willst du dünn mit '/ etc/init.d' laufen? statt dünn -d? – CuriousMind

+0

Versuchen, es als einen Dienst beim Start auszuführen, sollte ich eine SH-Datei erstellen, die Thin -d ausgeführt wird und es irgendwo zum Starten beim Start legen? – samJL

Antwort

2

Es scheint, dass Jeder Startjob wird mit einer eigenen Shell geladen. Also, versuchen Sie rvm Laden, bevor Sie versuchen, dünn zu starten:

#! /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 

Ort, um diese in /etc/init.d/thin_service & Lauf

$ sudo update-rc.d thin_service defaults 

Schließlich können Sie testen, indem Sie einfach durch Eingabe sudo start thin_service & sudo stop start_thin statt neu zu starten. Wenn dies immer noch nicht funktioniert, versuchen Sie RailsGems-Bundler und Rvm-Wrapper. Lesen Sie auch rvm's Deployment Best Practices

5

Da es scheint, von Ihrem Stacktrace verwenden Sie Rvm, und Sie verwenden Thin installiert als ein Juwel, müssen Sie Rvm Wrapper für den Dienst zu arbeiten. Entfernen Sie zuerst das Service-Ende und installieren Sie es erneut rvmsudo thin install anstelle von sudo thin install. Sie sollten auch rvmsudo thin config beim Erstellen der Konfigurationsdatei verwenden.

Um jeweils einen Wrapper,

rvm wrapper <your_rvm_ruby_version>@<your_rvm_gemset_in_use> bootup thin 

können Sie die Namen finden, indem Sie rvm list und rvm gemset Liste createa. Der Wrapper wird den Namen bootup_thin haben, den Sie bestätigen können, dass er das richtige rvm verwendet, durch das bootup_thin. Sie können ihm beim Erstellen den Namen geben, den Sie möchten.Dann müssen Sie dünn Skript bearbeiten, indem

sudo nano /etc/init.d/thin 

Ändern Sie den Original-Dämons

DAEMON=location_of_bootup_thin 

die das Ergebnis which bootup_thin sein sollte. Dann können Sie den Dienst starten.

sudo service thin start 

Ich hoffe, das