使用uWSGI与Nginx部署Flask应用完整指南

远山来客
远山来客
发布时间:2026-10-13 | 4人浏览过
原创

本文详细介绍如何在生产环境中使用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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表