2012-04-30 57 views
5

我用下面的說明來安裝和使用Rails 3.2.3配置瘦服務器在Ubuntu 10.04.4服務:無法啓動瘦服務器的服務,RubyGems的:找不到薄

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的問題,「這薄」正確返回:

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

我也驗證了存在** /斌/薄無論它的引用

我已經嘗試使用「寶石卸載薄」重新安裝寶石,「寶石安裝薄」沒有成功

有沒有人的經驗用之前呢?我才發現這個問題的一個另一個實例: Cannot restart thin via remote machine

這個問題似乎一直只是通過ssh,而我甚至不能薄服務本地

感謝

+0

您遵循該指南是舊版本的Ubuntu,10.04已經改變了方式init腳本工作。另外,你爲什麼想用'/ etc/init.d'來運行瘦?而不是稀薄的? – CuriousMind

+0

試圖讓它在啓動時作爲服務運行,我應該創建一個運行thin -d的sh文件並將其放在啓動時運行的某個位置? – samJL

回答

2

似乎開始每個啓動作業都加載了自己的shell。所以,試着嘗試啓動前薄裝rvm

#! /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包裝器。另外,請仔細閱讀rvm's Deployment Best Practices

5

由於您的堆棧跟蹤看來您使用的是rvm,並且您正在使用精簡版作爲gem,所以您需要使用rvm包裝器才能使該服務正常工作。首先刪除服務端重新安裝它rvmsudo thin install而不是sudo thin install。您也應該在創建配置文件時使用rvmsudo thin config

要createa包裝,

rvm wrapper <your_rvm_ruby_version>@<your_rvm_gemset_in_use> bootup thin 

你可以找到分別使用rvm listrvm gemset列表中的名稱。包裝將具有名稱bootup_thin,您可以確認它使用的是正確的rvm,其中bootup_thin。你可以在創建它時給它任何你想要的名字。然後,你需要通過

sudo nano /etc/init.d/thin 

改變原有的DAEMON編輯薄腳本

DAEMON=location_of_bootup_thin 

應的which bootup_thin結果。然後你可以開始服務。

sudo service thin start 

我希望這有助於