GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

So stellen Sie die Flask-Anwendung mit Nginx und Gunicorn unter Ubuntu 20.04 bereit

Flask ist ein kleines, leichtes und Mikro-Web-Framework, das in Python geschrieben ist. Es ermöglicht Ihnen die einfache Entwicklung von Webanwendungen ohne Tools oder Bibliotheken. Diese Webanwendung kann ein Blog, eine Wiki-Seite, Webseiten, eine webbasierte Kalenderanwendung oder eine kommerzielle Website sein. Es ist einfach, leicht zu bedienen, leicht zu erlernen und anfängerfreundlich, da es keine Abhängigkeiten erfordert.

In diesem Tutorial zeigen wir Ihnen, wie Sie die Flask-Anwendung mit Gunicorn und Nginx unter Ubuntu 20.04 bereitstellen.

Voraussetzungen

  • Ein Ubuntu 20.04 VPS mit aktiviertem Root-Zugriff oder ein Benutzer mit sudo-Berechtigungen.

Anmelden und Pakete aktualisieren

Zuerst müssen wir uns mit SSH bei unserem Server anmelden. Sie können dies tun, indem Sie diesen Befehl eingeben:

ssh root@IP_Address -p Port_Number

Denken Sie daran, root zu ersetzen mit Ihrem Benutzernamen, wenn Sie nicht den Root-Benutzer verwenden. IP_Address ändern und Port_Number entsprechend der IP-Adresse Ihres Servers und der SSH-Portnummer.

Sobald Sie angemeldet sind, sollten Sie alle Ihre Pakete auf die neuesten verfügbaren Versionen aktualisieren.

apt-get update -y
apt-get upgrade -y

Sobald alle Pakete auf dem neuesten Stand sind, starten Sie Ihren Server neu, um die Konfigurationsänderungen zu übernehmen.

Erforderliche Abhängigkeiten installieren

Flask ist eine Python-basierte Anwendung. Daher müssen Python und andere erforderliche Abhängigkeiten auf Ihrem Server installiert sein. Wenn sie nicht installiert sind, können Sie alle mit dem folgenden Befehl installieren:

apt-get install python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y

Sobald alle Abhängigkeiten installiert sind, installieren Sie das Paket der virtuellen Python-Umgebung mit dem folgenden Befehl:

apt-get install python3-venv -y

Nach der Installation können Sie mit dem nächsten Schritt fortfahren.

Nginx-Webserver installieren

In diesem Tutorial verwenden wir Nginx als Reverse-Proxy für die Flask-Anwendung. Sie müssen also das Nginx-Webserverpaket auf Ihrem Server installieren. Sie können es mit dem folgenden Befehl installieren:

apt-get install nginx -y

Sobald Nginx installiert ist, starten und aktivieren Sie den Nginx-Dienst mit dem folgenden Befehl:

systemctl start nginx
systemctl enable nginx

Erstellen Sie eine virtuelle Umgebung für die Flask-Anwendung

Als Nächstes müssen Sie eine virtuelle Umgebung für die Flask-Anwendung erstellen.

Erstellen Sie zunächst ein Projektverzeichnis mit dem folgenden Befehl:

mkdir ~/project

Wechseln Sie als Nächstes in das Verzeichnis Ihres Projekts und erstellen Sie mit dem folgenden Befehl eine virtuelle Python-Umgebung:

cd ~/project
python3 -m venv venv

Als nächstes aktivieren Sie Ihre Umgebung mit dem folgenden Befehl:

source venv/bin/activate

Als nächstes installieren Sie Gunicorn, Flask und andere Komponenten mit dem folgenden Befehl:

pip install wheel
pip install gunicorn flask

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Erstellen Sie eine Flask-Anwendung

Als Nächstes müssen Sie eine Flask-Beispielanwendung für Ihr Projekt erstellen. Führen Sie den folgenden Befehl aus, um es in Ihrem Projektverzeichnis zu erstellen:

nano ~/project/flaskapp.py

Fügen Sie die folgenden Codes hinzu:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Welcome to Flask Application!"
if __name__ == "__main__":
    app.run(host='0.0.0.0')

Speichern und schließen Sie die Datei und überprüfen Sie dann Ihre Anwendung mit dem folgenden Befehl:

cd ~/project/
python3 flaskapp.py

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

 * Serving Flask app 'flaskapp' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://69.28.84.227:5000/ (Press CTRL+C to quit)

Drücken Sie STRG+C, um die Anwendung zu schließen.

Erstellen Sie einen WSGI-Einstiegspunkt für Gunicorn

Als Nächstes müssen Sie einen WSGI-Einstiegspunkt erstellen, um Ihre Anwendung über Gunicorn bereitzustellen.

Führen Sie den folgenden Befehl aus, um es zu erstellen:

nano ~/project/wsgi.py

Fügen Sie die folgenden Zeilen hinzu:

from flaskapp import app
if __name__ == "__main__":
    app.run()

Speichern und schließen Sie die Datei und überprüfen Sie dann mit dem folgenden Befehl, ob Gunicorn die Anwendung korrekt bedienen kann:

cd ~/project/
gunicorn --bind 0.0.0.0:5000 wsgi:app

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

[2021-12-23 10:37:15 +0000] [9352] [INFO] Starting gunicorn 20.1.0
[2021-12-23 10:37:15 +0000] [9352] [INFO] Listening at: http://0.0.0.0:5000 (9352)
[2021-12-23 10:37:15 +0000] [9352] [INFO] Using worker: sync
[2021-12-23 10:37:15 +0000] [9354] [INFO] Booting worker with pid: 9354

Drücken Sie STRG+C, um die Anwendung zu beenden. Deaktivieren Sie als Nächstes die virtuelle Python-Umgebung mit dem folgenden Befehl:

deactivate

Erstellen Sie eine Systemd-Dienstdatei für die Flask-Anwendung

Als nächstes müssen Sie eine systemd-Unit-Datei für die Flask-Anwendung erstellen. Sie können es mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/flask.service

Fügen Sie die folgenden Zeilen hinzu:

[Unit]
Description=Gunicorn instance to serve Flask
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/project
Environment="PATH=/root/project/venv/bin"
ExecStart=/root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
[Install]
WantedBy=multi-user.target

Speichern und schließen Sie die Datei und legen Sie dann den richtigen Besitz und die Berechtigung für das Flask-Projekt fest:

chown -R root:www-data /root/project
chmod -R 775 /root/project

Als nächstes laden Sie den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie als Nächstes den Flask-Dienst und aktivieren Sie ihn so, dass er beim Systemneustart gestartet wird:

systemctl start flask
systemctl enable flask

Überprüfen Sie als Nächstes den Status des Kolbens mit dem folgenden Befehl:

systemctl status flask

Ausgabe:

● flask.service - Gunicorn instance to serve Flask
     Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-12-23 10:38:26 UTC; 8s ago
   Main PID: 9376 (gunicorn)
      Tasks: 2 (limit: 2353)
     Memory: 27.8M
     CGroup: /system.slice/flask.service
             ├─9376 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
             └─9393 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app

Dec 23 10:38:26 ubuntu2004 systemd[1]: Started Gunicorn instance to serve Flask.
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Starting gunicorn 20.1.0
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Listening at: http://0.0.0.0:5000 (9376)
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Using worker: sync
Dec 23 10:38:26 ubuntu2004 gunicorn[9393]: [2021-12-23 10:38:26 +0000] [9393] [INFO] Booting worker with pid: 9393

Konfigurieren Sie Nginx als Reverse-Proxy für die Flask-Anwendung

Als Nächstes müssen Sie Nginx als Reverse-Proxy konfigurieren, um die Flask-Anwendung über Port 80 bereitzustellen. Erstellen Sie dazu eine virtuelle Nginx-Host-Konfigurationsdatei:

nano /etc/nginx/conf.d/flask.conf

Fügen Sie die folgenden Zeilen hinzu:

server {
    listen 80;
    server_name flask.example.com;
    location / {
        include proxy_params;
        proxy_pass  http://127.0.0.1:5000;
    }
}

Speichern und schließen Sie die Datei und überprüfen Sie dann Nginx auf Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe sehen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Access Flask-Anwendung

An diesem Punkt wird Ihre Flask-Anwendung installiert, konfiguriert und mit einem Nginx-Proxy gehostet. Sie können jetzt über die URL http://flask.example.com darauf zugreifen . Sie sollten die folgende Seite sehen:

Herzliche Glückwünsche! Sie haben die Flask-Anwendung erfolgreich mit Gunicorn und Nginx auf dem Ubuntu 20.04-Server bereitgestellt.

Wenn Sie jedoch einer unserer Managed Ubuntu Hosting-Kunden sind oder einen unserer Managed VPS-Hosting-Pläne verwenden, müssen Sie die Flask-Anwendung nicht auf Ihrem Ubuntu 20.04 VPS installieren – fragen Sie einfach unsere Administratoren, lehnen Sie sich zurück und Entspannen Sie Sich. Unsere Administratoren installieren die Flask-Anwendung sofort für Sie auf Ubuntu 20.04 (oder jedem anderen Betriebssystem, das Sie bei uns haben).

PS. Wenn Ihnen dieser Beitrag über die Installation der Flask-Anwendung auf einem Ubuntu 20.04 VPS gefallen hat, teilen Sie ihn bitte mit Ihren Freunden in den sozialen Netzwerken über die Schaltflächen unten oder hinterlassen Sie einfach einen Kommentar im Kommentarbereich. Danke.


Panels
  1. So stellen Sie Node.js-Anwendungen mit pm2 und Nginx auf Ubuntu bereit

  2. So installieren Sie Nginx mit Google PageSpeed ​​unter Ubuntu 20.04

  3. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

  4. So stellen Sie Modsecurity mit Nginx auf Ubuntu 20.04 LTS bereit

  5. So richten Sie Django mit Postgres, Nginx und Gunicorn unter Ubuntu 20.04 ein

So installieren Sie MediaWiki mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04

So stellen Sie Rocket Chat mit Nginx unter Ubuntu 18.04 bereit

So installieren Sie Bludit CMS mit NGINX unter Ubuntu 20.04

So installieren Sie das Talkyard-Forum mit Nginx unter Ubuntu 18.04

So stellen Sie eine PHP-Anwendung mit Nginx und MySQL mit Docker und Docker Compose bereit

Wie stellt man die Laravel-Anwendung mit Nginx auf Ubuntu bereit?