部署一个 Python Django 网站应用到云服务器是一个非常实用的技能。以下是从零开始为新手准备的详细步骤指南,以 Ubuntu 系统为例(如阿里云、腾讯云、AWS EC2 等)。
🌐 一、准备工作
1. 购买并登录云服务器
- 推荐系统:Ubuntu 20.04 / 22.04 LTS
- 推荐配置:2核CPU、4GB内存、50GB硬盘
- 获取公网 IP 和 SSH 登录方式(用户名通常是
ubuntu或root)
使用终端连接服务器:
ssh ubuntu@你的公网IP
🔧 二、服务器基础环境搭建
1. 更新系统包
sudo apt update && sudo apt upgrade -y
2. 安装 Python3 和 pip
Ubuntu 通常自带 Python3,但需要安装 pip 和其他工具:
sudo apt install python3 python3-pip python3-venv python3-dev -y
验证安装:
python3 --version
pip3 --version
📁 三、上传或克隆 Django 项目
方法一:使用 Git 克隆(推荐)
确保你的项目托管在 GitHub/Gitee 上:
git clone https://github.com/你的用户名/你的django项目.git
cd 你的django项目
⚠️ 提示:记得将
settings.py中的敏感信息(如 SECRET_KEY、数据库密码)移到环境变量中。
🐍 四、创建虚拟环境并安装依赖
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 安装依赖(假设有 requirements.txt)
pip install -r requirements.txt
如果没有 requirements.txt,生成它:
pip freeze > requirements.txt
🛠️ 五、配置 Django 项目
1. 修改 settings.py(关键步骤)
打开 your_project/settings.py:
# 允许的域名(生产环境必须设置)
ALLOWED_HOSTS = ['your_server_ip', 'your_domain.com'] # 如 ['123.456.789.0', 'example.com']
# 静态文件设置(用于收集静态资源)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # collectstatic 会存到这里
# 媒体文件(用户上传)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2. 收集静态文件
python manage.py collectstatic
3. 数据库迁移
python manage.py makemigrations
python manage.py migrate
4. 创建超级用户(可选)
python manage.py createsuperuser
🌐 六、使用 Gunicorn 启动 Django
Gunicorn 是 WSGI HTTP Server,适合生产环境。
1. 安装 Gunicorn
pip install gunicorn
2. 测试 Gunicorn 是否能运行项目
gunicorn --bind 0.0.0.0:8000 your_project.wsgi:application
访问
http://你的IP:8000应该能看到网站。
按 Ctrl+C 停止。
🔄 七、使用 Nginx 反向X_X(推荐)
Nginx 处理静态文件和反向X_X请求更高效。
1. 安装 Nginx
sudo apt install nginx -y
2. 配置 Nginx 站点
编辑配置文件:
sudo nano /etc/nginx/sites-available/django
粘贴以下内容(替换 your_domain_or_ip 和项目路径):
server {
listen 80;
server_name your_server_ip_or_domain;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/ {
alias /home/ubuntu/你的项目目录/staticfiles/;
}
location /media/ {
alias /home/ubuntu/你的项目目录/media/;
}
}
3. 启用站点
sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # 删除默认站点
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
🤖 八、使用 Supervisor 守护 Gunicorn 进程
Supervisor 确保 Gunicorn 在后台持续运行并自动重启。
1. 安装 Supervisor
sudo apt install supervisor -y
2. 创建配置文件
sudo nano /etc/supervisor/conf.d/django.conf
写入:
[program:gunicorn]
command=/home/ubuntu/你的项目目录/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 your_project.wsgi:application
directory=/home/ubuntu/你的项目目录
user=ubuntu
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/gunicorn.log
3. 重新加载 Supervisor
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start gunicorn
查看状态:
sudo supervisorctl status
🔐 九、安全与防火墙设置
1. 开放端口
sudo ufw allow 'Nginx Full' # 开放 80 和 443
sudo ufw enable
2. 关闭 DEBUG 模式
确保 settings.py 中:
DEBUG = False
🌍 十、绑定域名(可选)
- 购买域名(如阿里云、腾讯云)
- 将域名 A 记录解析到你的云服务器公网 IP
- 修改 Nginx 的
server_name为你的域名
🛡️ 十一、启用 HTTPS(强烈建议)
使用 Let’s Encrypt + Certbot 免费获取 SSL 证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com
Certbot 会自动修改 Nginx 配置并启用 HTTPS。
✅ 总结:完整流程图
云服务器 → 安装 Python → 上传代码 → 虚拟环境 → 安装依赖
→ 配置 Django → Gunicorn 启动 → Nginx 反向X_X
→ Supervisor 守护 → 防火墙/域名 → HTTPS 加密
🧰 常见问题排查
| 问题 | 解决方法 |
|---|---|
| 网站打不开 | 检查防火墙、Nginx 是否运行、Gunicorn 是否启动 |
| 静态文件 404 | 检查 collectstatic 和 Nginx 的 location /static/ 路径 |
| 502 Bad Gateway | Gunicorn 没有运行,用 supervisorctl status 查看 |
| 数据库错误 | 检查 DATABASES 配置,是否迁移 |
📚 推荐学习资源
- Django 官方部署文档
- DigitalOcean Django 教程
- B站搜索:“Django 生产环境部署”
✅ 成功部署后,你的 Django 网站在公网就可以访问了!🎉
如有具体错误,欢迎贴出日志,我可以帮你分析。
CLOUD技术博