Ich habe kleine Web-Server mit Werkzeug erstellt und ich kann es in der üblichen Python-Art mit python my_server.py
ausführen. Seiten laden, alles funktioniert gut. Jetzt möchte ich es starten, wenn mein PC bootet. Was ist der einfachste Weg das zu tun? Ich habe mit Emporkömmling kämpfen, aber es scheint nicht zu „in einem Hintergrund zu leben“ Cuz, nachdem ich start my_server
sofort ausführen ich kernel: [ 8799.793942] init: my_server main process (7274) terminated with status 1
Run Python-Skript als Daemon beim Booten (Ubuntu)
my_server.py erhalten:
...
if __name__ == '__main__':
from werkzeug.serving import run_simple
app = create_app()
run_simple('0.0.0.0', 4000, app)
Emporkömmling Konfigurationsdatei my_server.conf :
description "My service"
author "Some Dude <[email protected]>"
start on runlevel [2345]
stop on runlevel [016]
exec /path/to/my_server.py
start on startup
Irgendwelche Ideen, wie man es arbeiten lässt? Oder eine andere bessere Möglichkeit, das Skript zu dämonisieren?
Update: Ich glaube, das Problem liegt innerhalb my_server.py
. Es scheint nicht den Webserver (Methode run_simple()
) an erster Stelle zu initiieren. Welche Schritte sollten unternommen werden, um die .py-Datei von einem Task-Handler wie dem Upstart auszuführen?
- Platz shebang als erste Zeile
#!/usr/bin/env python
- Ausführung ermöglichen Berechtigungen
chmod 755
- Starten Sie den Daemon mit Superuser-Rechte (absolut sicher sein, keine Berechtigungseinschränkungen es von Start verhindert)
- Stellen alle Python-Bibliotheken sicher sind, Dort!
- Etwas anderes?
Gelöst: Das Problem war, mit Python Abhängigkeiten fehlen. Beim Starten des Skripts über den Task-Manager (z. B. upstart
oder start-stop-daemon
) werden keine Fehler ausgelöst. Sie müssen absolut sicher sein, dass pythonpath alles enthält, was Sie brauchen.
Versuchen Sie runlevels 235 und bilden Sie den Benutzer, den Sie Server ausführen Sie verwenden 4000 priviligierte Ports, die Admin-Rechte erfordert. – Denis
Ich führe es als Superuser und ändern Runlevel zu 235 hat nicht geholfen. – and3p
Ist es möglich, dass die Abhängigkeitsdienste Ihrer App noch nicht gestartet sind? Wie eine Datenbank? – tdihp