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

在 Ubuntu 22.04 上部署 Django 项目,使用宝塔面板(BT Panel)是一个非常高效的选择。虽然宝塔主要面向 PHP/Node.js 用户优化,但通过其“软件商店”中的 Python 项目管理器或手动配置 Nginx + uWSGI/Gunicorn,同样可以稳定运行 Django。

以下是基于 Ubuntu 22.04 和 宝塔面板 7.x/8.x 标准流程的详细操作指南。我们将采用最稳定、生产环境推荐的方式:Nginx 反向X_X + Gunicorn (Python WSGI HTTP Server)。


第一步:基础环境准备

  1. 安装宝塔面板
    如果你还没有安装宝塔,请在服务器终端执行官方安装脚本(以 Ubuntu 为例):

    wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

    安装完成后,记住面板地址、用户名和密码。

  2. 安全组放行端口
    确保你的云服务器厂商(如阿里云、腾讯云、华为云等)的安全组中放行了以下端口:

    • 8888 (宝塔面板默认端口)
    • 80 / 443 (Web 服务端口)
    • 22 (SSH)
  3. 更新系统源

    sudo apt update && sudo apt upgrade -y

第二步:安装 Python 运行环境

Django 需要 Python 3.8+ 支持。Ubuntu 22.04 默认自带 Python 3.10,但为了隔离环境和方便管理,建议在宝塔内安装或使用虚拟环境。

方法 A:使用宝塔“软件商店”一键安装(推荐新手)

  1. 登录宝塔面板。
  2. 点击左侧菜单 【软件商店】。
  3. 搜索 “Python Project Manager”(Python 项目管理器)。
  4. 点击安装。这是宝塔专门用于管理 Python/Django/Flask 项目的插件,会自动处理依赖。

方法 B:手动创建虚拟环境(更灵活,推荐进阶用户)

如果不想用宝塔的 Python 管理器,可以手动操作:

# 安装 python3 和 venv
sudo apt install python3-pip python3-venv -y

# 进入你的项目目录
cd /www/wwwroot/your_domain.com

# 创建虚拟环境
python3 -m venv venv

# 激活虚拟环境
source venv/bin/activate

# 升级 pip
pip install --upgrade pip

# 安装 Django 和其他依赖
pip install django gunicorn psycopg2-binary # 如果使用 MySQL 则装 pymysql, PostgreSQL 则装 psycopg2-binary

第三步:上传代码与配置

假设你的域名是 example.com,项目在 /www/wwwroot/example.com。

  1. 上传代码
    使用 SFTP 工具(如 FileZilla)将你的 Django 项目代码上传到 /www/wwwroot/example.com。

  2. 收集静态文件
    在虚拟环境中激活后,执行:

    source venv/bin/activate
    cd /www/wwwroot/example.com
    python manage.py collectstatic --noinput

    这会将所有静态文件(CSS/JS/Images)收集到一个目录,通常由 Nginx 直接提供,提高性能。

  3. 配置 Django settings.py

    • DEBUG = False
    • ALLOWED_HOSTS = ['example.com', 'www.example.com']
    • 数据库配置:建议直接使用宝塔面板中安装的 MySQL 或 PostgreSQL,不要使用 SQLite(生产环境不推荐)。
      • 在宝塔【数据库】菜单中创建数据库和用户,并将账号密码填入 settings.py。

第四步:在宝塔中部署 Django 项目

这里我们使用宝塔自带的 Python 项目管理器 来简化配置(如果你选了方法 A)。

  1. 在宝塔左侧菜单找到 【软件商店】 -> 已安装 -> 点击 Python 项目管理器 旁边的 【设置】 或直接点击图标进入。
  2. 点击 【添加站点】 或 【添加 Python 项目】。
  3. 填写参数:
    • 项目名称:随意,如 my_django_app
    • 主程序所在文件夹:选择你上传代码的目录,例如 /www/wwwroot/example.com
    • 启动文件:通常是 manage.py(注意:有些版本要求指定入口,但 Django 一般通过 Gunicorn 启动)
    • 框架类型:选择 Django
    • Python 版本:选择对应的 Python 3.10
    • 端口:选择一个内部端口,如 8000(这个端口仅本地监听,外部通过 Nginx 访问)
  4. 依赖安装:
    • 在项目中点击 【安装依赖】,它会读取 requirements.txt 并自动安装。如果没有 requirements.txt,请手动添加关键包:django, gunicorn, psycopg2-binary (或其他数据库驱动)。
  5. 启动项目:
    • 点击 【启动】 按钮。
    • 查看日志,确保没有报错。如果成功,你会看到类似 Started Gunicorn server on port 8000 的信息。

注意:如果你使用的是手动虚拟环境(方法 B),你需要创建一个 systemd 服务文件来让 Gunicorn 后台运行,或者使用宝塔的“网站”功能配合 Nginx 反向X_X指向 http://127.0.0.1:8000。


第五步:配置 Nginx 反向X_X

宝塔的 Python 项目管理器通常会自动帮你配置好 Nginx 反向X_X。如果没有,请手动检查:

  1. 进入 【网站】 菜单。
  2. 找到你的域名 example.com,点击 【设置】。
  3. 切换到 【反向X_X】 标签页。
  4. 启用反向X_X,目标 URL 填写 http://127.0.0.1:8000(即你在第四步中设置的 Gunicorn 端口)。
  5. 保存并重载 Nginx。

此时,访问 http://example.com 应该能看到 Django 的欢迎页面或你的应用。


第六步:配置 HTTPS(SSL 证书)

  1. 在宝塔 【网站】 -> 你的域名 -> 【设置】 -> 【SSL】。
  2. 选择 Let’s Encrypt 免费证书,点击申请。
  3. 申请成功后,勾选 强制 HTTPS。
  4. 保存。

常见问题与排查

  1. 权限问题
    Django 需要写入媒体文件(media)和日志。确保项目目录所有者是 www 用户:

    chown -R www:www /www/wwwroot/example.com
    chmod -R 755 /www/wwwroot/example.com
  2. Gunicorn 进程崩溃

    • 检查宝塔 Python 项目管理器中的日志。
    • 常见原因:缺少依赖、数据库连接失败、静态文件路径错误。
    • 可以在 Gunicorn 启动命令中添加 -w 4 增加工作进程数,提升并发能力。
  3. 静态文件无法加载

    • 确认 collectstatic 已执行。
    • 确认 Nginx 配置中静态文件路径正确。宝塔通常会自动配置 /static/ 和 /media/ 的路径映射。
  4. 时区问题
    在 settings.py 中设置:

    TIME_ZONE = 'Asia/Shanghai'
    USE_TZ = True

总结

在 Ubuntu 22.04 上使用宝塔部署 Django 的核心逻辑是:

  1. Python 环境:通过宝塔 Python 项目管理器或手动 venv 隔离。
  2. Wsgi 服务器:使用 Gunicorn 作为应用服务器。
  3. Web 服务器:使用 Nginx 做反向X_X和静态文件服务。
  4. 数据库:使用宝塔安装的 MySQL/PostgreSQL。

这种方式比直接用 Apache/mod_wsgi 更轻量,也比纯命令行部署更易于维护。对于国内云服务器用户,宝塔面板能极大简化防火墙、SSL、备份等运维工作。

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