Gunicorn findet Flask app nicht

Django, Flask, Bottle, WSGI, CGI…
Antworten
tz_wuerzburg
User
Beiträge: 71
Registriert: Dienstag 7. März 2017, 17:51

Hallo Leute,
ich komme einfach nicht weiter.

Gegeben ist:
- Ununtu 18.04.1 LTS
- python 3.6.7
- nginx 1.14.0
- flask 1.0.2
- gunicorn 19.9.0

Python wurde mit venv in eine virtuelle Umgebung installiert.

Folgende Dateien wurden erstellt.

Flask (meinprojekt.py)

Code: Alles auswählen

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
        return "<h1 style='color:blue'>Hello There!</h1>"

if __name__ == "__main__":
        app.run(host='0.0.0.0') #ersetzt durch meine lokale Server IP
Gunicorn (wsgi.py)

Code: Alles auswählen

from meinprojekt import app
if __name__ == "__main__":
        app.run()
Aus dem Terminal kann Gunicorn mit dem gewünschten Ergebnis (Browser zeigt die Seite) gestartet werden:
gunicorn --bind 0.0.0.0:5000 wsgi:app

Was jetzt leider nicht funktioniert ist das einbinden als Systemdatei um automatisiert zu starten.
etc/systemd/system/meinprojekt.service

Code: Alles auswählen

[Unit]
Description=Gunicorn instance to serve meinprojekt
After=network.target

[Service]
User=mein_name
Group=www-data
WorkingDirectory=/home/meinname/meinprojekt
Environment="PATH=/home/mein_name/meinprojekt/meinprojektenv/bin"
ExecStart=/home/mein_name/meinprojekt/meinprojektenv/bin/gunicorn --workers 3 -bind unix.meinprojekt.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target
Wird im Terminal der Status abgefragt (systemctl status meinprojekt) bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

● meinprojekt.service - Gunicorn instance to serve meinprojekt
   Loaded: loaded (/etc/systemd/system/meinprojekt.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2019-01-24 11:07:03 UTC; 32min ago
 Main PID: 1832 (code=exited, status=2)

Jan 24 11:07:02 isd_01 systemd[1]: Started Gunicorn instance to serve meinprojekt.
Jan 24 11:07:03 isd_01 gunicorn[1832]: usage: gunicorn [OPTIONS] [APP_MODULE]
Jan 24 11:07:03 isd_01 gunicorn[1832]: gunicorn: error: unrecognized arguments: wsgi:app
Jan 24 11:07:03 isd_01 systemd[1]: meinprojekt.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jan 24 11:07:03 isd_01 systemd[1]: meinprojekt.service: Failed with result 'exit-code'.
Könnt Ihr mir weiterhelfen?
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@tz_wuerzburg: Ändert sich etwas wenn Du ``--bind`` richtig angibst, mit *zwei* Minuszeichen‽
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
tz_wuerzburg
User
Beiträge: 71
Registriert: Dienstag 7. März 2017, 17:51

Super, vielen Dank. Das hatte ich übersehen.

Trotzdem bekomme ich das ganze leider nicht zum laufen. Es gibt noch ein Problem mit dem unix.sock.
Müsste eigendlich eine unix.meinprojekt.sock Datei geschrieben werden? Kann diese nicht finden.

Folgende Fehlermeldung erhalte ich nun.

Code: Alles auswählen

● meinprojekt.service - Gunicorn instance to serve meinprojekt
   Loaded: loaded (/etc/systemd/system/meinprojekt.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2019-01-24 14:24:55 UTC; 3s ago
  Process: 1523 ExecStart=/home/meinname/meinprojekt/meinprojektenv/bin/gunicorn --workers 3 --bind unix.meinprojekt.sock -m 007 wsgi:app (code=exited, status=1/FAILURE)
 Main PID: 1523 (code=exited, status=1/FAILURE)

Jan 24 14:24:50 isd_01 systemd[1]: Started Gunicorn instance to serve meinprojekt.
Jan 24 14:24:50 isd_01 gunicorn[1523]: [2019-01-24 14:24:50 +0000] [1523] [INFO] Starting gunicorn 19.9.0
Jan 24 14:24:50 isd_01 gunicorn[1523]: [2019-01-24 14:24:50 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:51 isd_01 gunicorn[1523]: [2019-01-24 14:24:51 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:52 isd_01 gunicorn[1523]: [2019-01-24 14:24:52 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:53 isd_01 gunicorn[1523]: [2019-01-24 14:24:53 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:54 isd_01 gunicorn[1523]: [2019-01-24 14:24:54 +0000] [1523] [ERROR] Retrying in 1 second.
Jan 24 14:24:55 isd_01 gunicorn[1523]: [2019-01-24 14:24:55 +0000] [1523] [ERROR] Can't connect to ('unix.meinprojekt.sock', 8000)
Jan 24 14:24:55 isd_01 systemd[1]: meinprojekt.service: Main process exited, code=exited, status=1/FAILURE
Jan 24 14:24:55 isd_01 systemd[1]: meinprojekt.service: Failed with result 'exit-code'.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Also erst einmal versuchst Du da Dich mit der dem Rechner unix.meinprojekt.sock zu verbinden. Vielleicht wolltest Du nach unix einen Doppelpunkt statt eines einfachen Punktes‽ Der Teufel steckt im Detail. :-)
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
tz_wuerzburg
User
Beiträge: 71
Registriert: Dienstag 7. März 2017, 17:51

Es ist manchmal nicht zu fassen. Ich sage lieber nicht, wie lange ich nach dem Fehler gesucht habe.
Tausend Dank!!!!

Für jeden, den das Thema interessiert empfehle ich diese Anleitung:
https://www.digitalocean.com/community/ ... untu-18-04
Wirklich top!

Ich hoffe das veröffentlichen, bzw. dass posten von solchen Links ist gestattet.
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich sehe die Notwendigkeit des Datei wsgi.py nicht. Du kannst `app` doch aus `meinprojekt.py` importieren, dann hat Gunicorn auch den WSGI Einstiegspunkt. So wird es in der Flask-Doku auch gemacht: http://flask.pocoo.org/docs/dev/deployi ... tandalone/

Gruß, noisefloor
Antworten