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

如何在单服务器用Gunicorn和Nginx部署多Django项目(仅用IP+端口)

用Gunicorn+Nginx通过IP+端口部署多Django项目

以下是基于IP+端口部署多Django项目的具体步骤,和域名部署的核心差异在于Nginx的监听配置,Gunicorn的systemd配置逻辑基本一致:

1. 配置每个项目的Gunicorn Systemd服务

1.1 创建Socket文件(以project1为例)

在/etc/systemd/system/目录下新建project1.socket:

[Unit]
Description=Gunicorn socket for project1

[Socket]
ListenStream=/run/project1.sock

[Install]
WantedBy=sockets.target

同理创建project2.socket,将所有project1替换为project2,对应socket路径/run/project2.sock。

1.2 创建Service文件

新建/etc/systemd/system/project1.service:

[Unit]
Description=Gunicorn daemon for project1
Requires=project1.socket
After=network.target

[Service]
User=你的服务器用户名
Group=www-data
WorkingDirectory=/absolute/path/to/project1
ExecStart=/path/to/project1/venv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/project1.sock \
          project1.wsgi:application

[Install]
WantedBy=multi-user.target

复制该文件并修改为project2.service,替换工作目录、虚拟环境路径、socket路径和WSGI模块名(project2.wsgi:application)。

1.3 启动并启用服务

sudo systemctl daemon-reload
# 启动并启用project1的服务
sudo systemctl start project1.socket
sudo systemctl enable project1.socket
sudo systemctl start project1.service
sudo systemctl enable project1.service
# 对project2重复上述命令

2. 配置Nginx反向代理

2.1 新建项目配置文件

在/etc/nginx/sites-available/下创建project1配置:

server {
    listen 8000;
    server_name 你的服务器IP;

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/project1.sock;
    }

    # 静态文件映射(根据你的项目实际路径调整)
    location /static/ {
        root /absolute/path/to/project1;
    }

    location /media/ {
        root /absolute/path/to/project1;
    }
}

创建project2配置文件,修改监听端口为8001,proxy_pass指向/run/project2.sock,静态文件路径替换为project2的路径。

2.2 启用配置并重启Nginx

# 创建软链接到sites-enabled目录
sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/project2 /etc/nginx/sites-enabled/
# 检查配置语法
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx

3. 开放端口(若服务器启用防火墙)

sudo ufw allow 8000/tcp
sudo ufw allow 8001/tcp
sudo ufw reload

4. 测试访问

直接通过浏览器访问你的服务器IP:8000和你的服务器IP:8001,即可分别打开两个Django项目。

内容的提问来源于stack exchange,提问作者Apollo Vostok

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:42:18