如何在单服务器用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
相关产品推荐
相关产品推荐

