2017-05-17 3 views
0

Ich habe einen nginx Webserver, der auf einem Ubuntu 16.04 Server läuft. Jetzt versuche ich ein Init-Skript für resque Worker und Scheduler für eine Rails App zu erstellen.systemd init script für resque worker

Ich habe eine Datei resque-worker.service in "/ etc/systemd/system /" und es sieht wie folgt aus:

[Unit] 
Description=resque-worker for pageflow 

[Service] 
Type=forking 
ExecStart=/home/pageflow/pageflow_daad/rake resque:scheduler QUEUE=* RAILS_ENV=production > /home/pageflow/pageflow_daad/log/resqueschedule.log & 

[Install] 
WantedBy=multi-user.target 

Aus irgendeinem Grunde nach "systemctl daemon-Reload" und „systemctl Ausführung Start name.service“ich habe diesen Fehler:

$ systemctl status resque-worker.service 
● resque-worker.service - resque-worker for pageflow 
    Loaded: loaded (/etc/systemd/system/resque-worker.service; enabled; vendor preset: enabled) 
    Active: failed (Result: exit-code) since Wed 2017-05-17 15:52:38 CEST; 15s ago 
    Process: 28096 ExecStart=/home/pageflow/pageflow_daad/rake resque:scheduler QUEUE=* RAILS_ENV=production > /home/pageflow/pageflow_daad/log/resqueschedule.log & (code=exited, status=203/EXEC) 

May 17 15:52:38 ostheim systemd[1]: Starting resque-worker for pageflow... 
May 17 15:52:38 ostheim systemd[1]: resque-worker.service: Control process exited, code=exited status=203 
May 17 15:52:38 ostheim systemd[1]: Failed to start resque-worker for pageflow. 
May 17 15:52:38 ostheim systemd[1]: resque-worker.service: Unit entered failed state. 
May 17 15:52:38 ostheim systemd[1]: resque-worker.service: Failed with result 'exit-code'. 

i In diesem Fall den Stammpfad meiner Rails-Anwendung verwendet für "/ home/pageflow/pageflow_daad/Rake".

Die Zeiten bevor, wo ich den Weg des Rechen binären versuchte, bekam ich den Fehler: May 17 15:30:26 ostheim rake[26846]: rake aborted! May 17 15:30:26 ostheim rake[26846]: ArgumentError: couldn't find HOME environment -- expanding ~ ' `

Ich hoffe, dass jemand mit mehr Erfahrung in dieser mir helfen kann.

Vielen Dank im Voraus und mit freundlichen Grüßen, Ronald

Antwort

1

Nach dem Studium der verschiedenen Doku-Seiten und der Dokumentation selbst fand ich einen Weg, um th zu bekommen läuft. Ich wollte nur das schreiben, wenn jemand dies hilfreich sein, findet:

[Unit] 
Description=resque-scheduler for pageflow 

[Service] 
User=yourUser 
WorkingDirectory=/path/to/rails/app 
ExecStart=/path/to/executeable/rake resque:scheduler & 
Environment=QUEUE=* 
Environment=RAILS_ENV=production 

[Install] 
WantedBy=multi-user.target 

Mit diesem Skript ein

systemctl daemon-reload 

&

systemctl start example.service 

Der Dienst startet läuft und läuft wie ein Zauber.

1

Ich denke, es 2 Arten von Fehlern innerhalb des systemd Einheit. Hier sind einige Hinweise:

1) Lassen Sie systemd Ihre Anwendungsprotokolle erfassen, verwenden Sie dann journalctl um es zu betrachten

journalctl -u resque-worker.service 

2) Verwenden Sie env die systemd Art und Weise:

[Unit] 
Description=resque-worker for pageflow 

[Service] 
Type=forking 
ExecStart=/home/pageflow/pageflow_daad/rake resque:scheduler 
Environement=QUEUE=* 
Enrironement=RAILS_ENV=production 

[Install] 
WantedBy=multi-user.target 

Dann

systemctl daemon-reload 
systemctl restart resque-worker.service 
+0

Hey vielen Dank für den Rat. Ich habe die Systemeinheit so geändert, wie Sie es mir gesagt haben, aber immer noch tritt derselbe Fehler auf. journalctl -u resque-worker.service gib mir einfach den code = exited status = 203 das ist alles. Noch mehr Ideen? Vielen Dank im Voraus – LongRon

+0

Ich bin kein Rake-Experte, aber ich denke, Sie brauchen 'Type = einfach' nicht' Type = Forking', hier ist ein Zeiger auf die Dokumentation https://www.freedesktop.org/software/systemd/man /systemd.service.html – papey