在阿里云 ECS Ubuntu 22.04 上使用宝塔面板(BT Panel)部署 Django 项目时,数据库配置通常分为“创建数据库”和“在 Django 代码中连接”两个核心步骤。由于你使用的是宝塔面板,推荐直接使用其内置的 MySQL/MariaDB 服务,这样管理最方便。
以下是完整的操作流程:
第一步:在宝塔面板中创建数据库
- 登录宝塔面板:打开浏览器访问你的宝塔面板地址(通常是
http://IP:8888)。 - 进入数据库管理:在左侧菜单栏点击【数据库】。
- 创建新数据库:
- 点击右上角的【添加】按钮。
- 数据库名:填写 Django 项目中将要使用的数据库名称(例如
my_django_db)。 - 用户名:系统会自动生成或让你自定义(建议自定义以便记忆,例如
django_user)。 - 密码:设置一个强密码(务必记下来,后面配置要用)。
- 权限:选择“所有主机”(或者保留默认,如果本地开发需允许远程连接则选所有主机;如果是纯内网部署,默认即可)。
- 点击【确定】完成创建。
注意:Ubuntu 22.04 默认安装的是 MariaDB(宝塔通常自动安装),它与 MySQL 兼容,Django 可以直接连接。
第二步:修改 Django 项目的 settings.py
找到你的 Django 项目根目录下的 settings.py 文件,修改 DATABASES 配置部分。
假设你刚才创建的数据库信息如下:
- 数据库名:
my_django_db - 用户名:
django_user - 密码:
YourStrongPassword123! - 主机:
localhost(因为宝塔的数据库服务运行在同一台机器上) - 端口:
3306(默认)
将 settings.py 中的 DATABASES 配置修改为以下内容:
import os
# ... 其他配置 ...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 必须指定为 mysql 后端
'NAME': 'my_django_db', # 第一步中创建的数据库名
'USER': 'django_user', # 第一步中创建的用户名
'PASSWORD': 'YourStrongPassword123!', # 第一步中设置的密码
'HOST': 'localhost', # 宝塔默认安装在本地,填 localhost 即可
'PORT': '3306', # 默认端口
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4', # 关键:确保字符集支持 emoji 等符号
},
}
}
⚠️ 重要依赖检查
Django 连接 MySQL 需要 Python 驱动。如果你还没有安装,需要在服务器终端执行以下命令:
# 安装 python-mysqlclient (推荐,性能最好)
pip install mysqlclient
# 或者安装 pymysql (纯 Python 实现,安装简单但稍慢,需额外配置)
# pip install pymysql
# 如果使用 pymysql,还需在 __init__.py 中添加:
# import pymysql; pymysql.install_as_MySQLdb()
提示:Ubuntu 22.04 环境下,安装
mysqlclient可能需要先安装开发包:sudo apt update sudo apt install python3-dev default-libmysqlclient-dev build-essential
第三步:迁移数据库并启动服务
配置完成后,你需要让 Django 同步数据库结构。
-
执行迁移:
在项目目录下(即包含manage.py的目录)运行:python3 manage.py migrate如果看到
Running migrations...且最后显示OK,说明数据库连接成功。 -
创建超级管理员(可选):
python3 manage.py createsuperuser -
在宝塔部署站点:
- 回到宝塔面板 -> 【网站】 -> 【添加站点】。
- 绑定域名,根目录指向你的 Django 项目目录(如
/www/wwwroot/your_project)。 - 在【网站设置】->【PHP版本】中,确保选择的是 Python 模式(宝塔通常有专门的 Python 应用管理,或者使用 Nginx + uWSGI/Gunicorn 配置)。
- 推荐使用宝塔的【软件商店】安装 uWSGI 或 Gunicorn 来管理 Django 进程。
常见问题排查
- Connection Refused: 检查防火墙是否开放了 3306 端口。但在同一台服务器上,通常不需要开放公网端口,只需确保
HOST是localhost或127.0.0.1。 - Access Denied: 检查
settings.py中的用户名和密码是否与宝塔面板中创建的一致,注意大小写。 - Character Set Error: 如果插入中文或 Emoji 报错,请确保数据库、表、字段以及
settings.py中的charset都设置为utf8mb4。 - Ubuntu 22.04 特有问题:Ubuntu 22.04 对 Python 环境隔离要求较高,建议在宝塔的【Python 项目管理】中创建一个独立的虚拟环境(Virtualenv),避免系统自带的 Python 冲突。
按照以上步骤操作,你的 Django 项目就能顺利连接到宝塔面板管理的数据库了。
轻量云Cloud