044_Flask+uwsgi+Nginx+Centos项⽬部署以及Flask知识点难点总结⽂章⽬录
1. 项⽬概述
基于 Flask 框架的任务清单管理系统托管在
Flask 的基本⼯作流程如下所⽰
多⽂件 Flask 程序的基本结构,如下图所⽰:
2. Python 项⽬部署
整个项⽬的部署⽅案选择的是:Flask+uwsgi+Nginx+Centos
uWSGI、uwsgi与WSGI:
uWSGI是⼀个web服务器,它实现了WSGI协议、uwsgi协议、http协议等。(C语⾔开发)
uwsgi是⼀种线路协议⽽不是通信协议,常⽤于在uWSGI服务器与其他⽹络服务器的数据通信。
WSGI是⼀种Web服务器⽹关接⼝。它是⼀个Web服务器(uWSGI等服务器)与web应⽤(如⽤Django/Flask框架写的程序)通信的⼀种协议。
Nginx: 是⼀个 Web 服务器和反向代理服务器,⽤于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。 采⽤单线程来异步⾮阻塞处理请求(epoll)实现⾼并发功能。⽬前使⽤的最多的 Web 服务器或者代理服务器,像淘宝、新浪、⽹易、迅雷等都在使⽤。
Nginx的优势:
跨平台、配置简单。
⾮阻塞、⾼并发连接。处理 2-3 万并发连接数,官⽅监测能⽀持 5 万并发
内存消耗⼩, 开启 10 个 Nginx 才占 150M 内存。
成本低廉,且开源。
稳定性⾼,宕机的概率⾮常⼩。
2.1 云主机配置
为实现⽤户的正常访问,需要在控制台设置云服务器的安全组
进⼊到安全组后,需要添加如下所⽰安全组规则
具体编辑安全组规则的信息为:
2.2 部署步骤
step1,选择云主机/虚拟机:Centos/RedHat 7
step2,利⽤ git 将项⽬下载到主机上
pip install git -y
# 项⽬存放⽬录,可⾃定义。
mkdir -p /data/www/
cd /data/www/
git clone giee/J_WJ/TodoList.git
step3,配置虚拟环境和安装第三⽅模块
mv TodoList TodoProject
cd /data/www/TodoProject
yum install python3 python3-devel -y  # 开发环境
pip install virtualenv
virtualenv -p /usr/bin/python3 venv  # 创建虚拟环境 venv
source venv/bin/activate  # 开启虚拟环境 venv
pip install -  # 安装
step4,配置并启动 uwsgi ,⼀定要在虚拟环境 venv 开启的情况下安装 uwsgi # 1. ⼀定要在虚拟环境 venv 开启的情况下安装 uwsgi
pip install uwsgi
# 2. 创建 uwsgi 的配置⽂件
# 配置⽂件位置: /data/www/TodoProject/uwsgi.ini,内容如下:
[uwsgi]
# 源码⽬录
chdir =/data/www/TodoProject
# Python虚拟环境
home =/data/www/TodoProject/venv
module = manage
callable= app
master = true
processes =4
# 启动的端⼝号
http =0.0.0.0:5000
# socket存放⽂件
socket =/data/www/logs/todo.sock
chmod-socket =777
logfile-chmod =644
buffer-size =65535
# pid存放⽂件
pidfile =/data/www/logs/todo.pid
daemonize =/data/www/logs/todo.log
static-map=/static =/data/www/TodoProject/app/static
# 3. 启动uwsgi服务
uwsgi --ini uwsgi.ini
# 如果你的配置⽂件更新了,你需要重新加载 uwsgi 配置
uwsgi --reload/data/www/logs/todo.pid
# 如需关闭 uwsgi 服务
uwsgi --stop /data/www/logs/todo.pid
step5,检查 uwsgi 开启是否成功
ps aux |grep uwsgi  # 如果放回 6 个进程则证明已开启,注意配置⽂件中 processes = 4 # curl 可在命界⾯显⽰⽹址的内容,⽤来检测⼀个⽹址是否能够正常访问,
# 如返回login页⾯的前端代码则表明 uwsgi 运⾏正常,可以进⾏下⼀步了
curl 127.0.0.1:5000/login
报错: 如 curl 不成功且在 /data/www/logs/todo.log ⽇志中存在如下错误,则表明虚拟环境 venv 中并没有安装 uwsgi,需要开启虚拟环境后重新进⾏ step4。
nginx部署前端项目
step6,安装配置 Nginx 服务器
# 1. 安装
yum install nginx -y
# 如不可以安装,添加 nginx 源
rpm -Uvh /packages/centos/7/noarch/RPMS/arch.rpm
# 2. 配置虚拟主机
# nginx 的“原始”配置⽂件为:/etc/f
# 编辑⾃定义配置⽂件需放置在路径:/etc/nginx/conf.f
server {
# 监听端⼝
listen 80 default_server;
# 允许域名
server_do;
# 使⽤alias路径替换location路径
location /static {
alias /data/www/TodoProject/app/static;
}
location /{
# 使⽤try_files判断uri是否带有⽂件名或者⽬录名,如果没有跳转到其他代理服务器
try_files $uri @todoApp;
}
location @todoApp {
# 包含uwsgi的请求参数
include uwsgi_params;
# 转发请求给uwsgi
uwsgi_pass unix:/data/www/logs/todo.sock;
}
}
step7,启动 nginx
nginx  # 启动
nginx -s stop  # 停⽌
nginx -s reload  # 配置⽂件更新,需要重新加载配置⽂件的情况
step8,⾄此如能通过 ip 地址实现⽹站的访问,则证明项⽬部署成功
3. Flask 项⽬知识点难点总结
3.1 环境准备
python3.7 + Flask + pymysql
3.2 Flask 蓝图 (组件化开发)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。