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

服务器

在云服务器上从零部署一个 Python Django 网站应用,对于新手来说是一个很好的实践项目。以下是详细、分步骤的完整指南,适合初学者一步步操作。


✅ 一、准备工作

1. 购买或申请云服务器

推荐使用国内平台(如阿里云、腾讯云)或国外平台(如 AWS、DigitalOcean、Vultr),选择 Ubuntu 20.04/22.04 LTS 系统镜像。

  • 实例配置建议:至少 1核CPU + 1GB内存(小型网站够用)
  • 获取公网 IP 地址和 SSH 登录信息(用户名通常是 rootubuntu

✅ 二、连接到云服务器

使用 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)

  1. 将域名 A 记录指向你的公网 IP。
  2. 安装 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 gunicornsudo tail /var/log/nginx/error.log

如有具体项目结构或报错信息,欢迎提供,我可以帮你进一步调试!祝你部署成功!🚀

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