奋斗
努力

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

云计算

在云服务器上从零部署一个 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

✅ 第十三步:绑定域名(可选)

  1. 在域名服务商(如阿里云、腾讯云)添加 A 记录,指向你的服务器 IP。
  2. 确保 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_ROOTcollectstatic 是否执行
数据库连接失败 检查 PostgreSQL 用户权限、密码、pg_hba.conf
Gunicorn 启动失败 查看日志 journalctl -u gunicorn

✅ 补充建议

  • 使用 .env 文件管理敏感信息(如SECRET_KEY、数据库密码)
  • 定期备份数据库和代码
  • 使用 GitHub Actions 或 CI/CD 自动部署(进阶)
  • 监控服务器资源(htop、netdata)

🎉 完成!

现在你已经成功将 Django 应用部署到了云服务器上,并支持 HTTPS 访问。

💡 提示:首次部署建议先用 IP 地址测试,确认无误后再绑定域名。


如果你提供具体的项目结构或遇到错误,我可以帮你进一步调试!

未经允许不得转载:云服务器 » 新手如何在云服务器上从零部署Python Django网站应用?