Python 配置 uWSGI 启动 Django 框架的详细教程

苏见山
苏见山
发布时间:2026-10-12 | 4人浏览过
原创

针对 Python 开发者在服务器端部署 Django 应用时的需求,本文梳理了基于 uWSGI 的运行环境搭建与 Nginx 流量转发方案。内容涵盖基础依赖安装、INI 参数详解、服务生命周期管理及常见报错排查,提供可直接复用的生产级配置模板。

部署目标与环境准备

本教程旨在通过 uWSGI 作为应用服务器启动 Django 项目,并利用 Nginx 处理静态资源与客户端请求转发。操作前请确保云服务器或虚拟机已就绪,且拥有管理员权限。由于涉及系统级命令与服务状态变更,建议在执行覆盖或修改配置前备份原有环境数据,避免关键文件丢失导致服务中断。

第1步:安装 Python 基础组件与 uWSGI

第1步:安装编译依赖与包管理工具

目的是确保后续依赖能正确编译安装。以常见 Linux 发行版为例,执行以下命令安装 Python3 及开发头文件:

yum install python3 python3-pip python3-devel

第2步:加载项目依赖并安装 uWSGI

进入项目根目录后,先安装业务所需的第三方库,随后全局安装 uWSGI。请注意依赖清单的标准命名规范:

pip3 install -r requirements.txt
pip3 install uwsgi

第2步:编写 uWSGI 配置文件

为便于维护与版本管理,通常将参数集中写入 uwsgi.ini。以项目路径 /home/oper/simp/Weekreport 为例,创建配置文件并填入以下参数:

# uwsgi.ini
[uwsgi]
# 监听端口(与 Nginx 通信)
socket = :9000
# http = :9000

# 项目根目录
chdir = /home/oper/simp/Weekreport
# WSGI 入口模块文件
wsgi-file = Weekreport/wsgi.py

# 进程与线程设置
master = true
processes = 5
threads = 2

# 缓冲区大小(单位 KB)
buffer-size = 130000

# 日志与状态文件路径
daemonize = /home/oper/simp/Weekreport/log/uwsgi.log
stats = %(chdir)/uwsgi/uwsgi.status
pidfile = %(chdir)/uwsgi/uwsgi.pid

注意:若仅用于本机测试连通性,可临时启用 http 模式直接访问,生产环境务必保留 socket 模式配合 Nginx 使用,以获得更高的并发吞吐量。

第3步:启动服务与设置开机自启

配置文件就绪后,可通过命令行或系统服务管理器控制运行状态。请在终端中切换到配置所在目录或指定绝对路径进行启动:

# 启动服务
uwsgi --ini /home/oper/simp/Weekreport/uwsgi.ini

# 查看后台运行状态(默认会追加写入 .log 文件)
tail -f /home/oper/simp/Weekreport/log/uwsgi.log

控制台出现类似 WSGI app 0 (...) ready in ... 及 spawned uWSGI worker 的输出即表示启动成功。若需实现重启服务器后自动拉起服务,推荐编写独立的 systemd unit 文件进行托管。直接使用传统方式时,通过 PID 文件安全停止进程:

uwsgi --stop /home/oper/simp/Weekreport/uwsgi/uwsgi.pid

第4步:配置 Nginx 反向代理

Nginx 在此架构中负责接收用户请求、分发静态资源并将动态请求转发给 uWSGI。需在 /etc/nginx/conf.d/ 目录下新建配置文件(如 djangouapp.conf),内容参考如下:

# Nginx 路由配置示例
server {
    listen 80 default_server;
    server_name localhost; # 替换为实际域名或服务器IP
    charset utf-8;
    
    access_log /applog/nginx/logs/access.log main;
    
    # 转发动态请求至 uWSGI
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9000; # 需匹配 uwsgi.ini 中的 socket 端口
    }

    # 静态文件映射
    location /static {
        alias /home/oper/simp/Weekreport/static; # 指向项目 static 目录
    }

    # 其他业务接口代理(按需调整)
    location /api/ {
        proxy_pass http://127.0.0.1:8080/;
    }
}

修改完成后重载 Nginx 使配置生效:nginx -t && nginx -s reload。

常见问题与排查

  • 权限警告:启动日志若提示 WARNING: you are running uWSGI as root !!!,出于安全规范建议新建专用运行账户(通过 --uid/--gid 指定),或使用 sudo -u www-data uwsgi --ini ... 切换身份运行。
  • 连接失败:Nginx 返回 502 Bad Gateway 时,优先检查防火墙策略是否拦截了 :9000 内部通信端口,且确认 uwsgi_pass 地址与 uwsgi.ini 中的 socket 完全一致。
  • 配置未生效:修改 .ini 或 conf.d 后,必须依次执行重载指令。若修改了 Django 源代码,需重启 uWSGI 进程方可同步最新逻辑。

简要总结

以上就是配置 uWSGI 启动 Django 框架的详细步骤,更多关于 Linux 服务器环境搭建与 Web 服务部署的资料请关注本站其它相关文章!

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表