2013-10-14 16 views
14

Non sono sicuro che l'unicorno si riavvii correttamente quando corro cap deploy poiché alcune modifiche non vengono visualizzate nell'app, quindi ho voluto riavviare manualmente l'unicorno sul mio server remoto. Ho navigato in etc/init.d e vedere un elenco per unicorn_myapp ma non è una directory (vale a dire non posso cd in esso). Basato sul codice qui sotto dal mio file deploy.rb, c'è qualcosa che posso fare da qui per riavviare unicorno?come riavviare manualmente unicorno

ho cercato di fare run unicorn_myapp restart ma detto run non è un comando

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 le risposte qui sono tutti sbagliati. – Fuser97381

risposta

25

non hai elencato il sistema operativo. ma uno dei seguenti dovrebbe funzionare.

è necessario essere root/uso di 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 

Prova le versioni di riavvio primi, ma a seconda di come lo script di init è stato scritto potrebbe non avere un comando di riavvio, se non si fa il lavoro può fare la versione stop/start.

4

Potrebbe essere necessario essere root, ma dovrebbe essere solo /etc/init.d/unicorn_myapp restart (non comprendono run, che non è un guscio comando).

22

In alternativa, invece di affidarsi agli script /etc/init.d... dipendenti dal sistema operativo, un semplice modo per riavviare unicorno è inviare il segnale HUP (1) al proprio processo principale.

Ecco per esempio come ricarico un app automaticamente dopo un git push via post-receive gancio:

#!/bin/sh 
unicorn_pid=`cat /tmp/pids/unicorn.pid` 
echo "Restarting Unicorn ($unicorn_pid)" 
kill -HUP $unicorn_pid 

Nel tuo caso, /etc/init.d/unicorn_myapp restart script è probabilmente facendo questo. Controlla unicorn.conf per la posizione del suo file pid.

Per maggiori dettagli, si veda unicorn SIGNALS documentations

+0

FYI, relativi 'tmp/pid ...' percorso è stato intenzionale e non un errore di battitura ... il mio gancio git in esecuzione nel percorso del progetto in possesso di un tmp' cartella locale '... Comunque! :) –

+0

Richiede un ID di processo anche dopo 'kill -HUP $ unicorn_pid ' – kamal