Wie richte ich den Start des Flask-Servers ein?

1

Ich habe einen Webserver, der auf einer Kombination aus Kolben und Tornado basiert. Es funktioniert in einer virtuellen Umgebung (eingerichtet mit Python Virtualenv).

Ich möchte, dass der Server beim Start automatisch von einem normalen Benutzer gestartet wird. Was ich getan habe, um dies zu erreichen:

1) Ich habe ein Startskript mit folgendem Inhalt geschrieben:

cd /home/ubuntu/myserver
# enter virtualenv
source venv/bin/activate
# launch
python app.py > serverlog.log 2&>1 &

2) Ich habe eine Crontab eingerichtet mit crontab -e:

SHELL=/bin/bash
@reboot /home/ubuntu/start_service.sh

Wenn ich das Startskript über die Befehlszeile ausführe, wird alles korrekt gestartet. Aber nach dem Neustart in serverlog.logsehe ich ein Stacktrace, das von einem Fehler beim Binden an Port 5000 berichtet. Was kann ich tun, um das Problem zu beheben?

Srv19
quelle

Antworten:

1

Crontab ist nicht schlau genug, um Ihren Server am Laufen zu halten. Wenn es runter geht, muss es warten, bis crontab wieder läuft; Ihre Clients erhalten einen 404-Fehler von Ihrem fehlerhaften Server.

Ich rate Ihnen, so etwas wie Supervisor zu verwenden . Sie können es mit easy_install wie installieren

   easy_install supervisor

Sie müssen sich mit Supervisord und Supervisorctl befassen. Der erste ist ein Dämon-Prozessmanager, der ausgeführt wird und sicherstellt, dass die PID von Ihnen stammt

python app.py > serverlog.log 2&>1 &

lauf weiter, egal was passiert. Sie können dies tun, indem Sie ein sogenanntes Programm auf der supervisord.conf wie erstellen

[program:flasktornado]
command=python app.py > serverlog.log 2&>1 &

Mit Supervisor steuern Sie [start | aufhören | Starten Sie das gerade erstellte Programm in der Supervisord-Konfigurationsdatei neu. Das könnte dir helfen.

CESCO
quelle