django nginx uwsgi
时间: 2025-05-17 20:03:11 浏览: 19
### 使用 Nginx 和 uWSGI 部署 Django 项目
为了在生产环境中成功部署 Django 项目,可以按照以下方法配置 Nginx 和 uWSGI 的集成。
#### 1. 创建 `uwsgi.ini` 文件
在项目的根目录下创建一个名为 `uwsgi.ini` 的文件,并填写相应的配置项。以下是通用的配置模板:
```ini
[uwsgi]
# 设置 Unix Socket 或者 IP 地址绑定
socket = 127.0.0.1:8000
# 如果使用 Unix Socket,则改为:socket = /tmp/uwsgi.sock
# 指定 Django 项目的根目录
chdir = /path/to/your/project
# 指向 wsgi.py 文件的位置(相对于 chdir)
wsgi-file = your_project_name/wsgi.py
# 开启多进程模式
processes = 4
# 开启多线程模式
threads = 2
# 是否启用 Master 进程管理子进程
master = true
# 自动清理功能,在服务关闭时删除 PID 文件和 socket 文件
vacuum = true
# 将日志记录到指定文件
daemonize = /path/to/your/log/uwsgi.log
# 自动生成 PID 文件以便于管理 uwsgi 进程
pidfile = /path/to/your/pid/uwsgi.pid
# 当 Python 文件发生变化时自动重新加载应用
py-autoreload = 1
```
上述配置可以根据实际需求调整参数[^3]。
#### 2. 安装并启动 uWSGI
安装 uWSGI 并运行它来托管 Django 应用程序:
```bash
pip install uwsgi
```
启动 uWSGI 服务:
```bash
uwsgi --ini /path/to/your/uwsgi.ini
```
如果需要以后台方式运行,可以通过 `--daemonize` 参数或者直接在 `.ini` 中定义 `daemonize` 来实现后台运行[^5]。
#### 3. 配置 Nginx 反向代理
编辑 Nginx 配置文件 `/etc/nginx/sites-available/default` 或其他站点配置文件,添加反向代理规则以将 HTTP 请求传递给 uWSGI。
示例配置如下:
```nginx
server {
listen 80;
server_name your_domain_or_ip;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /path/to/your/project/;
}
location /media/ {
root /path/to/your/project/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; # 对应 uwsgi.ini 中的 socket 配置
}
}
```
完成配置后,测试 Nginx 配置是否正确:
```bash
sudo nginx -t
```
如果没有错误,重启 Nginx 生效更改:
```bash
sudo systemctl restart nginx
```
#### 4. 测试部署效果
访问您的域名或服务器 IP 地址,确认页面能够正常显示。如果有任何问题,请检查 uWSGI 日志以及 Nginx 错误日志进行排查[^4]。
---
### 注意事项
- **权限问题**:确保 Nginx 用户有权限读取静态资源和媒体文件所在的目录。
- **防火墙设置**:开放必要的端口(如 80),允许外部流量进入服务器。
- **安全性优化**:建议为生产环境配置 HTTPS 协议,提升数据传输的安全性。
---
阅读全文
相关推荐
















