将 Django 项目从开发环境部署到生产环境是每个 Django 开发者必须掌握的技能。本文将详细介绍 Django 项目部署的完整流程。
1. 服务器准备
首先需要准备一台服务器,可以选择云服务器(如阿里云、腾讯云)或 VPS。推荐配置:
- CPU: 2核心以上
- 内存: 4GB 以上
- 存储: 50GB 以上 SSD
- 操作系统: Ubuntu 20.04 LTS
2. 环境配置
```bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Python 和 pip
sudo apt install python3 python3-pip python3-venv -y
# 安装数据库(以 PostgreSQL 为例)
sudo apt install postgresql postgresql-contrib -y
# 安装 Nginx
sudo apt install nginx -y
```
3. 项目部署
```bash
# 创建项目目录
sudo mkdir /var/www/myproject
sudo chown $USER:$USER /var/www/myproject
# 克隆项目代码
cd /var/www/myproject
git clone your-repo-url .
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
```
4. 数据库配置
```bash
# 创建数据库用户和数据库
sudo -u postgres psql
CREATE USER myprojectuser WITH PASSWORD 'password';
CREATE DATABASE myprojectdb OWNER myprojectuser;
GRANT ALL PRIVILEGES ON DATABASE myprojectdb TO myprojectuser;
\q
```
5. Gunicorn 配置
创建 Gunicorn 配置文件:
```bash
sudo nano /etc/systemd/system/gunicorn.service
```
配置内容:
```ini
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/myproject
ExecStart=/var/www/myproject/venv/bin/gunicorn --workers 3 --bind unix:/var/www/myproject/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
```
6. Nginx 配置
```nginx
server {
listen 80;
server_name your-domain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/var/www/myproject/myproject.sock;
}
}
```
7. 启动服务
```bash
# 启动 Gunicorn
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
```
8. SSL 证书配置
使用 Let's Encrypt 免费证书:
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
```
9. 监控和维护
- 设置日志轮转
- 配置监控告警
- 定期备份数据库
- 更新系统和依赖
部署完成后,记得进行全面的测试,确保所有功能正常运行。生产环境的部署需要谨慎,建议先在测试环境中验证所有配置。