Вопрос по ruby-on-rails – Не удается запустить тонкий сервер как службу, RubyGems: не удалось найти тонкий сервер

5

Я использовал следующие инструкции для установки и настройки Thin-сервера в качестве службы на Ubuntu 10.04.4 с Rails 3.2.3:

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

Я также проверил существование ** / bin / thin везде, где на него ссылаются

Я попытался переустановить gem с помощью «gem uninstall thin», «gem install thin». безуспешно

Кто-нибудь испытывал это раньше? Я нашел только еще один случай этой проблемы: Не удается перезапустить тонкий через удаленный компьютер

Эта проблема, кажется, была только из-за ssh, хотя я даже не могу запустить тонкий сервис локально

Спасибо

Пытаясь заставить его запускаться в качестве службы при запуске, я должен создать sh-файл, который запускается thin -d, и поместить его куда-нибудь для запуска при запуске? samJL
Руководство, которое вы читаете, предназначено для старой версии Ubuntu, 10.04 изменило способ работы сценариев инициализации. Кроме того, почему вы хотите работать, используя/etc/init.d? вместо худого? CuriousMind

Ваш Ответ

2   ответа
2

Кажется, что каждое загрузочное задание загружается своей оболочкой. Итак, попробуйте загрузить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 wrapper. Кроме того, прочитайтеРекомендации по развертыванию rvm

5

Поскольку из вашей трассировки стека видно, что вы используете rvm, и вы используете thin, установленный в качестве гема, вам нужно использовать оболочки rvm для работы сервиса. Сначала удалите сервис и переустановите егоrvmsudo thin install вместоsudo thin install, Вы также должны использоватьrvmsudo thin config при создании файла конфигурации, а также.

Чтобы создать обертку,

rvm wrapper <your_rvm_ruby_version>@<your_rvm_gemset_in_use> bootup thin

вы можете найти имена с помощьюrvm list а такжеrvm 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

надеюсь, это поможет

Похожие вопросы