Невозможно запустить Единорога с помощью Bluepill (или Бога) - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь использовать Bluepill для перезапуска Unicorn на случай, если он выйдет из строя и не сможет заставить меня работать. Запуск Unicorn вручную работает отлично.

Я даю команды Bluepill следующим образом: bundle exec bluepill --no-privileged <some command>

Вот что пишет журнал Bluepill при попытке запустить Unicorn:

WARN -- : [myapp:unicorn] Executing start command: /etc/init.d/unicorn_myapp start
WARN -- : [myapp:unicorn] Start command execution returned non-zero exit code:
WARN -- : [myapp:unicorn] {:stdout=>"", :stderr=>"/etc/init.d/unicorn_myapp: 24: kill: No such process\n\nmaster failed to start, check stderr log for details\n", :exit_code=>1}

Он ссылается на строку 24 моего сценария оболочки Unicorn, которая выглядит так:

PID=$APP_ROOT/tmp/pids/unicorn.pid
# ...other stuff here...
sig () {
  test -s "$PID" && kill -$1 `cat $PID` # this is line 24
}

Когда я смотрю в журнале ошибок Unicorn, я вижу это:

INFO -- : Refreshing Gem list
bundler: failed to load command: unicorn_rails (/home/deployer/apps/myapp/shared/bundle/ruby/2.2.0/bin/unicorn_rails)
LoadError: cannot load such file -- sass-rails

Вручную, я могу перезапустить Unicorn несколькими способами:

  • /etc/init.d/unicorn_myapp start
  • bundle exec unicorn_rails -c config/unicorn.rb -D

Он выводит /etc/init.d/unicorn_myapp: 24: kill: No such process, но, несмотря на это, он срабатывает нормально.

Конфигурация Bluepill:

app_home = "/home/deployer/apps/myapp"
Bluepill.application("myapp", log_file: "#{app_home}/shared/log/bluepill.log") do |app|
  app.uid = "deployer"
  app.gid = "deployer"

  app.process("unicorn") do |process|
    process.working_dir = "#{app_home}"

    process.start_grace_time    = 60.seconds
    process.stop_grace_time     = 60.seconds
    process.restart_grace_time  = 60.seconds
    process.start_command       = "/etc/init.d/unicorn_myapp start"
    process.stop_command        = "start-stop-daemon --signal QUIT --stop --pidfile #{app_home}/current/tmp/pids/unicorn.pid"
    process.pid_file            = "#{app_home}/current/tmp/pids/unicorn.pid"
  end
end

Я должен отметить, что я успешно могу отслеживать, останавливать и запускать delayed_job с Bluepill. Я также могу контролировать и останавливать Unicorn, но не могу его запустить.

В случае, если это имеет значение, я использую RVM.

...