当前位置: 首页 > news >正文

Django-Vue3-Admin 实战指南(一) 树莓派环境下的后端部署与排错

1. 树莓派环境准备与系统配置

在树莓派上部署Django-Vue3-Admin项目前,需要先完成基础环境配置。树莓派官方推荐的Raspberry Pi OS是基于Debian的Linux发行版,与常见的Ubuntu系统存在一些差异,这里我整理了实际部署时遇到的典型问题。

1.1 系统镜像选择与初始化

推荐使用64位Raspberry Pi OS Lite版本(无桌面环境),通过以下命令检查系统版本:

cat /etc/os-release

系统初始化建议:

  • 使用raspi-config工具扩展文件系统
  • 设置合适的时区(Asia/Shanghai
  • 启用SSH远程访问(部署必备)
  • 配置静态IP(避免开发过程中IP变化)

注意:树莓派4B/5的性能足够运行完整项目,但建议分配至少2GB交换空间:

sudo nano /etc/dphys-swapfile # 修改CONF_SWAPSIZE=2048 sudo systemctl restart dphys-swapfile

1.2 必备软件包安装

树莓派默认源可能缺少部分依赖,建议先更新源:

sudo apt update && sudo apt upgrade -y sudo apt install -y git python3-pip mariadb-server libmariadb-dev \ libjpeg-dev zlib1g-dev libpq-dev libffi-dev

与常规Linux环境的主要差异:

  • MariaDB替代MySQL:树莓派官方源已移除MySQL
  • ARM架构兼容性:部分Python包需要从源码编译
  • 硬件性能限制:编译安装时建议添加-j4参数利用多核

2. 数据库部署与配置

2.1 MariaDB安装与安全设置

执行安装后会遇到第一个坑——默认无密码登录:

sudo mysql -u root

在MariaDB控制台执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES; exit

2.2 创建项目数据库

为Django-Vue3-Admin创建专用数据库:

CREATE DATABASE dvadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

关键参数说明:

  • utf8mb4:支持完整的Unicode字符(包括emoji)
  • COLLATE:设置正确的字符串比较规则

实测发现树莓派上的MariaDB默认配置需要调整:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf # 在[mysqld]下添加: innodb_file_per_table=1 innodb_buffer_pool_size=256M

3. Python环境配置技巧

3.1 虚拟环境创建与激活

在项目目录中创建隔离环境:

python3 -m venv dvadmin_env source dvadmin_env/bin/activate

验证激活成功:

which python # 应显示虚拟环境路径

3.2 解决树莓派特有的pip安装问题

树莓派默认使用piwheels源,但某些包需要从源码编译。建议修改pip配置:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

关键故障排查点:

  1. 检查/etc/pip.conf是否被系统锁定
  2. 安装失败时尝试指定平台:
    pip install --platform linux_armv7l --only-binary=:all: mysqlclient
  3. 编译安装前确保已安装开发工具:
    sudo apt install build-essential python3-dev

4. 项目部署实战流程

4.1 源码获取与目录结构

克隆项目并检查关键目录:

git clone https://gitee.com/huge-dream/django-vue3-admin.git cd django-vue3-admin/backend tree -L 2

典型结构:

├── application # 应用模块 ├── conf # 配置文件 │ ├── env.example.py ├── static # 静态资源 └── requirements.txt

4.2 依赖安装的避坑指南

分步安装依赖更易排查问题:

# 先安装基础依赖 pip install -r requirements.txt --no-deps # 单独处理问题包 pip install mysqlclient --no-cache-dir

常见错误解决方案:

  • mysqlclient报错:确保已安装libmariadb-dev
  • Pillow安装失败:先安装libjpeg-dev
  • cryptography编译错误:升级setuptools

4.3 环境配置文件调整

复制并修改环境配置:

cp conf/env.example.py conf/env.py nano conf/env.py

关键配置项:

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dvadmin', 'USER': 'root', 'PASSWORD': '你的密码', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'} } }

5. 数据库迁移与初始化

5.1 执行数据迁移

在虚拟环境中依次执行:

python manage.py makemigrations python manage.py migrate

可能遇到的问题:

  • 表已存在错误:删除migrations目录后重试
  • 字符集不匹配:检查数据库创建时的参数

5.2 初始化基础数据

加载预置的权限数据和地区信息:

python manage.py init python manage.py init_area

初始化过程可能较慢(树莓派性能限制),建议耐心等待。

6. 服务启动与测试

6.1 开发模式运行

启动测试服务器:

python manage.py runserver 0.0.0.0:8000

访问测试:

  • 本地访问:http://127.0.0.1:8000/api/admin/
  • 局域网访问:http://树莓派IP:8000

6.2 生产环境建议

对于长期运行的服务,推荐使用:

nohup python manage.py runserver 0.0.0.0:8000 > django.log 2>&1 &

或者配置为systemd服务:

sudo nano /etc/systemd/system/django.service

服务文件示例:

[Unit] Description=Django Vue3 Admin After=network.target [Service] User=pi WorkingDirectory=/home/pi/django-vue3-admin/backend ExecStart=/home/pi/django-vue3-admin/backend/dvadmin_env/bin/python manage.py runserver 0.0.0.0:8000 Restart=always [Install] WantedBy=multi-user.target

7. 性能优化技巧

7.1 数据库连接优化

conf/env.py中添加:

DATABASES['default']['OPTIONS'] = { 'connect_timeout': 10, 'read_default_file': '/etc/mysql/my.cnf' }

7.2 静态文件处理

生产环境建议:

python manage.py collectstatic sudo apt install nginx

配置nginx反向代理静态文件,减轻树莓派负载。

我在实际部署中发现树莓派的I/O性能是主要瓶颈,建议:

  1. 使用高速SD卡或外接SSD
  2. 定期清理/var/log目录
  3. 禁用不必要的后台服务:
    sudo systemctl disable bluetooth.service
http://www.jsqmd.com/news/1187274/

相关文章:

  • 如何快速部署Qwen2-1.5B_rai_1.7.1_hybrid:AMD Ryzen AI混合推理模型入门教程
  • 宝珀官方售后服务中心完整地址与24小时热线实地考察报告多信源验证(2026年7月更新) - 宝珀官方售后服务中心
  • 如何5分钟掌握幻兽帕鲁存档编辑:终极转换工具使用指南
  • 解锁B站视频自由:你的专属离线视频库搭建指南
  • 揭秘osmtogeojson:从安装到高级配置的全方位使用手册
  • 【小程序课程设计/毕业设计】基于 SpringBoot+Android 的校园岗位信息发布系统的设计与实现【附源码、数据库、万字文档】
  • DC-DC升压转换器设计与微控制器智能控制实现
  • 如何安装Krita Vision Tools:从零开始配置AI绘画插件的完整指南
  • 数字电子技术实验:从仿真到实践——以74LS138与74LS151为核心的设计与验证
  • LangChain / Core components / Event streaming
  • 5分钟掌握ExifToolGUI:免费批量照片元数据管理终极指南
  • 用纯 PyTorch 从零手搓一个完整 LLM:从预训练到 GRPO 对齐的全链路实践指南
  • ETS2LA:3分钟掌握《欧洲卡车模拟2》智能驾驶辅助系统
  • C++析构函数异常处理:避免程序崩溃的三大实践方案
  • 别急着换赛道:运维经验在 AI 项目里到底值多少?
  • 【信息科学与工程学】【数据科学】数据科学领域——第三篇 数学08 几何学06 计算几何03
  • Krane可视化Dashboard使用指南:深入理解RBAC权限关系图
  • 裂缝检测专题(3)裂缝数据集dataset总结2-分割与实例分割
  • KMS激活终极解决方案:3分钟永久激活Windows和Office的完整指南
  • 5分钟掌握MZmine:从质谱数据到科学发现的完整指南
  • LinkSwift网盘直链下载助手:九大网盘一站式高速下载解决方案
  • Sqribble文档自动化:模板驱动的PDF出版流水线解析
  • 如何贡献Awesome-Prompt-Adapter-Learning-for-VLMs-CLIP:社区维护指南与最佳实践
  • 基于QT/C++与百度AI的车牌识别停车场管理系统开发实战
  • Shell脚本实战:从入门到自动化运维
  • 3分钟学会无损视频剪辑:LosslessCut 终极使用指南
  • 积家官方服务项目及价格查询|权威信息公示(2026年7月最新) - 积家官方维修中心
  • GitHub CSV Tools错误排查指南:常见问题解决方法和调试技巧
  • 时间序列建模实战语言地图:从平稳性、自相关到残差诊断的可操作指南
  • 从ERROR 1698到安全登录:深入解析MySQL root身份验证插件的演变与配置