在云服务器上从零部署一个 Python Django 网站应用,对于新手来说是一个很好的实践项目。以下是详细、分步骤的完整指南,适合初学者一步步操作。
✅ 一、准备工作
1. 购买或申请云服务器
推荐使用国内平台(如阿里云、腾讯云)或国外平台(如 AWS、DigitalOcean、Vultr),选择 Ubuntu 20.04/22.04 LTS 系统镜像。
- 实例配置建议:至少 1核CPU + 1GB内存(小型网站够用)
- 获取公网 IP 地址和 SSH 登录信息(用户名通常是
root或ubuntu)
✅ 二、连接到云服务器
使用 SSH 工具连接:
ssh root@你的公网IP
# 输入密码或使用密钥登录
首次登录后建议修改密码并创建普通用户(安全起见):
adduser yourusername
usermod -aG sudo yourusername
然后切换到该用户:
su - yourusername
✅ 三、更新系统与安装必要软件
sudo apt update && sudo apt upgrade -y
安装常用工具和 Python 环境:
sudo apt install python3 python3-pip python3-venv git nginx postgresql postgresql-contrib -y
注意:我们使用
python3-venv创建虚拟环境,nginx做反向X_X,PostgreSQL作为生产数据库(比 SQLite 更适合生产环境)。
✅ 四、设置 PostgreSQL 数据库
进入 PostgreSQL shell:
sudo -u postgres psql
创建数据库和用户:
CREATE DATABASE mydjangodb;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE mydjangodb TO myuser;
q
✅ 五、上传或克隆你的 Django 项目
如果你已有项目,可通过 Git 克隆:
git clone https://github.com/yourname/your-django-project.git
cd your-django-project
如果没有项目,可以本地创建一个简单的测试项目再上传(推荐先练手)。
✅ 六、配置 Python 虚拟环境并安装依赖
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install django gunicorn psycopg2-binary
如果项目有 requirements.txt,运行:
pip install -r requirements.txt
✅ 七、配置 Django 项目(settings.py)
编辑 settings.py 文件:
# ALLOWED_HOSTS 添加你的域名或公网 IP
ALLOWED_HOSTS = ['your.public.ip.address', 'www.yourdomain.com']
# 数据库配置(替换原来的 SQLite)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydjangodb',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
# 静态文件收集目录
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
✅ 八、运行 Django 初始化命令
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic
python manage.py createsuperuser # 创建管理员账号
✅ 九、使用 Gunicorn 测试运行
先测试是否能通过 Gunicorn 启动:
gunicorn --bind 0.0.0.0:8000 your_project_name.wsgi:application
打开浏览器访问:http://你的IP:8000,如果看到页面说明成功。
按 Ctrl+C 停止。
✅ 十、配置 Gunicorn 为服务(systemd)
创建服务文件:
sudo nano /etc/systemd/system/gunicorn.service
写入以下内容(替换路径和用户名):
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=yourusername
Group=www-data
WorkingDirectory=/home/yourusername/your-django-project
ExecStart=/home/yourusername/your-django-project/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/yourusername/your-django-project/myproject.sock your_project_name.wsgi:application
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl status gunicorn # 查看状态是否正常
✅ 十一、配置 Nginx 反向X_X
创建 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/django
写入:
server {
listen 80;
server_name your.public.ip.address; # 或你的域名
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/yourusername/your-django-project;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/yourusername/your-django-project/myproject.sock;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
✅ 十二、开放防火墙端口
sudo ufw allow 'Nginx Full'
sudo ufw enable
确保云服务商控制台的安全组也放行了 80 (HTTP) 和 443 (HTTPS) 端口。
✅ 十三、访问网站
浏览器访问:
http://你的公网IP
你应该能看到你的 Django 网站!
✅ 十四、(可选)绑定域名 + HTTPS(Let’s Encrypt)
- 将域名 A 记录指向你的公网 IP。
- 安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d www.yourdomain.com -d yourdomain.com
自动配置 HTTPS,以后访问 https:// 安全加密。
✅ 常见问题排查
| 问题 | 解决方法 |
|---|---|
| 页面 502 Bad Gateway | 检查 Gunicorn 是否运行,sock 文件是否存在 |
| 静态文件不显示 | 运行 collectstatic,检查 Nginx 配置路径 |
| 数据库连接失败 | 检查 PostgreSQL 用户权限和密码 |
| 找不到模块 | 确保 virtualenv 已激活,依赖已安装 |
✅ 总结:部署流程图
云服务器 → SSH 登录 → 安装环境 → 配置数据库 → 上传代码 →
虚拟环境 → 修改 settings → 迁移数据 → Gunicorn → Nginx → 开放端口 → 访问网站
🎁 新手建议
- 第一次可以部署一个简单的 “Hello World” Django 项目练手。
- 推荐使用 GitHub + Git 部署,便于更新代码。
- 学会查看日志:
journalctl -u gunicorn和sudo tail /var/log/nginx/error.log
如有具体项目结构或报错信息,欢迎提供,我可以帮你进一步调试!祝你部署成功!🚀
CDNK博客