e3fa7e86f3
新的文档结构:
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、关键文件等
6.1 KiB
6.1 KiB
uniservice-mobile.hnxinyouhe.com 线上部署说明
线上环境信息
| 项目 | 值 |
|---|---|
| 域名 | uniservice-mobile.hnxinyouhe.com |
| 站点目录 | /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index |
| 项目目录 | /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server |
| 后端容器 | x-server-backend-prod (端口 8787) |
| MySQL 容器 | 1Panel-mysql-XyxS |
| Redis 容器 | 1Panel-redis-pxdb |
| Docker 网络 | 1panel-network |
部署架构
| 组件 | 部署方式 |
|---|---|
| 前端 | 本地构建 → 上传静态文件 |
| 后端 | Git 拉取 → Docker 重启 |
目录结构
/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
├── index.html # 前端入口
├── assets/ # 前端静态资源
└── server/ # 整个项目(Git 仓库)
├── backend/ # 后端代码
│ ├── app/
│ ├── config/
│ └── ...
├── deploy/ # 部署配置
│ ├── docker-compose.prod.yml
│ ├── .env.production
│ └── deploy.sh
├── frontend/ # 前端源码(不使用)
├── docs/ # 文档
└── logs/ # 日志
└── backend/
快速部署
前端部署(本地)
# 本地构建
cd /www/x-server-mobile/frontend
npm run build
# 上传静态文件
rsync -avz --delete \
frontend/dist/ \
root@45.153.130.80:/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
后端部署(服务器)
# 登录服务器
ssh root@45.153.130.80
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server
# 拉取代码
git pull origin master
# 重启容器
docker-compose -f deploy/docker-compose.prod.yml down
docker-compose -f deploy/docker-compose.prod.yml up -d
或使用部署脚本:
ssh root@45.153.130.80
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server
./deploy/deploy.sh
首次部署
1. 克隆后端代码
ssh root@45.153.130.80
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index
# 克隆 master 分支
git clone <your-git-repository-url> server
cd server
git checkout master
2. 上传 Dockerfile
# 本地执行
scp backend/Dockerfile.prod root@45.153.130.80:/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/backend/
3. 配置环境变量
ssh root@45.153.130.80
vi /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/deploy/.env.production
填写飞书配置:
FEISHU_APP_ID=cli_axxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxx
FEISHU_ENCRYPT_KEY=xxxxxxxxxxxxxxxxxxxx
FEISHU_VERIFICATION_TOKEN=xxxxxxxxxxxxxxxxxxxx
4. 创建日志目录
ssh root@45.153.130.80
mkdir -p /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/logs/backend
5. 上传部署脚本
# 本地执行
scp deploy/server-deploy.sh root@45.153.130.80:/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/deploy/deploy.sh
# 赋予执行权限
ssh root@45.153.130.80
chmod +x /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/deploy/deploy.sh
6. 启动后端容器
ssh root@45.153.130.80
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server
docker-compose -f deploy/docker-compose.prod.yml up -d
docker ps | grep x-server
7. 上传前端
cd /www/x-server-mobile/frontend
npm run build
rsync -avz --delete \
frontend/dist/ \
root@45.153.130.80:/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
1Panel Nginx 配置
在 1Panel 面板(网站设置 → 配置文件)添加反向代理:
# 后端 API
location /api/ {
proxy_pass http://127.0.0.1:8787;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
}
# 飞书登录回调
location /login {
proxy_pass http://127.0.0.1:8787;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
}
location /login/callback {
proxy_pass http://127.0.0.1:8787;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
}
location /login/qrcode {
proxy_pass http://127.0.0.1:8787;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
}
# 飞书卡片回调
location /feishu/card/callback {
proxy_pass http://127.0.0.1:8787;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
}
部署验证
# 检查前端
curl -I https://uniservice-mobile.hnxinyouhe.com
# 检查后端容器
ssh root@45.153.130.80
docker ps | grep x-server
docker logs -f x-server-backend-prod
常见问题
| 问题 | 解决方案 |
|---|---|
| API 404 | 检查 Nginx 反向代理配置 |
| 容器启动失败 | 检查数据库/Redis 容器状态,查看日志 |
| 飞书登录失败 | 检查 /login/* 反向代理配置 |
| 静态资源 404 | 确认前端上传到正确目录 |
文件清单
需要上传到服务器的文件:
| 文件 | 目标位置 |
|---|---|
backend/Dockerfile.prod |
server/backend/ |
deploy/docker-compose.prod.yml |
server/deploy/ |
deploy/.env.production |
server/deploy/ |
deploy/server-deploy.sh |
server/deploy/deploy.sh |