Как перезапустить единорога вручную
Я не уверен, что единорог перезапускается правильно, когда я бегу cap deploy
поскольку определенные изменения не отображаются в приложении, поэтому я хотел перезапустить единорога вручную на моем удаленном сервере. Я вошел в etc/init.d
и увидеть список для unicorn_myapp
но это не каталог (т. е. я не могу войти в него). Основываясь на приведенном ниже коде из моего файла deploy.rb, могу ли я что-то сделать для перезапуска единорога?
Я пытался сделать run unicorn_myapp restart
но сказано run
не команда
namespace :deploy do
%w[start stop restart].each do |command|
desc "#{command} unicorn server"
task command, roles: :app, except: {no_release: true} do
run "/etc/init.d/unicorn_#{application} #{command}"
end
end
3 ответа
Вы не перечислили ОС. но одно из следующего должно работать.
вам нужно быть пользователем root / использовать sudo
/etc/init.d/unicorn_myapp restart
/etc/init.d/unicorn_myapp stop
/etc/init.d/unicorn_myapp start
service unicorn_myapp restart
service unicorn_myapp stop
service unicorn_myapp start
Сначала попробуйте перезапустить версии, но в зависимости от того, как был написан скрипт инициализации, у него может не быть команды перезапуска, если это не сработает, вы можете сделать остановку / запуск версии.
В качестве альтернативы, вместо того, чтобы полагаться на /etc/init.d...
скрипты, которые зависят от ОС, простой способ перезапустить единорога - это отправить HUP (1)
сигнал к своему основному процессу.
Вот, например, как я автоматически перезагрузить приложение после git push
с помощью post-receive
крюк:
#!/bin/sh
unicorn_pid=`cat /tmp/pids/unicorn.pid`
echo "Restarting Unicorn ($unicorn_pid)"
kill -HUP $unicorn_pid
В твоем случае, /etc/init.d/unicorn_myapp restart
Сценарий, вероятно, делает это. Проверьте unicorn.conf для определения местоположения его pid-файла.
Для получения более подробной информации смотрите документацию по единорогам СИГНАЛОВ
Возможно, вы должны быть root, но это должно быть просто /etc/init.d/unicorn_myapp restart
(не включать run
, который не является командой оболочки).