[PYTHON] Full-Scale-Server mit Nginx + uWSGI + Flask + Ubuntu (Installation)

Von der Installation eines Servers mit Flask, was in der Regel kompliziert ist

Informationen zur Implementierung finden Sie unter Implementierung.

Zeichen

Nginx

Webserver Grundsätzlich ist dies die Verbindung vom Client Nach dem Bestehen verarbeitet Sozusagen der Hauptauftragnehmer

uWSGI

Anwendungsserver Diesmal Webserver (Nginx) und Webanwendung (Flask) Eine Brücke, die sich mit verbindet Sozusagen ein Vermittler

Was ist WSGI überhaupt? Abkürzung für WebServerGatewayInterface (wahrscheinlich als Whisky gelesen) Eine Vereinbarung zwischen einer Webanwendung (Flask) und einem Webserver (Nginx) Protokoll (Spezifikation)

Ohne das Zum Beispiel bei Verwendung eines bestimmten Webservers (A) Webanwendung (A '), die die Spezifikationen entführt hat Muss verwendet werden (eigentlich scheint es in der Vergangenheit gemacht worden zu sein) Und umgekehrt

WSGI ist eine standardisierte Form dieser Spezifikation. Offensichtlich hat der Kolben, den ich verwenden werde, die WSGI-Spezifikationen übernommen.

Flask

Webanwendungs-Framework Dieser Typ erledigt die eigentliche Verarbeitung Sozusagen Unteraufträge

Django ist das Hauptframework für Python Im Vergleich zu Django hat es nur die minimal notwendigen Funktionen Super leicht und einfach zu implementieren

Wird von Netflix, Reddit usw. verwendet.

Virtualenv

Virtuelle Python-Umgebung Verhindert, dass das System mit Paketen überfüllt wird Es ist besser, es ohne es implementieren zu können

Vorbereitung Repository aktualisieren
$ sudo apt update

Paketaktualisierung

$ sudo apt upgrade

Installieren Sie Entwicklungstools wie gcc und gdb (erforderlich zum Erstellen von uwsgi)

$ sudo apt install build-essential

Installiere openssl

$ sudo apt install openssl

Installieren Sie pip3

$ sudo apt install python3-pip

Firewall Firewall-Einstellungen Stellen Sie die Firewall auch auf der Ubuntu-Seite ein Wenn Sie es nicht brauchen, überspringen Sie es.

ufw installieren

$ sudo apt install ufw

Schließen Sie alle Ports

$ sudo ufw default deny

Halten Sie die erforderlichen Anschlüsse offen In meinem Fall SSH (22), http (80)

$ sudo ufw allow 22
$ sudo ufw allow 80

Firewall aktivieren

& sudo ufw enable

Status überprüfen

$ sudo ufw status

Übrigens bei der Verbindung mit SSH Wenn Sie dieser Reihenfolge nicht folgen, können Sie keine Verbindung herstellen Seien Sie vorsichtig, da es eine Möglichkeit gibt

Nginx

So installieren Sie die neueste Version von nginx https://nginx.org/en/linux_packages.html https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/?p=3100 Von

Bis zur Installation, wenn Sie die neueste Version nicht separat installieren müssen Überspringen und OK

Laden Sie den PGP-Schlüssel herunter

$ wget https://nginx.org/keys/nginx_signing.key

Schlüssel importieren

$ sudo apt-key add nginx_signing.key

Repository registrieren

$ sudo vi /etc/apt/sources.list

#Zum Ende hinzufügen bionischer Teil ist Ubuntu-Entwicklungscode
deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx

Der bionische Teil von ~ / ubuntu / bionischem Nginx ist Umschreiben gemäß Ubuntu-Version

Ausführung Entwicklungscode
16.04 xenial
18.04 bionic
19.10 eoan
20.04 focal

So überprüfen Sie die Version von Ubuntu

$ cat /etc/lsb-release
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic

Aktualisieren Sie die Repository-Informationen

sudo apt update

Version prüfen

$ apt show nginx
Package: nginx
Version: 1.18.0-1~bionic

Zum Zeitpunkt des Schreibens des Artikels scheint 1.18.0 eine stabile Version zu sein

http://nginx.org/en/download.html Sie können überprüfen, ob es sich um die neueste Version mit handelt

--- So installieren Sie die neueste Version --- </ b>

Installation

$ sudo apt install nginx

Versionsbestätigung

$ nginx -v
nginx version: nginx/1.18.0

Registrieren Sie sich im Voraus für den Service

$ sudo systemctl enable nginx
$ sudo systemctl start nginx

Erfolg, wenn zugänglich

$ curl http://localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

Wenn Port 80 offen ist Von erlaubter IP

$ curl http://<Öffentliche IP>

Aber überprüfen Sie

Virtualenv

Mit pip3 installieren
$ sudo pip3 install virtualenv

Versionsbestätigung

$ virtualenv --version

Umgebung erstellen

$ virtualenv py36_flask_server --python=python3.6

Übrigens, wenn die angegebene Version von Python nicht enthalten ist Installieren Sie es im Voraus, da es nicht erstellt werden kann

OK, wenn Sie es in die unten stehende Umgebung stellen

$ . <Umgebungsname>/bin/activate
(py36_flask_server) ubuntu@ip-10-0-0-14:~$

uWSGI

Installieren Sie mit pip3 aus der mit virtualenv erstellten Umgebung
$pip3 install uwsgi

Version prüfen

$uwsgi --version

Übrigens gab es auch eine Möglichkeit, Anaconda anstelle von Virtualenv zu verwenden. Beachten Sie jedoch, dass bei der Installation von uWSGI häufig Fehler auftreten.

Wenn Sie Anaconda verwenden möchten Es wird einige Zeit dauern, aber es wird gelöst. Lesen Sie daher den folgenden Artikel https://katsuwosashimi.com/archives/300/python-conda-install-uwsgi-failed/

Flask

Installieren Sie mit pip aus der mit virtualenv erstellten Umgebung
$pip3 install flask

das ist alles

Zusammenfassung In der Installationsphase ist es ziemlich lang geworden

Als nächstes folgt Implementierung

Recommended Posts