阿里云ECS Ubuntu 22.04使用宝塔部署Django项目时数据库怎么配置?

在阿里云 ECS Ubuntu 22.04 上,通过宝塔面板(Baota)部署 Django 项目时,数据库配置通常分为安装数据库服务创建数据库/用户以及在 Django 代码中连接三个步骤。

以下是详细的操作指南:

第一步:在宝塔面板中安装并配置数据库

  1. 进入软件商店
    登录宝塔面板,点击左侧菜单的 “软件商店”
  2. 安装 MySQL/MariaDB
    • 搜索 MySQLMariaDB
    • 推荐选择 MySQL 8.0(Django 对新版支持更好)或 MariaDB 10.6+
    • 点击“安装”,等待安装完成。
  3. 设置密码
    安装完成后,建议立即修改 root 密码:

    • 点击左侧菜单 “数据库”
    • 找到刚安装的数据库实例,点击右侧的 “管理”
    • 在弹出的窗口中修改 root 密码(请牢记该密码,后续 Django 配置需要)。
    • 点击保存。

第二步:创建数据库和用户(用于 Django)

为了安全起见,不建议直接使用 root 用户连接 Django 应用,应创建一个专用的数据库用户。

  1. 在宝塔左侧菜单点击 “数据库”
  2. 点击右上角的 “创建数据库” 按钮。
  3. 填写信息
    • 数据库名:例如 my_django_db(注意:Django 默认要求数据库名不能包含特殊字符,建议使用小写字母和下划线)。
    • 用户名:例如 django_user
    • 密码:设置一个强密码(例如 MyStrongPass123!),请务必记录
    • 权限:选择“所有权限”或“全部权限”。
  4. 点击确定创建。

注意:如果 Django 需要远程连接(较少见,通常本地即可),可以在“权限”处将主机设置为 % 允许远程访问,或者在宝塔防火墙中放行 3306 端口。但在同一台服务器上部署时,默认使用 localhost127.0.0.1 即可。

第三步:在 Django 项目中配置 settings.py

现在需要在你的 Django 项目的 settings.py 文件中填入刚才创建的数据库信息。

打开你的项目目录下的 config/settings.py(假设你的主配置文件名为 settings.py),找到 DATABASES 配置块并进行如下修改:

import os
from pathlib import Path

# ... 其他配置 ...

BASE_DIR = Path(__file__).resolve().parent.parent

SECRET_KEY = 'your-secret-key'

DEBUG = True

ALLOWED_HOSTS = ['*'] # 生产环境建议指定具体域名或 IP

# --- 数据库配置开始 ---
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 必须指定为 mysql
        'NAME': 'my_django_db',                # 对应宝塔创建的数据库名
        'USER': 'django_user',                 # 对应宝塔创建的用户名
        'PASSWORD': 'MyStrongPass123!',        # 对应宝塔设置的密码
        'HOST': '127.0.0.1',                   # 宝塔默认本地地址,也可用 localhost
        'PORT': '3306',                        # 默认端口
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            'charset': 'utf8mb4',              # 推荐使用 utf8mb4 以支持 emoji
        },
    }
}
# --- 数据库配置结束 ---

关键依赖检查

确保你的项目已经安装了 MySQL 驱动。在终端执行以下命令:

pip install mysqlclient
# 或者
pip install pymysql

注意:如果使用 mysqlclient,Ubuntu 22.04 可能需要先安装开发包:sudo apt-get install default-libmysqlclient-dev build-essential python3-dev。如果不想处理 C 编译依赖,可以直接使用 pymysql(纯 Python 实现),并在 __init__.py 中添加一行代码欺骗 Django:

# 在项目根目录的 __init__.py (即 manage.py 同级) 添加:
import pymysql
pymysql.install_as_MySQLdb()

第四步:迁移数据库并启动项目

  1. 创建数据表
    在项目目录下执行:

    python manage.py migrate

    如果没有报错,说明连接成功且表结构已创建。

  2. 创建超级管理员

    python manage.py createsuperuser
  3. 运行项目
    使用 Gunicorn + Nginx(宝塔推荐方式)或 Python 自带服务器测试:

    # 测试模式
    python manage.py runserver 0.0.0.0:8000
    
    # 生产模式 (需先在宝塔网站设置中绑定域名和 SSL)
    # 通常直接通过宝塔面板的“网站” -> “Python 项目”进行部署管理

常见问题排查

  • Connection Refused: 检查宝塔面板的“防火墙”设置,确保 3306 端口未被拦截(虽然本地连接不需要公网端口,但有时安全组策略会干扰)。
  • Authentication Plugin Error: 如果报错 Access denied for user... using password: YES 或涉及 caching_sha2_password,通常是因为 MySQL 8.0 默认认证插件与旧版驱动不兼容。
    • 解决方法:在宝塔数据库管理中,点击该用户的“权限”,将加密方式改为 mysql_native_password,或者在 Django 的 DATABASES 配置中增加 'OPTIONS': {'auth_plugin': 'mysql_native_password'}
  • UnicodeError: 如果中文乱码,请确保数据库字符集是 utf8mb4(宝塔新建数据库时默认通常是 utf8mb4),且 Django 配置中的 charset 也设为 utf8mb4

按照以上步骤,你的 Django 项目应该可以顺利连接到宝塔上的 MySQL 数据库了。

未经允许不得转载:CLOUD技术博 » 阿里云ECS Ubuntu 22.04使用宝塔部署Django项目时数据库怎么配置?