很早之前就写过一篇 Python3 基于 Nginx 部署 Django 项目 的文章,一直没有发布出来,这次部署 Flask 项目的时候用到了很多之前 Django 的东西,所有干脆同时将这两篇发布。
很多细节的内容我就不写了,只把 Nginx 配置和 uWSGI 配置给出即可,因为原理是一毛一样的。其中有一点不同的是,Django 中有 wsgi.py 文件,所以我们不需要指定项目的根目录、主程序、python解释器路径等相关内容。但是 Flask 是轻量级的 web 服务器,没有这些东西,所以我们在配置 Nginx 和 uWSGI 的时候需要指定这些内容。
Nginx 配置:
# Flask dataV api
server {
listen 5050;
server_name data.migelab.com;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params; # 导入uwsgi配置
uwsgi_pass 127.0.0.1:5555; # 转发端口,需要和uwsgi配置当中的监听端口一致
uwsgi_param UWSGI_PYTHON /usr/bin/python3; # Python解释器所在的路径,如果有虚拟环境可将路径设置为虚拟环境
uwsgi_param UWSGI_CHDIR /opt/dataV; # 项目根目录
uwsgi_param UWSGI_SCRIPT run:app; # 项目的主程序,比如你测试用run.py文件,文件中app = Flask(__name__),那么这里就填run:app
}
}
uWSGI 配置:
[uwsgi]
# uWSGI 的监听端口
socket = 127.0.0.1:5555
# 项目根目录
chdir = /opt/dataV
# Flask 项目的启动文件
wsgi-file = run.py
# 程序内启用的application变量名
callable = app
# 进程数量
processes = 4
vacuum = true
master = true
启动 uWSGI 服务器:
uwsgi --ini /opt/dataV/uwsgi.ini &