2014-02-18 3 views
5

Für Produktionszwecke benötige ich drei Prozesse laufen. Dies ist mein Procfile und ich benutze Foreman, um sie zu starten:Richtiger Einsatz einer Rails App mit Mina und Foreman

web: bundle exec rails s Puma -p $PORT 
queuing: bundle exec clockwork clock.rb 
workers: bundle exec rake resque:workers 

Für den Einsatz verwende ich Mina. Wie kann Foreman am Ende der Bereitstellungsaufgabe gestartet werden? Zur Zeit beginne ich wie folgt aus:

desc "Deploys the current version to the server." 
    task :deploy => :environment do 
    deploy do 
     invoke :'git:clone' 
     invoke :'deploy:link_shared_paths' 
     invoke :'bundle:install' 
     invoke :'rails:db_migrate' 
     invoke :'rails:assets_precompile' 

     to :launch do 
     queue "touch #{deploy_to}/tmp/restart.txt" 
     queue "bundle exec foreman start" 
     end 
    end 
end 

... aber ich glaube nicht, dass der richtige Weg ist, da die „mina einsetzen“ Befehl nie erfolgreich beendet und die lokale Konsole beginnt gerade, was auch immer die Ausgabe diese Prozesse tun .

Frage Nummer zwei: Wie initialisiere ich die Protokollierung für jeden dieser drei Prozesse separat in separaten Dateien?

Und wie verhindere ich das Töten all dieser drei Prozesse, wenn einer von ihnen abstürzt? Wie kann ich den Prozess neu starten, wenn er abstürzt?

Danke!

Antwort

0

OK, das sind also 3 Fragen.

1) Ich denke, Sie wollen Vorarbeiter Prozess vom Terminal abtrennen. Auf diese Weise wird der Bereitstellungsprozess abgeschlossen und der Foreman-Prozess wird ausgeführt, auch nachdem Sie die Verbindung zum Server getrennt haben. nohup ist dafür groß, z.B. dies wird Ihre App und Rohr alle Protokolle zu server.log Datei starten:

nohup foreman start > server.log 2>&1 &

2) AFAIK, Vorarbeiter nicht lassen Sie das tun. Sie sollten wahrscheinlich einen anderen Prozessverwaltungsdienst verwenden (z. B. systemd, upstart). Zum Glück, Vorarbeiter können Sie einfach exportieren Ihre Konfiguration in verschiedene Prozess-Management-Formate (http://ddollar.github.io/foreman/#EXPORTING).

3) Auch hier möchten Sie wahrscheinlich Ihre Prozesse trennen und separat über upstart, systemd usw. verwalten.

Verwandte Themen