Python 部署 uWSGI 完整指南:安装、配置与框架集成

阿橙
阿橙
发布时间:2026-10-15 | 4人浏览过
原创

本文详细讲解 uWSGI 在 Ubuntu/Debian 系统中的多种安装方式,包括 pip、脚本及源码编译。通过 Hello World 示例演示基础 WSGI 应用部署,深入解析进程与线程并发配置、Stats 监控子系统及 uwsgitop 工具使用。进一步展示 uWSGI 与 Nginx 的协议对接(HTTP/Socket),并分别提供 Django 和 Flask 框架在 uWSGI 下的具体配置命令与 INI 文件示例,助力高并发 Web 服务搭建。

本文重点阐述如何部署基础的 WSGI 应用以及主流 Web 框架的运行环境。

以 Ubuntu 或 Debian 系统为例,首先需要安装必要的依赖包:

apt-get install build-essential python-dev

Python 环境下安装 uWSGI

1、利用 pip 命令进行安装:

pip install uwsgi

2、执行官方提供的安装脚本:

curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

上述操作会将 uWSGI 的二进制文件安装至 /tmp/uwsgi 路径,该路径可根据实际需求进行修改。

3、通过源代码进行编译安装:

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
make

编译完成后,当前目录下将生成一个可用的 uwsgi 二进制文件。

首个 WSGI 应用示例

我们从最简单的 "Hello World" 程序开始,创建文件 foobar.py,具体代码如下:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

uWSGI 的 Python 加载器默认会查找名为 application 的函数。

随后启动 uWSGI 以运行 HTTP 服务器,将程序部署在 HTTP 端口 9090 上:

uwsgi --http :9090 --wsgi-file foobar.py

增加并发处理与监控机制

默认配置下,uWSGI 仅启动单个进程和单线程。

可通过 --processes 选项增加进程数量,或使用 --threads 选项增加线程数,二者亦可同时启用。

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2

上述命令将生成 4 个进程,每个进程包含 2 个线程。

若需执行监控任务,可启用 stats 子系统,其监控数据格式为 JSON:

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

我们可以安装 uwsgitop(功能类似 Linux 的 top 命令)来实时查看监控数据:

pip install uwsgitop

与 Web 服务器结合使用

将 uWSGI 与 Nginx Web 服务器配合使用,可实现更高的并发处理性能。

一个常用的 Nginx 配置片段如下:

location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
}

上述代码表示 Nginx 接收到的 Web 请求将转发至端口为 3031 的 uWSGI 服务进行处理。

此时,我们可以生成 uWSGI 以本地方式使用 uwsgi 协议:

uwsgi --socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

若你的 Web 服务器使用 HTTP 协议,则必须告知 uWSGI 本地使用 http 协议(这与自动生成代理的 --http 选项不同):

uwsgi --http-socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

部署 Django 应用

Django 是 Python 中最常用的 Web 框架之一,假设 Django 项目位于 /home/foobar/myproject:

uwsgi --socket 127.0.0.1:3031 --chdir /home/foobar/myproject/ --wsgi-file myproject/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

--chdir 参数用于指定项目所在的路径。

我们可以将上述命令整合为一个 yourfile.ini 配置文件:

[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191

接下来只需执行以下命令即可运行:

uwsgi yourfile.ini

部署 Flask 应用

Flask 是一款流行的 Python Web 框架。

创建文件 myflaskapp.py,代码如下:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return "<span style='color:red'>I am app 1</span>"

执行以下命令:

uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191

至此,关于 Python uWSGI 安装配置的介绍已完成,更多相关 Python uWSGI 安装配置内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表