在 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)。
第一步:基础环境准备
-
安装宝塔面板
如果你还没有安装宝塔,请在服务器终端执行官方安装脚本(以 Ubuntu 为例):wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec安装完成后,记住面板地址、用户名和密码。
-
安全组放行端口
确保你的云服务器厂商(如阿里云、腾讯云、华为云等)的安全组中放行了以下端口:8888(宝塔面板默认端口)80/443(Web 服务端口)22(SSH)
-
更新系统源
sudo apt update && sudo apt upgrade -y
第二步:安装 Python 运行环境
Django 需要 Python 3.8+ 支持。Ubuntu 22.04 默认自带 Python 3.10,但为了隔离环境和方便管理,建议在宝塔内安装或使用虚拟环境。
方法 A:使用宝塔“软件商店”一键安装(推荐新手)
- 登录宝塔面板。
- 点击左侧菜单 【软件商店】。
- 搜索 “Python Project Manager”(Python 项目管理器)。
- 点击安装。这是宝塔专门用于管理 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。
-
上传代码
使用 SFTP 工具(如 FileZilla)将你的 Django 项目代码上传到/www/wwwroot/example.com。 -
收集静态文件
在虚拟环境中激活后,执行:source venv/bin/activate cd /www/wwwroot/example.com python manage.py collectstatic --noinput这会将所有静态文件(CSS/JS/Images)收集到一个目录,通常由 Nginx 直接提供,提高性能。
-
配置 Django
settings.pyDEBUG = FalseALLOWED_HOSTS = ['example.com', 'www.example.com']- 数据库配置:建议直接使用宝塔面板中安装的 MySQL 或 PostgreSQL,不要使用 SQLite(生产环境不推荐)。
- 在宝塔【数据库】菜单中创建数据库和用户,并将账号密码填入
settings.py。
- 在宝塔【数据库】菜单中创建数据库和用户,并将账号密码填入
第四步:在宝塔中部署 Django 项目
这里我们使用宝塔自带的 Python 项目管理器 来简化配置(如果你选了方法 A)。
- 在宝塔左侧菜单找到 【软件商店】 -> 已安装 -> 点击 Python 项目管理器 旁边的 【设置】 或直接点击图标进入。
- 点击 【添加站点】 或 【添加 Python 项目】。
- 填写参数:
- 项目名称:随意,如
my_django_app - 主程序所在文件夹:选择你上传代码的目录,例如
/www/wwwroot/example.com - 启动文件:通常是
manage.py(注意:有些版本要求指定入口,但 Django 一般通过 Gunicorn 启动) - 框架类型:选择 Django
- Python 版本:选择对应的 Python 3.10
- 端口:选择一个内部端口,如
8000(这个端口仅本地监听,外部通过 Nginx 访问)
- 项目名称:随意,如
- 依赖安装:
- 在项目中点击 【安装依赖】,它会读取
requirements.txt并自动安装。如果没有requirements.txt,请手动添加关键包:django,gunicorn,psycopg2-binary(或其他数据库驱动)。
- 在项目中点击 【安装依赖】,它会读取
- 启动项目:
- 点击 【启动】 按钮。
- 查看日志,确保没有报错。如果成功,你会看到类似
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。如果没有,请手动检查:
- 进入 【网站】 菜单。
- 找到你的域名
example.com,点击 【设置】。 - 切换到 【反向X_X】 标签页。
- 启用反向X_X,目标 URL 填写
http://127.0.0.1:8000(即你在第四步中设置的 Gunicorn 端口)。 - 保存并重载 Nginx。
此时,访问 http://example.com 应该能看到 Django 的欢迎页面或你的应用。
第六步:配置 HTTPS(SSL 证书)
- 在宝塔 【网站】 -> 你的域名 -> 【设置】 -> 【SSL】。
- 选择 Let’s Encrypt 免费证书,点击申请。
- 申请成功后,勾选 强制 HTTPS。
- 保存。
常见问题与排查
-
权限问题
Django 需要写入媒体文件(media)和日志。确保项目目录所有者是www用户:chown -R www:www /www/wwwroot/example.com chmod -R 755 /www/wwwroot/example.com -
Gunicorn 进程崩溃
- 检查宝塔 Python 项目管理器中的日志。
- 常见原因:缺少依赖、数据库连接失败、静态文件路径错误。
- 可以在 Gunicorn 启动命令中添加
-w 4增加工作进程数,提升并发能力。
-
静态文件无法加载
- 确认
collectstatic已执行。 - 确认 Nginx 配置中静态文件路径正确。宝塔通常会自动配置
/static/和/media/的路径映射。
- 确认
-
时区问题
在settings.py中设置:TIME_ZONE = 'Asia/Shanghai' USE_TZ = True
总结
在 Ubuntu 22.04 上使用宝塔部署 Django 的核心逻辑是:
- Python 环境:通过宝塔 Python 项目管理器或手动 venv 隔离。
- Wsgi 服务器:使用 Gunicorn 作为应用服务器。
- Web 服务器:使用 Nginx 做反向X_X和静态文件服务。
- 数据库:使用宝塔安装的 MySQL/PostgreSQL。
这种方式比直接用 Apache/mod_wsgi 更轻量,也比纯命令行部署更易于维护。对于国内云服务器用户,宝塔面板能极大简化防火墙、SSL、备份等运维工作。
云计算导航