使用uWSGI与Nginx部署Flask应用完整指南
本文详细介绍如何在生产环境中使用uWSGI和Nginx部署Flask项目。内容涵盖WSGI与uwsgi协议概念解析,uWSGI配置文件编写,Nginx反向代理设置,以及服务的启动、重启与停止命令。通过具体代码示例,帮助开发者解决直接运行Flask性能低下的问题,实现高效稳定的Web服务部署。
Flask部署概述
概况
在开发阶段,通常直接使用Python命令运行Flask程序,这种方式便于调试。然而,当应用上线部署时,直接运行的方式会导致性能显著下降。为了提升生产环境的运行效率,推荐采用uWSGI配合Nginx的方式进行部署。
理解uWSGI相关概念
uWSGI
在正式部署之前,需要理解以下三个核心概念:
- WSGI是Web服务器与Web应用程序之间的接口标准,它充当了Web服务器和Web应用框架之间的桥梁。
- uwsgi是一种传输协议,用于定义数据传输的具体类型。
- uWSGI是一个实现了uwsgi协议和WSGI规范的Web服务器软件。
完整部署步骤
部署流程
首先,准备一个名为run.py的Flask应用程序文件。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return '部署'
if __name__ == '__main__':
app.run()
接下来,安装uWSGI组件。
pip install uwsgi
在项目目录下创建一个uWSGI的配置文件。
[uwsgi]
#配合nginx使用
socket = 127.0.0.1:8000
#项目路径 /Users/xiaoyuan/Desktop/flask_test
chdir = 自己项目路径
#wsgi文件 run就是flask启动文件去掉后缀名 app是run.py里面的Flask对象
module = run:app
#指定工作进程
processes = 4
#主进程
master = true
#每个工作进程有2个线程
threads = 2
#指的后台启动 日志输出的地方
daemonize = uwsgi.log
#保存主进程的进程号
pidfile = uwsgi.pid
#虚拟环境环境路径
virtualenv = /Users/xiaoyuan/.virtualenvs/flask_test
随后配置Nginx,找到nginx.conf文件,在http配置块中添加相应的服务器配置代码。
server {
# 监听端口
listen 80;
# 监听ip 换成服务器公网IP
server_name 127.0.0.1;
#动态请求
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
#静态请求
location /static {
alias /Users/xiaoyuan/Desktop/flask_test/static;
}
}
启动服务
首先启动uWSGI服务。
uwsgi --ini uwsgi.ini
接着启动Nginx服务。
/etc/init.d/nginx start
最后,访问Nginx监听的IP地址。由于本例为本地部署,直接访问http://127.0.0.1:80/即可。

服务管理命令
其他常用命令
重启uWSGI服务。
uwsgi --reload uwsgi.pid
停止uWSGI服务。
uwsgi --stop uwsgi.pid
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









