Files
x-server-mobile/docs/guides/DEPLOYMENT_CHECKLIST.md
root e3fa7e86f3 docs: 重组文档结构,按模块分类
新的文档结构:
docs/
├── README.md              # 文档中心导航
├── modules/               # 模块文档
│   ├── auth/             # 认证模块
│   │   ├── README.md
│   │   ├── feishu-login.md
│   │   ├── feishu-qrcode.md
│   │   └── feishu-notification.md
│   ├── approval/         # 审批流程模块
│   │   └── README.md
│   ├── business-trip/    # 出差申请模块
│   │   └── README.md
│   └── user/             # 用户管理模块
│       └── README.md
└── guides/               # 指南文档
    ├── deployment.md
    ├── environment.md
    ├── git-workflow.md
    └── ...

每个模块都有独立的 README.md 说明概述、API、关键文件等
2026-02-28 11:42:51 +08:00

5.4 KiB

X-Server Mobile 部署检查清单

部署前检查

服务器环境

  • 服务器已安装 1Panel 面板
  • 已安装 OpenResty 并正常运行
  • 已安装 MySQL 容器(1Panel 管理)
  • 已安装 Redis 容器(1Panel 管理)
  • Docker 网络配置正确(1panel-network 存在)

网络配置

  • 域名 DNS 已解析到服务器 IP
  • 服务器防火墙已开放 80、443 端口
  • 服务器可从外网访问

数据库准备

  • 创建生产数据库 xserver
  • 创建专用数据库用户 xserver
  • 授予用户权限
  • 导入数据库结构和初始数据

SSL 证书

  • 安装 certbot: apt-get install certbot
  • 获取证书: certbot certonly --standalone -d xsm.hnxinyouhe.com
  • 验证证书路径正确

环境变量

  • 复制 .env.production.template 为 .env.production
  • 填写数据库配置
  • 填写 Redis 配置
  • 填写飞书配置
  • 更新飞书回调地址为 https://xsm.hnxinyouhe.com/login/callback

目录结构

  • 创建部署目录: /opt/x-server-mobile
  • 创建子目录: frontend, backend, logs, backup
  • 设置正确的目录权限

部署步骤

1. 准备服务器环境

# SSH 登录服务器
ssh root@your-server

# 创建目录结构
mkdir -p /opt/x-server-mobile/{frontend,backend,logs,backup}
mkdir -p /opt/x-server-mobile/logs/backend
mkdir -p /opt/x-server-mobile/logs/nginx

# 创建日志文件
touch /opt/x-server-mobile/logs/nginx_access.log
touch /opt/x-server-mobile/logs/nginx_error.log

2. 配置 OpenResty

# 复制配置文件到 OpenResty 配置目录
cp deploy/nginx/x-server-mobile-prod.conf /usr/local/openresty/nginx/conf/conf.d/x-server-mobile.conf

# 测试配置
openresty -t

# 如果测试通过,重载配置
openresty -s reload

3. 构建前端

# 在开发环境
cd /www/x-server-mobile/frontend
npm install
npm run build

# 验证构建产物
ls -la dist/

4. 部署

# 方式1: 使用部署脚本
./deploy.sh your-server-ip

# 方式2: 手动部署
# 上传前端
scp -r frontend/dist/* root@server:/opt/x-server-mobile/frontend/

# 上传后端
scp -r backend/ root@server:/opt/x-server-mobile/backend/

# 上传 docker-compose
scp docker-compose.prod.yml root@server:/opt/x-server-mobile/

5. 启动后端

# SSH 登录服务器
ssh root@server

# 进入部署目录
cd /opt/x-server-mobile

# 加载环境变量
source .env.production

# 启动容器
docker-compose -f docker-compose.prod.yml up -d

# 查看容器状态
docker ps | grep x-server

# 查看日志
docker logs -f x-server-backend-prod

部署后验证

前端验证

  • 访问 https://xsm.hnxinyouhe.com 显示登录页面
  • 页面样式加载正常
  • 浏览器控制台无错误

后端验证

  • 容器运行正常: docker ps | grep x-server
  • 健康检查通过
  • 日志无错误信息

功能验证

  • 邮箱密码登录功能正常
  • 飞书客户端内免登正常
  • 飞书扫码登录正常
  • 审批列表正常显示
  • 出差申请功能正常
  • 飞书卡片通知正常

飞书回调验证

  • 飞书后台配置回调地址: https://xsm.hnxinyouhe.com/login/callback
  • 点击飞书卡片"查看详情"跳转正确
  • 快速审批按钮功能正常

监控配置

日志监控

# Nginx 访问日志
tail -f /opt/x-server-mobile/logs/nginx_access.log

# Nginx 错误日志
tail -f /opt/x-server-mobile/logs/nginx_error.log

# 后端容器日志
docker logs -f x-server-backend-prod

# 后端应用日志
tail -f /opt/x-server-mobile/logs/backend/*.log

性能监控

# 容器资源使用
docker stats x-server-backend-prod

# 磁盘使用
du -sh /opt/x-server-mobile/*

# 内存使用
free -h

数据库监控

# 检查 MySQL 连接
docker exec x-server-backend-prod php -r "
    try {
        new PDO('mysql:host=DB_HOST;dbname=xserver', 'xserver', 'password');
        echo 'Database connection OK\n';
    } catch (Exception \$e) {
        echo 'Database connection FAILED: ' . \$e->getMessage() . '\n';
    }
"

回滚准备

备份检查

# 检查备份目录
ls -la /opt/x-server-mobile/backup/

# 查看最新备份
ls -lt /opt/x-server-mobile/backup/ | head -5

回滚测试

# 测试回滚脚本
./rollback.sh <backup_name>

定期维护

每周

  • 检查容器运行状态
  • 检查日志错误
  • 检查磁盘空间

每月

  • 更新 SSL 证书(自动续期)
  • 数据库备份
  • 日志归档和清理

每季度

  • 安全更新检查
  • 性能优化评估
  • 灾难恢复演练

应急处理

服务异常

# 查看容器状态
docker ps -a | grep x-server

# 重启后端容器
docker restart x-server-backend-prod

# 查看详细日志
docker logs --tail 100 x-server-backend-prod

数据库异常

# 检查 MySQL 容器
docker ps | grep mysql

# 进入 MySQL
docker exec -it <mysql-container> mysql -uxserver -p

# 检查连接数
SHOW PROCESSLIST;

网络异常

# 检查端口监听
netstat -tlnp | grep -E '80|443|8787'

# 检查防火墙
ufw status

# 测试外网访问
curl -I https://xsm.hnxinyouhe.com

联系信息

  • 开发负责人: ___________
  • 运维负责人: ___________
  • 紧急联系电话: ___________