[PYTHON] Serveur à grande échelle réalisé avec Nginx + uWSGI + Flask + Ubuntu (installation)

De l'installation d'un serveur avec Flask, ce qui a tendance à être compliqué

Pour l'implémentation, voir Implementation

Caractères

Nginx

serveur Web Fondamentalement, c'est la connexion du client Traité après le passage Pour ainsi dire, le maître d'œuvre

uWSGI

Serveur d'application Cette fois, serveur Web (Nginx) et application Web (Flask) Un pont qui se connecte avec Pour ainsi dire, un intermédiaire

Qu'est-ce que WSGI en premier lieu? Abréviation de WebServerGatewayInterface (probablement lu comme whisky) Un accord entre une application Web (Flask) et un serveur Web (Nginx) Protocole (spécification)

Sans cela Par exemple, lors de l'utilisation d'un certain serveur Web (A) Application Web (A ') qui a détourné les spécifications Devra être utilisé (en fait, cela semble avoir été fait dans le passé) Et vice versa

WSGI est une forme normalisée de cette spécification. De toute évidence, le Flask que je vais utiliser a repris les spécifications WSGI.

Flask

Cadre d'application Web Ce gars fait le traitement proprement dit Pour ainsi dire, sous-traitance

Django est le principal framework pour Python Par rapport à Django, il n'a que le minimum de fonctions nécessaires Super léger et facile à mettre en œuvre

Utilisé par Netflix, Reddit, etc.

Virtualenv

Environnement virtuel Python Empêche le système d'être encombré de paquets Il vaut mieux pouvoir l'implémenter sans cela

Préparation Mettre à jour le référentiel
$ sudo apt update

Mise à jour du package

$ sudo apt upgrade

Installer des outils de développement tels que gcc et gdb (requis pour construire uwsgi)

$ sudo apt install build-essential

Installer openssl

$ sudo apt install openssl

Installer pip3

$ sudo apt install python3-pip

Pare-feu Paramètres du pare-feu Définissez également le pare-feu du côté ubuntu Si vous n'en avez pas besoin, ignorez-le.

installer ufw

$ sudo apt install ufw

Fermer tous les ports

$ sudo ufw default deny

Gardez les ports nécessaires ouverts Dans mon cas SSH (22), http (80)

$ sudo ufw allow 22
$ sudo ufw allow 80

Activer le pare-feu

& sudo ufw enable

Vérifier l'état

$ sudo ufw status

À propos, lors de la connexion avec SSH Si vous ne suivez pas cet ordre, vous ne pourrez pas vous connecter Soyez prudent car il y a une possibilité

Nginx

Comment installer la dernière version de nginx https://nginx.org/en/linux_packages.html https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/?p=3100 De

Jusqu'à l'installation si vous n'avez pas besoin d'installer la dernière version séparément Sautez et OK

Télécharger la clé PGP

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

Importer la clé

$ sudo apt-key add nginx_signing.key

Enregistrer le référentiel

$ sudo vi /etc/apt/sources.list

#Ajouter à la fin la partie bionique est le code de développement ubuntu
deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx

La partie bionique de ~ / ubuntu / bionic nginx est Réécrire selon la version d'Ubuntu

version Code de développement
16.04 xenial
18.04 bionic
19.10 eoan
20.04 focal

Comment vérifier la version d'ubuntu

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

Mettre à jour les informations du référentiel

sudo apt update

Vérifier la version

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

Au moment de la rédaction de l'article, la 1.18.0 semble être une version stable

http://nginx.org/en/download.html Vous pouvez vérifier s'il s'agit de la dernière version avec

--- Voici comment installer la dernière version --- </ b>

Installation

$ sudo apt install nginx

Confirmation de version

$ nginx -v
nginx version: nginx/1.18.0

Inscrivez-vous au service à l'avance

$ sudo systemctl enable nginx
$ sudo systemctl start nginx

Succès si accessible

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

Si le port 80 est ouvert De l'adresse IP autorisée

$ curl http://<IP publique>

Mais vérifiez

Virtualenv

Installer avec pip3
$ sudo pip3 install virtualenv

Confirmation de version

$ virtualenv --version

Créer un environnement

$ virtualenv py36_flask_server --python=python3.6

À propos, si la version spécifiée de Python n'est pas incluse Installez-le à l'avance car il échouera à créer

OK si vous le mettez dans l'environnement ci-dessous

$ . <Nom de l'environnement>/bin/activate
(py36_flask_server) ubuntu@ip-10-0-0-14:~$

uWSGI

Installer avec pip3 à partir de l'environnement créé avec virtualenv
$pip3 install uwsgi

Vérifier la version

$uwsgi --version

À propos, il y avait aussi un moyen d'utiliser Anaconda au lieu de Virtualenv. Cependant, veuillez noter que des erreurs se produisent fréquemment lors de l'installation d'uWSGI.

Si vous souhaitez utiliser Anaconda Cela prendra du temps, mais cela sera résolu, alors reportez-vous à l'article suivant https://katsuwosashimi.com/archives/300/python-conda-install-uwsgi-failed/

Flask

Installer avec pip à partir de l'environnement créé avec virtualenv
$pip3 install flask

c'est tout

Résumé C'est devenu assez long au stade de l'installation

Vient ensuite Implémentation

Recommended Posts