


Comment utiliser Nginx pour déployer une application Flask dans Centos
Préparation de l'environnement
Outil d'installation du package Python pip : sudo apt-get install pip
virtualenv : Afin d'éviter les conflits entre l'environnement système et l'environnement d'application, utilisez un environnement virtuel pour installer des applications Dépendances, virtualenv peut créer un environnement de développement indépendant pour chaque application Python Méthode d'installation : sudo pip install virtualenv
sudo apt-get install pip
virtualenv:为了避免系统环境与应用环境之间的冲突,使用虚拟环境来安装应用的依赖,virtualenv可以为每个python应用创建独立的开发环境,安装方式:sudo pip install virtualenv
虚拟环境使用
flask项目地址:/usr/local/flasky,只需要在项目地址下运行指令:
virtualenv venv
约定俗成一般使用“venv”作为虚拟环境的名称,这样我们就创建了一个虚拟环境的文件夹venv如下图红框所示:
接下来激活虚拟环境,只用指令
source venv/bin/activate
激活虚拟环境后,命令行抬头会有(venv)标识,仅需虚拟环境后,一切安装python的操作都会讲包和引用装在虚拟环境中,不会影响全局的python环境
退出虚拟环境的指令,直接敲:
deactivate
即可退出虚拟环境
配置flask应用环境
flask应用开发的时候,会应用到非常多的模板,“狗书”中有介绍一种比较方便的方式,直接把开发环境的flask依赖等导出为一个txt文件,然后在centos的虚拟环境中使用相应指令根据这个txt文件安装会非常方便。
pip freeze >requerements.txt
该指令导出一个文件名为requirements.txt的文本,里面的内容如下图所示
然后centos中使用以下指令
pip install -r requerments.txt
这样就会在虚拟环境中安装一个与开发环境一致的副本了。
注意一定要在虚拟环境中使用批量安装指令,不然就安装到全局去了,后果还是比较蛋疼的。
安装uwsgi
flask的实际生产运行环境选择不多,比较成熟的是【gunicorn】和【uwsgi】,这里推荐一本书董伟明的《python web开发实战》里面有讲这两种部署。
以下内容来自百度百科:
uwsgi是一个web服务器,它实现了wsgi协议、uwsgi、http等协议。nginx中httpuwsgimodule的作用是与uwsgi服务器进行交换。wsgi是一种web服务器网关接口。它是一个web服务器(如nginx,uwsgi等服务器)与web应用(如用flask框架写的程序)通信的一种规范。
安装指令如下,注意一定要保证已经进入了虚拟环境并激活:
pip install uwsgi
不需要使用sudo ,因为virtualvenv没有权限要求。
上传项目文件
博主使用的linux连接工具是xshell,在之前的一篇文章中有讲如何上传文件到linux主机,这里不再详细说明,展示一下大概的项目结构以及启动文件manage.py
tree命令可以以树形图的形式展示文件结构,可以赋予参数设置树的深度,这里博主展示了2层
安装命令:
sudo apt-get install tree
manage.py代码如下
#coding=utf-8 #!/usr/local/flasky/venv python ''' created on 2017/11/9 @author: savitar丶 project: ''' import os from app import create_app from flask_script import manager, shell app = create_app(os.getenv('flask_config') or 'default') manager = manager(app) def make_shell_context(): return dict(app=app) manager.add_command("shell", shell(make_context=make_shell_context)) @manager.command def deploy(): """run deployment tasks.""" pass if __name__ == '__main__': manager.run() #app.run()
命令行运行flask项目
python manage.py runserver
以上命令一般都是在开发环境进行调试的时候使用,或者注释掉“manager.run()”,使用“app.run()”,后者可以直接在pycharm中执行项目,这里不再详细说明
配置uwsgi
我们直接在flask的根目录下面新建一个文件“config.ini”,使用的方式是配置启动。文件内容如下
[uwsgi] # uwsgi 启动时所使用的地址与端口 socket = 127.0.0.1:5000 #虚拟环境目录 home = /usr/local/flasky/venv #指向网站根目录 chdir = /usr/local/flasky #python启动程序文件 wsgi-file = manage.py #python程序内用于启动的application变量名 callable = app #处理器数 processes = 4 #线程数 threads = 2 #状态监测地址 stats = 127.0.0.1:9191 #设置uwsgi包解析的内部缓存区大小。默认4k buffer-size = 32768
配置文件的执行方式,命令行输入指令:
uwsgi config.ini
Utilisation de l'environnement virtuel
Adresse du projet Flask : /usr/local/flasky. , Exécutez simplement la commande sous l'adresse du projet :[program:flasky] # 启动命令入口 command=/usr/local/flasky/venv/bin/uwsgi /usr/local/flasky/config.ini # 命令程序所在目录 directory=/usr/local/flasky #运行命令的用户名 user=root autostart=true autorestart=true #日志地址 stdout_logfile=/usr/local/flasky/logs/uwsgi_super.log
< img src="https://img.php.cn/upload/article/000/887/227/168467838686388.png" alt="Comment utiliser Nginx pour déployer des applications flask dans centos" />
server { listen 80; server_name www.cloud-test.com; #公网地址 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:5000; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理 uwsgi_param uwsgi_pyhome /usr/local/flasky/venv; # 指向虚拟环境目录 uwsgi_param uwsgi_chdir /usr/local/flasky; # 指向网站根目录 uwsgi_param uwsgi_script manage:app; # 指定启动程序 } }

deactivate
🎜🎜 pour quitter l'environnement virtuel🎜🎜🎜Configurez l'environnement d'application flask🎜 🎜🎜Lors du développement d'applications flask, de nombreux modèles seront utilisés, dans le "dog book". Une méthode plus pratique est introduite. Il est très pratique d'exporter directement les dépendances flask de l'environnement de développement dans un fichier txt, puis de les utiliser. les instructions correspondantes dans l'environnement virtuel centos à installer selon ce fichier txt. 🎜rrreee🎜 Cette commande exporte un fichier texte nommé exigences.txt, dont le contenu est tel qu'indiqué ci-dessous🎜🎜
pip install -r requerments.txt
🎜🎜Ce sera dans l'environnement virtuel Installer une copie cohérente avec l'environnement de développement. Assurez-vous d'utiliser les instructions d'installation par lots dans l'environnement virtuel, sinon il sera installé globalement et les conséquences seront assez douloureuses. 🎜🎜🎜Installation de uwsgi🎜🎜🎜Il n'y a pas beaucoup de choix pour l'environnement d'exécution de production réel de flask. Les plus matures sont [gunicorn] et [uwsgi]. Voici un livre recommandé par "Python Web Development in Practice" de Dong Weiming. qui parle de ces deux déploiements. 🎜🎜Le contenu suivant provient de l'Encyclopédie Baidu : 🎜🎜uwsgi est un serveur Web qui implémente le protocole wsgi, uwsgi, http et d'autres protocoles. La fonction du module httpuwsgi dans nginx est d'échanger avec le serveur uwsgi. wsgi est une interface de passerelle de serveur Web. Il s'agit d'une spécification de communication entre un serveur Web (tel que nginx, uwsgi, etc.) et une application Web (telle qu'un programme écrit avec le framework Flask).
Les instructions d'installation sont les suivantes. Assurez-vous d'avoir accédé à l'environnement virtuel et de l'avoir activé : 🎜🎜
pip install uwsgi
🎜🎜Il n'est pas nécessaire d'utiliser sudo car virtualvenv n'a aucune exigence d'autorisation. . 🎜🎜🎜Télécharger les fichiers du projet🎜🎜🎜L'outil de connexion Linux utilisé par le blogueur est xshell Dans un article précédent, j'ai expliqué comment télécharger des fichiers sur l'hôte Linux. Je ne l'expliquerai pas en détail ici, mais je montrerai le projet général. structure et fichier de démarrage. manage.py🎜🎜
Commande d'installation : 🎜 🎜
sudo apt-get install tree
🎜 🎜Le code manage.py est le suivant🎜rrreee🎜🎜Ligne de commande pour exécuter le projet flask🎜🎜🎜python manage.py runserver
🎜🎜 Les commandes ci-dessus sont généralement utilisées lors du débogage dans l'environnement de développement, ou commentez " manager.run()", utilisez "app.run()", ce dernier peut directement exécuter le projet dans pycharm, aucun détail ne sera donné ici🎜 🎜🎜Configurer uwsgi🎜🎜🎜Nous créons un nouveau fichier directement sous le répertoire racine du flacon "config.ini" est utilisé pour configurer le démarrage. Le contenu du fichier est le suivant🎜rrreee🎜Comment exécuter le fichier de configuration, saisissez la commande sur la ligne de commande :🎜🎜uwsgi config.ini
🎜🎜ou n'écrivez pas le fichier de configuration (pas recommandé), saisissez directement sur la ligne de commande🎜🎜 uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app –process 4 –threads 2🎜🎜callable=app ici l'application est une variable dans le manage.py fichier de programme, le type de cette variable est la classe d'application Flask🎜🎜🎜🎜这里是因为博主已经配置好了项目自启动,已经有一个配置文件在运行了,大家按照正常流程配置就好。ctrl+c关闭程序,在实际项目中我们的服务器上可能会有多个项目在运行,我们需要应用随同服务器启动并作为后台服务运行才是实际项目需要,所以我们需要安装另一个工具来引导执行uwsgi
安装supervisor
supervisor可以同时启动多个应用,最重要的是当某个应用down掉的时候,他可以自动重启该应用,保证可用性。
sudo apt-get install supervisor
supervisor的全局配置文件在
打开该默认配置文件,最下面一行我们看到,该默认配置文件会从 /etc/supervisord/目录下面加载所有的配置文件
我们不需要修改默认的配置文件,只需要在/etc/supervisord/目录下新建一个配置文件(命名为flask_supervisor.conf)
该文件内容如下:
[program:flasky] # 启动命令入口 command=/usr/local/flasky/venv/bin/uwsgi /usr/local/flasky/config.ini # 命令程序所在目录 directory=/usr/local/flasky #运行命令的用户名 user=root autostart=true autorestart=true #日志地址 stdout_logfile=/usr/local/flasky/logs/uwsgi_super.log
这里command这一行代码看起来很长,其实就是之前我们的 “uwsgi config.ini”指令,这里使用的是绝对路径,保证命令和文件的准确性,大家也可以copy这一行代码出去执行,结果是ok的。autostart和autorestart参数保证了我们的应用可以一直保持启动的状态,即使是down掉了也能重启服务。
启动服务
sudo service supervisor start
终止服务
sudo service supervisor stop
安装nginx
nginx是轻量级,性能强,占用资源少,能很好的处理高并发的反向代理软件。
正向代理和反向代理
正向代理,作为一个媒介将互联网上获取的资源返回给相关联的客户端。代理和客户端在一个局域网,对于服务是透明的。反向代理,根据客户端的请求,从后端的服务器上获取资源,然后再讲这些资源返回给客户端。代理和服务器再一个局域网,对客户端是透明的。nginx是反向代理的最佳选择。
反向代理的作用
提高动态语言的io处理能力
加密和ssl加速
安全。
负载均衡
缓存静态内容
支持压缩。
nginx安装指令:
sudo apt-get install nginx
配置nginx
我们找到nginx的配置文件,不要修改默认的nginx.conf(路径 /etc/nginx/nginx.conf)文件,只需要在同样的文件夹下面新建一个文件夹(conf.d)然后在conf.d下面新建配置文件(flask_ng.conf)即可,如下图
flask_ng.conf文件内容如下
server { listen 80; server_name www.cloud-test.com; #公网地址 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:5000; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理 uwsgi_param uwsgi_pyhome /usr/local/flasky/venv; # 指向虚拟环境目录 uwsgi_param uwsgi_chdir /usr/local/flasky; # 指向网站根目录 uwsgi_param uwsgi_script manage:app; # 指定启动程序 } }
启动nginx
sudo service nginx restart
然后浏览器直接访问服务器http://www.cloud-test.com地址,结果如下
小case,解决办法,直接修改本机hosts,绑定就好了,如下图所示
然后再去访问
然后也可以找自己的同事一起访问,看看并发请求,网站的运行情况,想来能解决在开发环境使用了host 0.0.0.0 也只能处理一个用户的请求的问题
查看应用的运行情况
supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:
输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面(还是纯命令行),可以看到应用的运行情况
就可以在下面输入命令了。:
help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)
Vous pouvez également opérer directement via la commande shell :
supervisorctl status
supervisorctl update
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Améliorer les performances HDFS sur CentOS: un guide d'optimisation complet pour optimiser les HDF (système de fichiers distribué Hadoop) sur CentOS nécessite une considération complète du matériel, de la configuration du système et des paramètres réseau. Cet article fournit une série de stratégies d'optimisation pour vous aider à améliorer les performances du HDFS. 1. Expansion de la mise à niveau matérielle et des ressources de sélection: augmentez autant que possible le CPU, la mémoire et la capacité de stockage du serveur. Matériel haute performance: adopte les cartes réseau et les commutateurs de réseau haute performance pour améliorer le débit du réseau. 2. Configuration du système Réglage des paramètres du noyau à réglage fin: Modifier /etc/sysctl.conf Fichier pour optimiser les paramètres du noyau tels que le numéro de connexion TCP, le numéro de manche de fichier et la gestion de la mémoire. Par exemple, ajustez l'état de la connexion TCP et la taille du tampon

La commande de fermeture CENTOS est arrêtée et la syntaxe est la fermeture de [options] le temps [informations]. Les options incluent: -H Arrêtez immédiatement le système; -P éteignez l'alimentation après l'arrêt; -r redémarrer; -t temps d'attente. Les temps peuvent être spécifiés comme immédiats (maintenant), minutes (minutes) ou une heure spécifique (HH: mm). Des informations supplémentaires peuvent être affichées dans les messages système.

Étapes pour configurer l'adresse IP dans CENTOS: Afficher la configuration du réseau actuel: IP ADDR Modifier le fichier de configuration du réseau: Sudo VI / etc.

Les principales différences entre Centos et Ubuntu sont: l'origine (Centos provient de Red Hat, pour les entreprises; Ubuntu provient de Debian, pour les particuliers), la gestion des packages (Centos utilise Yum, se concentrant sur la stabilité; Ubuntu utilise APT, pour une fréquence de mise à jour élevée), le cycle de support (CentOS fournit 10 ans de soutien, Ubuntu fournit un large soutien de LT tutoriels et documents), utilisations (Centos est biaisé vers les serveurs, Ubuntu convient aux serveurs et aux ordinateurs de bureau), d'autres différences incluent la simplicité de l'installation (Centos est mince)

La politique de sauvegarde et de récupération de GitLab dans le système CentOS afin d'assurer la sécurité et la récupérabilité des données, Gitlab on CentOS fournit une variété de méthodes de sauvegarde. Cet article introduira plusieurs méthodes de sauvegarde courantes, paramètres de configuration et processus de récupération en détail pour vous aider à établir une stratégie complète de sauvegarde et de récupération de GitLab. 1. MANUEL BACKUP Utilisez le Gitlab-RakegitLab: Backup: Créer la commande pour exécuter la sauvegarde manuelle. Cette commande sauvegarde des informations clés telles que le référentiel Gitlab, la base de données, les utilisateurs, les groupes d'utilisateurs, les clés et les autorisations. Le fichier de sauvegarde par défaut est stocké dans le répertoire / var / opt / gitlab / backups. Vous pouvez modifier / etc / gitlab

Étapes d'installation de CentOS: Téléchargez l'image ISO et Burn Bootable Media; démarrer et sélectionner la source d'installation; sélectionnez la langue et la disposition du clavier; configurer le réseau; partitionner le disque dur; définir l'horloge système; créer l'utilisateur racine; sélectionnez le progiciel; démarrer l'installation; Redémarrez et démarrez à partir du disque dur une fois l'installation terminée.

Centos sera fermé en 2024 parce que sa distribution en amont, Rhel 8, a été fermée. Cette fermeture affectera le système CentOS 8, l'empêchant de continuer à recevoir des mises à jour. Les utilisateurs doivent planifier la migration et les options recommandées incluent CentOS Stream, Almalinux et Rocky Linux pour garder le système en sécurité et stable.

Le redémarrage du réseau dans CentOS 8 nécessite les étapes suivantes: Arrêtez le service réseau (NetworkManager) et rechargez le module réseau (R8169), démarrez le service réseau (NetworkManager) et vérifiez l'état du réseau (par ping 8.8.8.8)
