Бог запустит старт дает "Сервер недоступен"

У меня проблемы с выяснением, как заставить Бога перезапустить Resque.

У меня есть стек Rails 3.2.2 на срезе Ubuntu 10.04.3 LTS Linode. Работает система Ruby 1.9.3-p194 (без RVM).

На Боге есть служба init.d /etc/init.d/god-service который содержит:

CONF_DIR=/etc/god
GOD_BIN=/var/www/myapp.com/shared/bundle/ruby/1.9.1/bin/god
RUBY_BIN=/usr/local/bin/ruby
RETVAL=0

# Go no further if config directory is missing.
[ -d "$CONF_DIR" ] || exit 0

case "$1" in
    start)
        # Create pid directory
        $RUBY_BIN $GOD_BIN -c $CONF_DIR/master.conf
        RETVAL=$?
  ;;
    stop)
        $RUBY_BIN $GOD_BIN terminate
        RETVAL=$?
  ;;
    restart)
        $RUBY_BIN $GOD_BIN terminate
        $RUBY_BIN $GOD_BIN -c $CONF_DIR/master.conf
        RETVAL=$?
  ;;
    status)
        $RUBY_BIN $GOD_BIN status
        RETVAL=$?
  ;;
    *)
        echo "Usage: god {start|stop|restart|status}"
        exit 1
  ;;
esac

exit $RETVAL

master.conf в приведенном выше содержится:

load "/var/www/myapp.com/current/config/resque.god"

resque.god в приведенном выше содержится:

APP_ROOT  = "/var/www/myapp.com/current"
God.log_file  = "/var/www/myapp.com/shared/log/god.log"


God.watch do |w|
  w.name = 'resque'
  w.interval = 30.seconds
  w.dir = File.expand_path(File.join(File.dirname(__FILE__),'..'))
  w.start = "RAILS_ENV=production bundle exec rake resque:work QUEUE=*"
  w.uid = "deploy"
  w.gid = "deploy"

  w.start_grace = 10.seconds
  w.log = File.expand_path(File.join(File.dirname(__FILE__), '..','log','resque-worker.log'))

  # restart if memory gets too high
  w.transition(:up, :restart) do |on|
    on.condition(:memory_usage) do |c|
      c.above = 200.megabytes
      c.times = 2
    end
  end

  # determine the state on startup
  w.transition(:init, { true => :up, false => :start }) do |on|
    on.condition(:process_running) do |c|
      c.running = true
    end
  end

  # determine when process has finished starting
  w.transition([:start, :restart], :up) do |on|
    on.condition(:process_running) do |c|
      c.running = true
      c.interval = 5.seconds
    end

    # failsafe
    on.condition(:tries) do |c|
      c.times = 5
      c.transition = :start
      c.interval = 5.seconds
    end
  end

  # start if process is not running
  w.transition(:up, :start) do |on|
    on.condition(:process_running) do |c|
      c.running = false
    end
  end
end

В deploy.rb У меня есть задача перезагрузки:

task :reload_god_config do
  run "god stop resque"
  run "god load #{File.join(deploy_to, 'current', 'config', 'resque.god')}"
  run "god start resque"
end

Проблема заключается в том, развернуть ли я или запустить god (stop|start|restart|status) resque вручную я получаю сообщение об ошибке:

The server is not available (or you do not have permissions to access it)

Я пытался установить god к системным драгоценным камням и указывая на него в god-service:

GOD_BIN=/usr/local/bin/god

но god start rescue выдает ту же ошибку.

Тем не менее, я могу запустить службу, выполнив:

sudo /etc/init.d/god-service start

Так что, вероятно, проблема с разрешениями, вероятно, связана с тем, что служба init.d принадлежит root и бог бежит из связки deploy пользователь.

Как лучше обойти эту проблему?

2 ответа

Вы работаете с сервисом богов как другой пользователь (есть хорошие шансы root).

Также проверьте: Бог не работает: сервер недоступен (или у вас нет прав доступа к нему)

Сначала вы проверяете, установили ли вы god на свой компьютер, используя команду "god --version". Если он доступен, просто попробуйте запустить какой-нибудь бог-скрипт с опцией -D. Например, "god -c sample.god -D" он выдаст вам сообщения об ошибках в стандартном выводе на вашу консоль, где именно и есть проблема. Я также получал ту же ошибку, когда пытался запустить команду без опции "-D". Затем, когда я попробовал использовать режим "-D", мне сказали, что у меня возникла проблема с разрешением на запись в папку, и я смог найти ее и исправить.

Хорошо, это проблема с вашими конфигурационными файлами, проверьте их все + включенные где-то, где это не удается, выдает вам эту ошибку. Я проверил мой и исправил некоторые ошибки, после чего он работал отлично!

Другие вопросы по тегам