nginx django部署
时间: 2025-05-18 14:12:33 浏览: 17
### 如何在 Nginx 上部署 Django 应用
要在 Nginx 上成功部署 Django 应用,通常需要完成以下几个方面的配置:
#### 1. 安装必要的软件
为了运行 Django 应用程序,需要安装 Python 和虚拟环境工具。此外还需要 Gunicorn 或 uWSGI 来作为 WSGI 服务器来处理 HTTP 请求。
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-venv nginx -y
pip3 install --upgrade pip
```
#### 2. 创建 Django 项目
假设已经有一个名为 `myproject` 的 Django 项目,并且它位于 `/home/user/myproject/` 路径下[^1]。
#### 3. 设置虚拟环境并安装依赖项
进入项目的根目录并设置虚拟环境:
```bash
cd /home/user/myproject/
python3 -m venv myproject_env
source myproject_env/bin/activate
pip install django gunicorn psycopg2-binary
```
#### 4. 测试本地服务
确保 Django 项目能够正常运行。可以通过以下命令测试:
```bash
python manage.py runserver 0.0.0.0:8000
```
访问 IP 地址加上端口 (如 http://<your-server-ip>:8000),确认应用能正常启动。
#### 5. 使用 Gunicorn 运行应用程序
Gunicorn 是一种常用的 WSGI 服务器,用于将 Django 应用暴露给外部网络。
```bash
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
```
这一步是为了验证 Gunicorn 是否可以正确加载 Django 应用。
#### 6. 配置 Nginx 反向代理
编辑 Nginx 配置文件以反向代理请求至 Gunicorn。打开站点配置文件:
```bash
sudo nano /etc/nginx/sites-available/myproject
```
添加如下内容:
```nginx
server {
listen 80;
server_name your_server_ip;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/user/myproject/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
```
启用该配置并通过链接激活:
```bash
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```
#### 7. 启动 Gunicorn 并设置为后台服务
创建 systemd 服务以便于管理 Gunicorn 实例:
```bash
sudo nano /etc/systemd/system/gunicorn.service
```
写入以下内容:
```ini
[Unit]
Description=gunicorn daemon for myproject
After=network.target
[Service]
User=user
Group=www-data
WorkingDirectory=/home/user/myproject
ExecStart=/home/user/myproject/myproject_env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
```
保存退出后执行以下命令使服务生效:
```bash
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
```
#### 数据库注意事项
如果使用 MySQL 数据库,则需特别关注数据库用户的权限问题。推荐使用 root 用户进行初始开发阶段的调试工作,因为其他自定义用户可能会引发错误码 1045(认证失败)。root 密码可以在控制面板中找到或更改[^1]。
#### 总结
通过上述步骤,应该能够在 Linux 系统上利用 Nginx 成功部署一个基于 Django 构建的应用程序。务必检查防火墙规则以及 SELinux 设置以免影响连接。
阅读全文
相关推荐



















