运维手册

系统运维手册 - 部署、维护与故障排查

环境要求

服务器配置建议

部署规模CPU内存磁盘适用场景
最小配置2 核4 GB50 GB测试/演示环境
推荐配置4 核8 GB100 GB中小型企业
高配配置8 核+16 GB+200 GB+大型企业/高并发

软件依赖

  • • 操作系统:CentOS 7/8、Ubuntu 20.04+、Windows Server 2019+
  • • 数据库:MySQL 8.0+ 或 MariaDB 10.5+
  • • 运行时:Node.js 18+、Java 17+(后端服务)
  • • Web 服务器:Nginx 1.20+ 或 Apache 2.4+
  • • 浏览器:Chrome 90+、Edge 90+、Firefox 100+

部署指南

私有化部署

  1. 联系卓象学堂技术团队获取私有化部署包与 License 授权文件。
  2. 在目标服务器上安装基础环境依赖(Node.js、MySQL、Nginx)。
  3. 解压部署包,按 `README.md` 配置数据库连接、存储路径等参数。
  4. 执行数据库初始化脚本,导入系统基础数据。
  5. 配置 Nginx 反向代理,绑定域名并启用 HTTPS。
  6. 启动应用服务,访问管理后台验证部署是否成功。
  7. 导入 License 文件激活系统,完成初始化设置。

Docker 部署(推荐)

  1. 安装 Docker 和 Docker Compose。
  2. 下载部署包中的 `docker-compose.yml` 配置文件。
  3. 修改环境变量(数据库密码、域名等)。
  4. 执行 `docker-compose up -d` 启动全部服务。
  5. 访问管理后台完成系统初始化。

数据库维护

建议每月执行一次数据库维护操作:

  • 1. 执行 `OPTIMIZE TABLE` 优化数据库表结构。
  • 2. 清理过期的操作日志和登录日志(系统设置中可配置保留天数)。
  • 3. 检查索引使用情况,对高频查询字段建立索引。
  • 4. 监控数据库连接数,确保连接池参数合理。
  • 5. 定期检查磁盘空间,预留 30% 以上可用空间。

备份与恢复

自动备份配置

  • 1. 在系统后台「系统设置」→「备份管理」中配置自动备份。
  • 2. 建议数据库每天凌晨自动备份,上传资源每周全量备份。
  • 3. 备份文件建议存储到独立的备份服务器或云存储。
  • 4. 保留最近 30 天的备份文件,定期清理过期备份。

手动备份

  • 1. 数据库:`mysqldump -u 用户名 -p 数据库名 > backup.sql`
  • 2. 上传文件:备份 `/uploads` 目录下全部资源文件。
  • 3. 配置文件:备份 `/config` 目录下的系统配置文件。

数据恢复

  • 1. 停止应用服务,确保无新数据写入。
  • 2. 恢复数据库:`mysql -u 用户名 -p 数据库名 < backup.sql`
  • 3. 恢复上传文件到 `/uploads` 目录。
  • 4. 重启应用服务,验证数据完整性。

系统监控

日常运维需关注以下监控指标:

  • • 服务器 CPU 使用率(建议 < 80%)
  • • 内存使用率(建议预留 20% 以上可用内存)
  • • 磁盘 I/O 和剩余空间
  • • 数据库慢查询日志(大于 1 秒的查询)
  • • 应用响应时间(P99 建议 < 3 秒)
  • • 用户并发在线数峰值
  • • 文件上传/转码队列积压情况

版本升级

  1. 升级前务必对数据库和上传文件做完整备份。
  2. 在测试环境先升级验证,确认无异常后再操作生产环境。
  3. 下载最新版本部署包,解压覆盖到应用目录。
  4. 执行数据库迁移脚本(如有),更新表结构。
  5. 清理缓存:删除 `/runtime` 目录下的缓存文件。
  6. 重启应用服务,确认服务正常启动。
  7. 登录管理后台,确认版本号已更新,核心功能正常。

常见问题排查

服务无法启动

原因:端口被占用、配置文件错误、数据库连接失败。

解决:

  • - 检查日志文件 `/logs/error.log` 查看具体错误信息。
  • - 使用 `netstat -tlnp` 检查端口占用情况。
  • - 验证数据库连接配置和服务是否运行。

视频无法播放

原因:视频转码失败、存储空间不足、CDN 配置错误。

解决:

  • - 检查转码服务(FFmpeg)是否正常运行。
  • - 确认上传目录有足够磁盘空间。
  • - 检查视频文件格式是否兼容(mp4 推荐)。

系统访问缓慢

原因:服务器资源不足、数据库索引缺失、缓存未生效。

解决:

  • - 使用 `top` 和 `htop` 查看系统资源使用情况。
  • - 执行 `EXPLAIN` 分析慢 SQL,添加合适索引。
  • - 检查 Redis 缓存服务是否正常运行。
  • - 考虑增加服务器配置或启用负载均衡。

文件上传失败

原因:文件大小超限、上传目录权限不足、磁盘满。

解决:

  • - 检查 Nginx `client_max_body_size` 配置。
  • - 确认 `/uploads` 目录有读写权限。
  • - 清理磁盘空间或扩容。