Une histoire sur moi, qui ignore à la fois CentOS et la construction de serveurs Web, j'ai mis le pied sur Flask, Nginx et uWSGI. La procédure est résumée ici.
[](Un article distinct décrit les diverses difficultés qui se sont produites au cours du processus ↓)
Vous devez le remplacer comme il convient et le lire.
ʻUser: nom d'utilisateur
proj: répertoire du projet
test.py`: écrivez le code qui exécute Flask. Placé directement sous proj
$ cd /home/user/proj
À l'aide de Flask, créez un environnement qui facilite la création d'applications Web avec Python.
$ sudo yum install epel-release #Mettez le référentiel
$ sudo yum install python3-devel #Insérer python3
$ pip3 install pipenv #Introduit pipenv
$ export PIPENV_VENV_IN_PROJECT=true #Définir pour créer un environnement virtuel dans le répertoire du projet
$ pipenv --python 3 #Créer un environnement virtuel
$ ls -a #Consultez la liste des fichiers
Si vous pouvez confirmer que «.venv» est créé, c'est OK.
C'est le minimum requis.
$ pipenv install flask markupsafe
Si vous ne voulez pas vous soucier de la migration, installez avec pipenv
au lieu de pip
.
S'il y a d'autres modules requis, installez-les avec pipenv install
de la même manière.
Créez test.py
.
$ vi test.py
Entrez dans le mode d'insertion avec ʻi et écrivez ce qui suit. Lorsque vous avez fini d'écrire, quittez avec ʻEsc
→ : wq
.
test.py
from flask import *
app = Flask(__name__)
@app.route("/")
def main():
return 'Hello, World!\n'
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=80)
C'est un code qui affiche uniquement "Bonjour, Monde!" Lorsque la page d'accueil est accédée.
Peu importe le nombre de modules que vous installez, il ne démarre pas sans entrer dans l'environnement virtuel.
$ pipenv shell #Entrez dans l'environnement virtuel
Exécutez test.py
!
$ python test.py
Utilisez un navigateur tel que Google Chrome pour saisir l'adresse IP du serveur qui l'a exécuté pour y accéder.
Lorsque "Hello, World!" S'affiche, c'est OK.
Revenez au terminal et arrêtez l'exécution avec Ctrl + C
.
Introduction du serveur Web utilisant Nginx. [](Si vous utilisez déjà Apache etc. et que vous voulez profiter de cette opportunité pour rompre avec Apache ici.)
Tout d'abord, ouvrez nginx.repo
avec vim etc.
$ sudo vi /etc/yum.repos.d/nginx.repo
Décrivez ce qui suit.
nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
Configurez le pare-feu pour autoriser les services HTTP.
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --reload
$ sudo systemctl start nginx #Démarrage immédiat
$ lsof -i:80 #OK si nginx est affiché
uWSGI est un serveur d'applications qui sert d'intermédiaire entre Flask et Nginx.
$ pipenv install uwsgi
$ vi test_uwsgi.ini
Décrivez ce qui suit.
test_uwsgi.ini
[uwsgi]
base = /home/user/proj
app = test
module = %(app)
virtualenv = /home/user/proj/.venv
pythonpath = %(base)
socket = /tmp/test_uwsgi.sock
chmod-socket = 666
callable = app
logto = /home/user/proj/log/%n.log
Si vous voulez l'organiser vous-même ↓ Résumé de la syntaxe du fichier ini uWSGI
Créez également un répertoire pour les journaux.
$ mkdir log
Créez un fichier de configuration pour Nginx dans le répertoire proj
.
$ vi test_nginx.conf
Décrivez ce qui suit.
test_nginx.conf
server {
listen 80;
server_name [adresse IP];
charset utf-8;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/tmp/test_uwsgi.sock;
}
}
Placez un lien symbolique pour que Nginx puisse s'y référer au démarrage.
sudo ln -s /home/user/proj/test_nginx.conf /etc/nginx/conf.d/
Assurez-vous de le spécifier avec un chemin absolu.
SELinux semble constamment surveiller et contrôler l'accès à l'intérieur de Linux. Pour minimiser les dégâts lorsqu'il est envahi par un PC. Si vous obtenez une erreur lors du démarrage de Nginx, vous pourrez peut-être la résoudre en procédant comme suit.
$ setenforce 0
Cela désactive le contrôle d'accès. Il semble que le simple fait de passer en mode Permissif ne signifie pas qu'il sera complètement désactivé.
Modifiez le fichier de paramètres lui-même afin qu'il ne soit pas restauré même s'il est redémarré.
$ vi /etc/selinux/config # "SELINUX=enforcing"À"SELINUX=permissive"Réécrire dans
La sécurité est-elle sûre sans utiliser SELinux? C'est bien de l'utiliser, mais j'ai conclu que ce n'était pas grave si vous définissiez fermement le pare-feu.
$ sudo systemctl restart nginx #Si vous ne désactivez pas SELinux, vous pouvez obtenir une erreur ici
$ uwsgi --ini test_uwsgi.ini #Démarrez uWSGI à partir du fichier de configuration
Rechargez le navigateur et si «Hello, World!» S'affiche, c'est OK
Faites-les démarrer automatiquement au démarrage du serveur.
vi /etc/systemd/system/uwsgi.service
Décrivez ce qui suit.
uwsgi.service
[Unit]
Description=uWSGI
After=syslog.target
[Service]
ExecStart=/home/user/proj/.venv/bin/uwsgi --ini /home/user/proj/test_uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
$ cat /lib/systemd/system/nginx.service #OK si celui que vous venez d'écrire est affiché
$ sudo systemctl daemon-reload # uwsgi.Service de rechargement
$ sudo systemctl enable uwsgi nginx #Activer les services uWSGI et Nginx
Essayez de redémarrer le serveur et vérifiez avec le navigateur. Si "Hello, World!" S'affiche, c'est OK. Je vous remercie pour votre travail acharné! !!