在云服务器上从零部署一个 Python Django 网站应用,是学习全栈开发的重要一步。下面是一个详细的、适合新手的完整流程指南,以 Ubuntu 20.04/22.04 系统为例,使用 Nginx + Gunicorn + PostgreSQL + Let’s Encrypt HTTPS 的标准生产环境组合。
✅ 第一步:准备云服务器
1. 购买云服务器(如阿里云、腾讯云、AWS、DigitalOcean 等)
- 推荐配置:1核2G内存,50GB硬盘,公网IP
- 操作系统选择:Ubuntu 20.04 LTS 或 22.04 LTS
- 记下你的公网 IP 地址和 SSH 登录方式
✅ 第二步:登录服务器并更新系统
# 使用SSH连接到你的服务器(Windows可用PuTTY或WSL)
ssh root@你的服务器IP
# 更新系统软件包
sudo apt update && sudo apt upgrade -y
✅ 第三步:安装必要软件
# 安装Python3, pip, 虚拟环境工具
sudo apt install python3 python3-pip python3-venv git nginx postgresql postgresql-contrib -y
# 安装gunicorn(用于运行Django)
pip3 install gunicorn
✅ 第四步:创建数据库(PostgreSQL)
# 切换到postgres用户
sudo -u postgres psql
# 在psql中执行以下命令:
CREATE DATABASE mysite_db; -- 改为你自己的数据库名
CREATE USER myuser WITH PASSWORD 'yourpassword'; -- 设置用户名密码
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'Asia/Shanghai';
GRANT ALL PRIVILEGES ON DATABASE mysite_db TO myuser;
# 退出
q
✅ 第五步:上传或克隆你的Django项目
你可以通过 Git 克隆,或者用 scp 命令上传本地代码。
cd /home
git clone https://github.com/yourname/your-django-project.git mysite
cd mysite
如果没有Git项目,可以手动上传压缩包再解压。
✅ 第六步:配置虚拟环境并安装依赖
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 安装项目依赖(确保有 requirements.txt)
pip install -r requirements.txt
# 如果没有requirements.txt,安装常用包
pip install django gunicorn psycopg2-binary
✅ 第七步:配置Django设置(settings.py)
编辑 settings.py 文件:
# 修改 ALLOWED_HOSTS
ALLOWED_HOSTS = ['your-server-ip', 'your-domain.com'] # 添加你的IP或域名
# 配置数据库(替换原来的DATABASES)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mysite_db',
'USER': 'myuser',
'PASSWORD': 'yourpassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
# 静态文件设置(生产环境)
STATIC_URL = '/static/'
STATIC_ROOT = '/home/mysite/static/' # 运行 collectstatic 时存放的位置
✅ 第八步:收集静态文件 & 数据库迁移
# 激活虚拟环境
source venv/bin/activate
# 进入项目目录
cd /home/mysite
# 数据库迁移
python manage.py makemigrations
python manage.py migrate
# 创建超级用户(可选)
python manage.py createsuperuser
# 收集静态文件
python manage.py collectstatic
✅ 第九步:测试Gunicorn能否运行
# 测试启动(确保manage.py在同一目录)
gunicorn --bind 0.0.0.0:8000 mysite.wsgi:application
打开浏览器访问:http://你的IP:8000
如果看到Django页面,说明成功!
按 Ctrl+C 停止。
✅ 第十步:配置Gunicorn作为服务(systemd)
创建服务文件:
sudo nano /etc/systemd/system/gunicorn.service
粘贴以下内容(根据路径修改):
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/home/mysite
ExecStart=/home/mysite/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/mysite/mysite.sock mysite.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl status gunicorn # 查看是否运行正常
✅ 第十一步:配置 Nginx 反向X_X
sudo nano /etc/nginx/sites-available/mysite
写入配置:
server {
listen 80;
server_name your-domain.com 你的服务器IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/mysite;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/mysite/mysite.sock;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
✅ 第十二步:开放防火墙端口
sudo ufw allow 'Nginx Full' # 开放80和443
sudo ufw enable
✅ 第十三步:绑定域名(可选)
- 在域名服务商(如阿里云、腾讯云)添加 A 记录,指向你的服务器 IP。
- 确保
server_name配置为你的域名。
✅ 第十四步:配置 HTTPS(Let’s Encrypt 免费证书)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
按照提示操作,Certbot 会自动修改 Nginx 配置并启用 HTTPS。
之后访问 https://your-domain.com 就是加密网站了!
证书每90天自动续期。
✅ 第十五步:常见问题排查
| 问题 | 解决方法 |
|---|---|
| 网站打不开 | 检查 ufw 防火墙、安全组(云平台)、Nginx/Gunicorn 是否运行 |
| 静态文件404 | 检查 STATIC_ROOT 和 collectstatic 是否执行 |
| 数据库连接失败 | 检查 PostgreSQL 用户权限、密码、pg_hba.conf |
| Gunicorn 启动失败 | 查看日志 journalctl -u gunicorn |
✅ 补充建议
- 使用
.env文件管理敏感信息(如SECRET_KEY、数据库密码) - 定期备份数据库和代码
- 使用 GitHub Actions 或 CI/CD 自动部署(进阶)
- 监控服务器资源(htop、netdata)
🎉 完成!
现在你已经成功将 Django 应用部署到了云服务器上,并支持 HTTPS 访问。
💡 提示:首次部署建议先用 IP 地址测试,确认无误后再绑定域名。
如果你提供具体的项目结构或遇到错误,我可以帮你进一步调试!
云服务器