2013-10-14 3 views
14

Я не уверен, что единорог перезагружается должным образом, когда я запускаю 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 
+1

FYI ответы на здесь все не так. – Fuser97381

ответ

25

Вы не указали ОС. но одно из следующего должно работать.

вы должны быть корень/использование 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 

Попробуйте рестарт версии первыми, но в зависимости от того, как сценарий инициализации был написан не может иметь команду перезапуска, если это не работает, вам может сделать версию остановки/запуска.

4

Вы могли бы быть корнем, но это должно быть просто /etc/init.d/unicorn_myapp restart (не включают run, который не является оболочкой команда).

22

В качестве альтернативы вместо использования сценариев /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 на местоположение своего pidfile.

Для получения более подробной информации см unicorn SIGNALS documentations

+0

fyi, relative 'tmp/pids ...' путь был преднамеренным, а не опечатка ... мой крюк git запущен в пути проекта, где находится локальная папка 'tmp' ... В любом случае! :) –

+0

Требуется идентификатор процесса также после 'kill -HUP $ unicorn_pid ' – kamal

Смежные вопросы