Suite de Installation
Une description approximative et l'installation de chaque application Voir article précédent
flask_web_application/
├── application/
│ ├── __init__.py
│ └── views.py
└── server.py
Tout d'abord, créez le corps principal de Flask appelé app
__init__.py
from flask import Flask
app = Flask(__name__)
import application.views
Après avoir accédé au répertoire racine Renvoyez simplement "Hello, World"
views.py
from application import app
@app.route('/')
def show_entries():
return "Hello World"
Fichiers exécutés par uWSGI Le processus commence à partir d'ici
server.py
from application import app
if __name__ == "__main__":
app.run(host='0.0.0.0')
D'ailleurs, cette fois je l'ai fait dans / home / ubuntu / application / </ code>
Pour les autres répertoires
Passez l'autorité avec chown à l'utilisateur qui exécute uWSGI
Définissez l'autorité sur environ "775" avec chmod
J'expliquerai plus tard, mais cette fois uWSGI
Nom du groupe: www-data
Nom d'utilisateur: www-data
Courir sur
uWSGI
Commencez par créer uwsgi.ini
uwsgi.ini est un fichier de configuration à lire au démarrage d'uwsgi
Il est juste lu au démarrage pour que vous puissiez le mettre n'importe où
Application Flask facile à comprendre créée cette fois
Mettez-le juste en dessous
uwsgi.ini
[uwsgi]
base = /home/ubuntu/application/flask_web_application
module = server:app
virtualenv = /home/ubuntu/py36_flask_server
pythonpath = %(base)
callable = app
uid = www-data
gid = www-data
master = true
processes = 1
threads = 1
socket = /tmp/uwsgi.sock
chmod-socket = 666
vacuum = true
die-on-term = true
thunder-lock = true
Seule la partie principale
variable
La description
base
Répertoire des applications
module
app = Flask(__name__)L'application faite en
virtualenv
Répertoire d'environnement virtuel Python
pythonpath
Identique à la base
callable
Module à appeler(app)
uid
Exécuté par nom d'utilisateur
gid
Exécuté par nom de groupe
processes
Le nombre de cœurs est recommandé en fonction de l'environnement et de l'application
threads
FlaskLe nombre de threads utilisés par et l'exécution de Flask dans plusieurs threads n'est pas recommandé.(Problème GIL)
socket
Socket de domaine UNIX
Créez à l'avance le nom d'utilisateur et le nom de groupe spécifiés par uid et gid.
www-data devrait déjà exister
Si vous ne le spécifiez pas, il sera exécuté en tant que root, donc ce n'est pas très bon pour la sécurité
Divers articles qui vous seront utiles
https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
https://qiita.com/yasunori/items/64606e63b36b396cf695
https://qiita.com/wapa5pow/items/f4326aed6c0b63617ebd
https://qiita.com/11ohina017/items/da2ae5b039257752e558
Ajouter uWSGI au service
$ sudo vi /etc/systemd/system/uwsgi.service
#Ajoutez ce qui suit
[Unit]
Description=uWSGI
After=syslog.target
[Service]
ExecStart=/home/ubuntu/py36_flask_server/bin/uwsgi --ini /home/ubuntu/application/flask_web_application/uwsgi.ini
# Requires systemd version 211 or newer
RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
Exécutez uWSGI installé dans l'environnement virtuel dans ExecStart
Spécifiez le fichier de paramètres créé précédemment dans --ini
Ajouter uWSGI au service
$ sudo systemctl enable uwsgi
Nginx
Désactiver la page d'accueil par défaut de Nginx
Supprimer conf.d / default.conf s'il existe
$ sudo rm /etc/nginx/conf.d/default.conf
Supprimer / nginx / sites-enabled / default le cas échéant
$ sudo rm /etc/nginx/sites-enabled/default
Cela fera disparaître le site par défaut
Créer des sites disponibles et activés pour les sites s'ils n'existent pas
$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled
Quels sont les sites disponibles et activés pour les sites après tout
Fondamentalement, pour utiliser plusieurs domaines sur un serveur
Facile à gérer
Cependant, cette fois, je n'utilise pas plusieurs domaines séparément
En raison de la structure d'Ubuntu + Nginx + uWSGI
Plus stable que d'utiliser conf.d
Comment utiliser
-Créer un fichier de paramétrage pour chaque domaine dans les sites disponibles
・ Créer un lien symbolique pour les sites disponibles dans les sites activés
Chose très simple
Les liens symboliques sont des soi-disant raccourcis
Dans la partie bloc http de /etc/nginx/nginx.conf
Réécrire /etc/nginx/conf.d/*.conf
$ sudo vi /etc/nginx/nginx.conf
http{
…
include /etc/nginx/conf.d/*.conf;
}
↓
http{
…
include /etc/nginx/sites-enabled/*;
}
Ajouté /etc/nginx/sites-available/myapplication.conf
$ sudo vi /etc/nginx/sites-available/myapplication.conf
#Ajoutez ce qui suit
server {
listen 80;
root /var/www/html;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
}
En gros, essayez_files avec l'URL telle quelle
Une structure qui recherche depuis la racine et redirige en interne vers uWSGI (avec l'URL telle quelle) si elle n'existe pas
la racine n'a rien de particulier
Vous pouvez tout lancer sur uWSGI, mais la formule est la même que ci-dessus
uwsgi_params est un fichier de configuration uWSGI
unix: ///tmp/uwsgi.sock est un socket de domaine UNIX
C'est ce qu'on appelle pour communiquer avec uWSGI.
Vous pouvez également vous connecter avec TCP, mais il occupera le port.
Mieux vaut utiliser le socket de domaine
Si vous créez un raccourci, les paramètres de nginx sont terminés
$ sudo ln -s /etc/nginx/sites-available/myapplication.conf /etc/nginx/sites-enabled/myapplication
Accès
Il est recommandé de redémarrer l'ensemble du système une fois ici.
Sinon, redémarrez simplement Nginx
$ sudo systemctl restart nginx
Si uwsgi n'est pas en cours d'exécution, démarrez-le
& sudo systemctl start uwsgi
vérification des erreurs uwsgi
$ sudo systemctl status uwsgi
vérification des erreurs nginx
$ sudo systemctl status nginx
Lisez attentivement et s'il ne semble pas y avoir d'erreur, essayez d'accéder
$ curl http://127.0.0.1
Hello, World
Résumé
Fondamentalement, il est plus rapide de laisser Nginx traiter les fichiers statiques
S'il vous plaît laissez-moi savoir s'il y a quelque chose qui ne va pas avec ceci
Recommended Posts