Domanda

Sto lavorando su uno script di Dio per monitorare il mio Unicorns. Ho iniziato con lo script esempi di GitHub e sono stati modificandolo per abbinare la mia configurazione del server. Una volta che Dio è in esecuzione, comandi come god stop unicorn e il lavoro god restart unicorn bene.

Tuttavia, god start unicorn si traduce in WARN: unicorn start command exited with non-zero code = 1. La parte strana è che se mi copia lo script di avvio direttamente dal file di configurazione, si avvia a destra come una nuova Mustang.

Questo è il mio comando di avvio:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D

Ho dichiarato tutti i percorsi come assoluta nel file di configurazione. Tutte le idee che potrebbero impedire questo script di lavorare?

È stato utile?

Soluzione

Non ho usato unicorno come un application server, ma ho usato Dio per il monitoraggio di prima.

Se ricordo bene quando si inizia a Dio e dare il vostro file di configurazione, automaticamente si avvia tutto ciò che hai detto che da guardare. Unicorno è probabilmente già in esecuzione, ed è per questo che è gettando l'errore.

Seleziona questa eseguendo god status volta che hai iniziato a Dio. Se questo non è il caso si può controllare sulla linea di comando che cosa stato di uscita del COMAND è:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D; echo $?;

che l'eco stamperà lo stato di uscita dell'ultimo comando. Se è pari a zero, l'ultimo comando non ha riportato errori. Prova a partire unicorno due volte di fila, mi aspetto che la seconda volta tornerà 1, perché è già in esecuzione.

EDIT:

compreso la soluzione reale dai commenti, in quanto questo sembra essere una risposta popolare:

È possibile impostare una esplicita dell'utente e di gruppo se il processo richiede di essere eseguito come utente specifico.

God.watch do |w|
  w.uid = 'root'
  w.gid = 'root'

  # remainder of config
end

Altri suggerimenti

Il mio problema era che non ho mai in bundle come root. Ecco quello che ho fatto:

sudo bash
cd RAILS_ROOT
bundle

Si ottiene un messaggio di avviso che ti dice di non fare questo:

  

Non eseguire Bundler come root. Bundler può richiedere sudo se è necessario,   e l'installazione del pacco da root si romperà questa applicazione per tutti   utenti non-root su questa macchina.

Ma era l'unico modo ho potuto ottenere resque o unicorno a correre con Dio. Questo è stato su un'istanza EC2 se questo aiuta nessuno.

Aggiungere l'opzione di log mi ha aiutato molto nella debug.

God.watch do |w|
  w.log = "#{RAILS_ROOT}/log/god.log"

  # remainder of config
end

Alla fine, il mio errore si è rivelata la start_script in Dio è stato eseguito in un ambiente development. Ho fissato questo aggiungendo il RAILS_ENV allo script di avvio.

start_script = "RAILS_ENV=#{ENV['RACK_ENV']} bundle exec sidekiq -P #{pid_file} -C #{config_file} -L #{log_file} -d"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top