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
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
$ 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
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
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
$ 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
S'il vous plaît laissez-moi savoir s'il y a quelque chose qui ne va pas avec ceci
Recommended Posts