新手如何在云服务器上从零部署Python Django网站应用?

部署一个 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

🌍 十、绑定域名(可选)

  1. 购买域名(如阿里云、腾讯云)
  2. 将域名 A 记录解析到你的云服务器公网 IP
  3. 修改 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技术博 » 新手如何在云服务器上从零部署Python Django网站应用?