Frage

Ich arbeite an einem Skript Gott mein Unicorns zu überwachen. Ich begann mit GitHub der Beispiele Skript und wurden modifiziert es meine Serverkonfiguration übereinstimmen. Sobald Gott läuft, Befehle wie god stop unicorn und god restart unicorn gut funktionieren.

Allerdings führt god start unicorn in WARN: unicorn start command exited with non-zero code = 1. Die seltsame daran ist, dass, wenn ich das Startskript direkt aus der Konfigurationsdatei kopieren, bis wie ein brandneuer Mustang beginnt.

Das ist mein Startbefehl:

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

Ich habe alle Pfade als absolute in der Config-Datei deklariert. Irgendwelche Ideen, was könnte dieses Skript werden zu verhindern, dass zu arbeiten?

War es hilfreich?

Lösung

Ich habe als App-Server verwendet Einhorn, aber ich habe vor für die Überwachung von Gott eingesetzt.

Wenn ich mich recht erinnere, wenn Sie Gott und geben Sie Ihre Konfigurationsdatei starten, wird es automatisch startet, was auch immer Sie haben es gesagt, zu beobachten. Einhorn ist wahrscheinlich bereits ausgeführt wird, weshalb es den Fehler zu werfen.

Überprüfen Sie dies durch god status laufen, sobald Sie Gott begonnen haben. Wenn das nicht der Fall ist können Sie auf der Kommandozeile überprüfen, was den Exit-Status des comand ist:

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

das Echo des Exit-Status des letzten Kommandos drucken. Wenn es Null ist, berichtet der letzte Befehl keine Fehler. Versuchen Sie startet Einhorn zweimal in Folge erwarte ich, dass das zweite Mal, es wird 1 zurückkehren, weil es bereits ausgeführt wird.

EDIT:

einschließlich der tatsächlichen Lösung von Kommentaren, wie dies scheint eine beliebte Antwort auf sein:

Sie können eine explizite Benutzer- und Gruppen gesetzt, wenn der Prozess als einen bestimmten Benutzer ausgeführt werden muss.

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

  # remainder of config
end

Andere Tipps

Mein Problem war, dass ich nie als root gebündelt. Hier ist, was ich getan habe:

sudo bash
cd RAILS_ROOT
bundle

Sie erhalten eine Warnung sagen Sie dazu nie tun:

  

laufen Bündler nicht als root. Bündler für sudo fragen, ob es erforderlich ist,   und Ihr Bündel als root Installation bricht diese Anwendung für alle   Nicht-Root-Benutzer auf dieser Maschine.

Aber es war der einzige Weg, ich resque bekommen konnte oder Einhorn mit Gott laufen. Dies war auf einer EC2-Instanz, wenn das jemand hilft.

Fügen Sie die Log-Option hat mir sehr geholfen bei der Fehlersuche.

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

  # remainder of config
end

Am Ende drehte mein Fehler der start_script in Gott erwiesen wurde in development Umgebung ausgeführt. Ich reparierte diese durch die RAILS_ENV zum Startskript angehängt wird.

start_script = "RAILS_ENV=#{ENV['RACK_ENV']} bundle exec sidekiq -P #{pid_file} -C #{config_file} -L #{log_file} -d"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top