2016-12-19 6 views
1

Hier ist, wie ich auf einem Server mein Phoenix/Elixir Anwendung bin bereitstellen:Edeliver und systemd für Phoenix/Elixir Anwendungen

mix edeliver stop production --verbose 
mix edeliver build release --verbose 
mix edeliver deploy release to production --verbose 
mix edeliver start production --verbose 

Es funktioniert so lange, wie es auf diese Weise laufen gelassen wird.

Ich habe eine Systemeinheit für meine Website erstellt. Ich habe es überprüft - es funktioniert gut, starten und stoppen. Dann habe ich meine Website bereitgestellt, der Dienst, der ausgeführt wurde, läuft nicht mehr, er befindet sich im Fehlerzustand, wo die Website selbst läuft - so sollte es nicht sein.

Wie kann ich meinen System-Unit-Service in diese 4 obigen Befehle für die Bereitstellung integrieren? Das heißt, edeliver sollte laufen und den Dienst für meine Website über systemd von "sudo systemctl start | stop my_website" irgendwie stoppen. Oder ist es anders?

+1

Ich denke, die Idee ist, dass die neue Version gebaut und eingesetzt werden, während der Produktion ist läuft noch, bevor "mix edeliver restart production" verwendet wird, um Ausfallzeiten zu vermeiden. –

Antwort

2

edeliver verwendet die upstart scripts hardcoded. Das heißt, es führt einfach sudo stop blah auf remote.

Es gibt wahrscheinlich bessere und robustere Lösungen, aber ich überwand persönlich dies durch Aliase für meine deploy Benutzer auf Remote-Einstellung:

alias start='systemctl enable' 
alias stop='systemctl disable' 
+0

Dieses implizite Verhalten zu beheben könnte eine gute PR sein. – sobolevn