You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NGINX与uWSGI在单台Ubuntu服务器上部署多个Django网站

同一Ubuntu服务器部署多Django项目(Nginx+uWSGI)实操规范

你之前部署失败大概率是不同项目的配置出现了命名冲突、资源路径重复的问题,按照以下步骤操作即可:

1. 每个项目配置独立的uWSGI运行实例

  • 每个项目单独创建专属Python虚拟环境,安装对应依赖和uWSGI
  • 每个项目单独编写uWSGI配置文件,socket路径设置为项目独有的路径,比如/home/user/项目名/项目名.sock,不要和其他项目重复
  • 为每个项目创建独立的systemd服务文件(路径/etc/systemd/system/uwsgi-<项目名>.service),分别启动并设置开机自启,启动后确认对应sock文件正常生成

2. 每个项目编写独立的Nginx服务块配置

  • 每个项目单独在/etc/nginx/sites-available/下创建专属的conf文件,绝对不要共用配置文件
  • 每个配置文件内的upstream名称必须唯一,不能都叫django,可命名为django_<项目名>避免冲突
  • 配置内的静态文件路径、sock路径、uwsgi_params路径都要对应到当前项目的实际路径,server_name填写当前项目绑定的域名

示例第二个项目的配置参考:

# upstream名称唯一,对应项目2
upstream django_project2 {
    server unix:///home/user/project2/project2.sock;
}

server {
    listen      80;
    server_name domain2.com www.domain2.com;
    charset     utf-8;

    client_max_body_size 75M;

    location /media  {
        alias /home/user/project2/media;
    }
    location /static {
        alias /home/user/project2/static;
    }

    location / {
        uwsgi_pass  django_project2;
        include     /home/user/project2/uwsgi_params;
    }
}

3. 生效配置并验证

  • 创建软链接启用站点:sudo ln -s /etc/nginx/sites-available/<项目名>.conf /etc/nginx/sites-enabled/
  • 测试Nginx配置合法性:sudo nginx -t,返回test is successful再执行下一步
  • 重载Nginx使配置生效:sudo systemctl reload nginx

常见问题排查

  • 检查各项目sock文件的权限,确保Nginx运行用户有读写权限
  • 执行sudo systemctl status uwsgi-<项目名>.service确认对应uWSGI服务正常运行
  • 确认所有项目的域名解析已正确指向当前服务器IP

内容的提问来源于stack exchange,提问作者Zaki Lazhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:27:06