速卖通素材
努力

如何在Ubuntu 22.04上使用宝塔面板部署Django项目?

服务器

在 Ubuntu 22.04 上使用宝塔面板(BT Panel)部署 Django 项目,需结合宝塔的图形化操作与 Django 的标准部署流程。以下是详细步骤:


✅ 前置准备

  1. 安装宝塔面板(若尚未安装)

    # 下载并执行安装脚本(以 CentOS/Ubuntu 通用版为例)
    wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

    ⚠️ 注意:宝塔官方对 Ubuntu 22.04 的支持从 v8.0+ 开始更完善,建议安装最新版(如 bt 命令查看版本)。

  2. 登录宝塔面板
    访问 http://<服务器IP>:8888,输入用户名密码登录。

  3. 安装必要环境(通过宝塔“软件商店”一键安装):

    • Nginx(反向X_X + 静态文件服务)
    • Python 3.10+(推荐选 Python 3.10 或更高)
    • MySQL / MariaDB(数据库)
    • Redis(可选,用于缓存/session)
    • Supervisor(进程管理,可选但推荐)

📦 部署 Django 项目步骤

步骤 1:创建网站目录 & 上传项目

  1. 进入宝塔 → 网站添加站点

    • 域名:可填 example.com(即使无真实域名,也可用 IP 测试)
    • 根目录:/www/wwwroot/example.com(自动创建)
    • 选择数据库:新建 MySQL 数据库(记录账号密码)
  2. 将本地 Django 项目打包上传:

    • 方式一:使用 FTP/SFTP(宝塔内置支持)连接 /www/wwwroot/example.com
    • 方式二:命令行上传:
      tar -czf django_project.tar.gz your_django_project_folder/
      scp django_project.tar.gz root@your_server:/tmp/
      ssh root@your_server
      cd /www/wwwroot/example.com
      tar -xzf /tmp/django_project.tar.gz
      rm /tmp/django_project.tar.gz

步骤 2:配置虚拟环境 & 依赖

cd /www/wwwroot/example.com
python3 -m venv venv
source venv/bin/activate

# 安装依赖
pip install --upgrade pip
pip install -r requirements.txt

# 安装 Gunicorn(生产级 WSGI 服务器)
pip install gunicorn

🔍 检查 requirements.txt 是否包含:

Django>=4.2
gunicorn
psycopg2-binary  # 若用 PostgreSQL;MySQL 则用 mysqlclient
whitenoise       # 可选:托管静态文件

步骤 3:配置 Django 项目(关键!)

编辑 settings.py

# ALLOWED_HOSTS 必须包含域名/IP
ALLOWED_HOSTS = ['your_domain.com', 'localhost', '127.0.0.1', 'your_server_ip']

# 静态文件配置(生产环境建议用 WhiteNoise 或 Nginx)
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'  # 或自定义路径如 /www/wwwroot/example.com/staticfiles

# 数据库配置(替换为宝塔创建的数据库信息)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_db_name',
        'USER': 'your_db_user',
        'PASSWORD': 'your_db_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

# 安全设置(生产务必开启)
DEBUG = False
SECRET_KEY = 'your-secret-key-from-env'  # 建议从环境变量读取
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

✅ 收集静态文件:

python manage.py collectstatic --noinput

✅ 迁移数据库:

python manage.py migrate

✅ 创建超级用户(可选):

python manage.py createsuperuser

步骤 4:配置 Nginx + Gunicorn(宝塔自动处理部分)

  1. 进入宝塔 → 网站 → 点击你的站点 → 配置文件

  2. 修改 Nginx 配置(确保如下片段存在):

    location /static/ {
       alias /www/wwwroot/example.com/staticfiles/;
       expires 30d;
       add_header Cache-Control "public, immutable";
    }
    
    location / {
       proxy_pass http://127.0.0.1:8000;  # Gunicorn 监听端口
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
    }
  3. 启动 Gunicorn(推荐使用宝塔“计划任务”或 Supervisor 管理):

    方案 A:使用宝塔「计划任务」定期守护(简单)

    • 宝塔 → 计划任务 → 添加任务
      • 类型:Shell 脚本
      • 名称:Start Gunicorn
      • 执行周期:每天 0 点(仅首次启动可用)→ ❌ 不推荐重启丢失

    方案 B:使用 Supervisor(推荐)

    • 宝塔 → 软件商店 → 安装 Supervisor
    • 宝塔 → Supervisor → 添加任务:
      [program:djangoproject]
      command=/www/wwwroot/example.com/venv/bin/gunicorn 
       --bind 127.0.0.1:8000 
       --workers 3 
       --timeout 120 
       myproject.wsgi:application
      directory=/www/wwwroot/example.com
      user=root
      autostart=true
      autorestart=true
      redirect_stderr=true
      stdout_logfile=/var/log/supervisor/djangoproject.log

      🔔 替换 myproject.wsgi 为你的实际项目名称(即 manage.py 所在目录名)

    保存后点击「启动」→ 状态显示绿色即为成功。

步骤 5:SSL 证书(HTTPS)

  1. 宝塔 → 网站 → 你的站点 → SSL
  2. 选择 Let’s Encrypt 免费证书 → 提交申请
  3. 自动配置完成后,Nginx 会启用 HTTPS(强制跳转 HTTP→HTTPS)

🔧 常见问题排查

问题 解决方案
Permission denied 访问静态文件 chown -R www:www /www/wwwroot/example.com/staticfiles
Gunicorn 无法连接 DB 检查 settings.py 中 DB 配置是否正确;确认 MySQL 允许本地连接
页面空白/502 Bad Gateway 检查 Gunicorn 是否运行:supervisorctl status djangoproject;查看日志 /var/log/supervisor/djangoproject.log
静态文件未生效 确认 collectstatic 已执行;Nginx alias 路径正确;清除浏览器缓存

📌 最佳实践建议

  • ✅ 使用 .env 文件存储敏感信息(配合 python-decoupledjango-environ),不要提交到 Git
  • ✅ 启用 X-Frame-Options, Content-Security-Policy 等安全头(可在 Nginx 中统一配置)
  • ✅ 定期备份数据库:宝塔 → 数据库 → 备份计划
  • ✅ 监控资源:宝塔自带 CPU/内存/磁盘监控

需要我提供:

  • 完整的 requirements.txt 示例?
  • gunicorn.conf.py 高级配置?
  • Docker 化部署方案(与宝塔共存)?

欢迎告诉我你的具体需求 😊

未经允许不得转载:轻量云Cloud » 如何在Ubuntu 22.04上使用宝塔面板部署Django项目?