4ceb5eac7e
文件结构优化: - docs/ 归档所有项目文档(PROJECT.md, PROJECT_ISSUES.md 等) - deploy/ 归档所有部署相关文件(docker-compose.prod.yml, nginx 配置等) - scripts/ 归档脚本文件(deploy.sh, rollback.sh) - tests/ 归档测试文件(test_data.php) 更新引用路径: - CLAUDE.md 更新文档路径引用 - 部署文档更新配置文件路径引用 清理文件: - 移除非必要的测试文件(TestController, 测试脚本等) - 移除重复/错误的目录 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
288 lines
5.4 KiB
Markdown
288 lines
5.4 KiB
Markdown
# 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. 准备服务器环境
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 复制配置文件到 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. 构建前端
|
|
|
|
```bash
|
|
# 在开发环境
|
|
cd /www/x-server-mobile/frontend
|
|
npm install
|
|
npm run build
|
|
|
|
# 验证构建产物
|
|
ls -la dist/
|
|
```
|
|
|
|
### 4. 部署
|
|
|
|
```bash
|
|
# 方式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. 启动后端
|
|
|
|
```bash
|
|
# 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`
|
|
- [ ] 点击飞书卡片"查看详情"跳转正确
|
|
- [ ] 快速审批按钮功能正常
|
|
|
|
---
|
|
|
|
## 监控配置
|
|
|
|
### 日志监控
|
|
|
|
```bash
|
|
# 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
|
|
```
|
|
|
|
### 性能监控
|
|
|
|
```bash
|
|
# 容器资源使用
|
|
docker stats x-server-backend-prod
|
|
|
|
# 磁盘使用
|
|
du -sh /opt/x-server-mobile/*
|
|
|
|
# 内存使用
|
|
free -h
|
|
```
|
|
|
|
### 数据库监控
|
|
|
|
```bash
|
|
# 检查 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';
|
|
}
|
|
"
|
|
```
|
|
|
|
---
|
|
|
|
## 回滚准备
|
|
|
|
### 备份检查
|
|
|
|
```bash
|
|
# 检查备份目录
|
|
ls -la /opt/x-server-mobile/backup/
|
|
|
|
# 查看最新备份
|
|
ls -lt /opt/x-server-mobile/backup/ | head -5
|
|
```
|
|
|
|
### 回滚测试
|
|
|
|
```bash
|
|
# 测试回滚脚本
|
|
./rollback.sh <backup_name>
|
|
```
|
|
|
|
---
|
|
|
|
## 定期维护
|
|
|
|
### 每周
|
|
- [ ] 检查容器运行状态
|
|
- [ ] 检查日志错误
|
|
- [ ] 检查磁盘空间
|
|
|
|
### 每月
|
|
- [ ] 更新 SSL 证书(自动续期)
|
|
- [ ] 数据库备份
|
|
- [ ] 日志归档和清理
|
|
|
|
### 每季度
|
|
- [ ] 安全更新检查
|
|
- [ ] 性能优化评估
|
|
- [ ] 灾难恢复演练
|
|
|
|
---
|
|
|
|
## 应急处理
|
|
|
|
### 服务异常
|
|
|
|
```bash
|
|
# 查看容器状态
|
|
docker ps -a | grep x-server
|
|
|
|
# 重启后端容器
|
|
docker restart x-server-backend-prod
|
|
|
|
# 查看详细日志
|
|
docker logs --tail 100 x-server-backend-prod
|
|
```
|
|
|
|
### 数据库异常
|
|
|
|
```bash
|
|
# 检查 MySQL 容器
|
|
docker ps | grep mysql
|
|
|
|
# 进入 MySQL
|
|
docker exec -it <mysql-container> mysql -uxserver -p
|
|
|
|
# 检查连接数
|
|
SHOW PROCESSLIST;
|
|
```
|
|
|
|
### 网络异常
|
|
|
|
```bash
|
|
# 检查端口监听
|
|
netstat -tlnp | grep -E '80|443|8787'
|
|
|
|
# 检查防火墙
|
|
ufw status
|
|
|
|
# 测试外网访问
|
|
curl -I https://xsm.hnxinyouhe.com
|
|
```
|
|
|
|
---
|
|
|
|
## 联系信息
|
|
|
|
- 开发负责人: ___________
|
|
- 运维负责人: ___________
|
|
- 紧急联系电话: ___________
|