feat: 更新部署配置适应新的目录结构
- 后端代码在 server/ 目录(Git 仓库)
- docker-compose 在 deploy/ 目录
- 部署脚本路径更新
- 部署文档更新
目录结构:
/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
├── index.html # 前端入口
├── assets/ # 前端静态资源
└── server/ # 整个项目(Git)
├── backend/
├── deploy/
└── logs/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,12 @@
|
|||||||
# X-Server Mobile 生产环境 Docker Compose
|
# X-Server Mobile 生产环境 Docker Compose
|
||||||
# 使用方法: docker-compose -f deploy/docker-compose.prod.yml up -d
|
# 位置: server/deploy/docker-compose.prod.yml
|
||||||
|
# 项目根目录执行: docker-compose -f deploy/docker-compose.prod.yml up -d
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# PHP 后端服务
|
# PHP 后端服务
|
||||||
backend:
|
backend:
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
context: ../backend
|
||||||
dockerfile: Dockerfile.prod
|
dockerfile: Dockerfile.prod
|
||||||
container_name: x-server-backend-prod
|
container_name: x-server-backend-prod
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -28,15 +29,15 @@ services:
|
|||||||
- REDIS_PORT=6379
|
- REDIS_PORT=6379
|
||||||
- REDIS_PASSWORD=redis_FTzdM6
|
- REDIS_PASSWORD=redis_FTzdM6
|
||||||
|
|
||||||
# 飞书配置(请替换为实际值)
|
# 飞书配置(从 .env.production 读取)
|
||||||
- FEISHU_APP_ID=${FEISHU_APP_ID}
|
- FEISHU_APP_ID=${FEISHU_APP_ID}
|
||||||
- FEISHU_APP_SECRET=${FEISHU_APP_SECRET}
|
- FEISHU_APP_SECRET=${FEISHU_APP_SECRET}
|
||||||
- FEISHU_ENCRYPT_KEY=${FEISHU_ENCRYPT_KEY}
|
- FEISHU_ENCRYPT_KEY=${FEISHU_ENCRYPT_KEY}
|
||||||
- FEISHU_VERIFICATION_TOKEN=${FEISHU_VERIFICATION_TOKEN}
|
- FEISHU_VERIFICATION_TOKEN=${FEISHU_VERIFICATION_TOKEN}
|
||||||
- FEISHU_TENANT_KEY=${FEISHU_TENANT_KEY:-14e7bc0fe5985740}
|
- FEISHU_TENANT_KEY=${FEISHU_TENANT_KEY:-14e7bc0fe5985740}
|
||||||
volumes:
|
volumes:
|
||||||
- ./backend:/app
|
- ../backend:/app
|
||||||
- ./logs/backend:/app/runtime/logs
|
- ../logs/backend:/app/runtime/logs
|
||||||
networks:
|
networks:
|
||||||
- 1panel-network
|
- 1panel-network
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
+14
-13
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# X-Server Mobile 后端部署脚本(服务器端)
|
# X-Server Mobile 后端部署脚本(服务器端)
|
||||||
# 使用方法: cd /opt/x-server-mobile && ./deploy.sh
|
# 位置: server/deploy.sh
|
||||||
|
# 使用方法: ./deploy.sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -27,8 +28,8 @@ log_step() {
|
|||||||
echo -e "${BLUE}==>${NC} $1"
|
echo -e "${BLUE}==>${NC} $1"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 项目目录
|
# 项目目录(server 目录)
|
||||||
PROJECT_DIR="/opt/x-server-mobile"
|
PROJECT_DIR="/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server"
|
||||||
cd "$PROJECT_DIR"
|
cd "$PROJECT_DIR"
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
@@ -43,12 +44,7 @@ echo ""
|
|||||||
# ============================================
|
# ============================================
|
||||||
log_step "拉取最新代码..."
|
log_step "拉取最新代码..."
|
||||||
|
|
||||||
# 获取当前分支名
|
git pull origin master
|
||||||
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
||||||
|
|
||||||
# 拉取最新代码
|
|
||||||
git fetch origin
|
|
||||||
git reset --hard "origin/${CURRENT_BRANCH}"
|
|
||||||
|
|
||||||
log_info "代码已更新"
|
log_info "代码已更新"
|
||||||
|
|
||||||
@@ -57,14 +53,19 @@ log_info "代码已更新"
|
|||||||
# ============================================
|
# ============================================
|
||||||
log_step "重启后端容器..."
|
log_step "重启后端容器..."
|
||||||
|
|
||||||
if [ ! -f "docker-compose.prod.yml" ]; then
|
if [ ! -f "deploy/docker-compose.prod.yml" ]; then
|
||||||
log_error "docker-compose.prod.yml 不存在"
|
log_error "deploy/docker-compose.prod.yml 不存在"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 加载环境变量
|
||||||
|
if [ -f "deploy/.env.production" ]; then
|
||||||
|
export $(cat deploy/.env.production | grep -v '^#' | xargs)
|
||||||
|
fi
|
||||||
|
|
||||||
# 重启容器
|
# 重启容器
|
||||||
docker-compose -f docker-compose.prod.yml down 2>/dev/null || true
|
docker-compose -f deploy/docker-compose.prod.yml down 2>/dev/null || true
|
||||||
docker-compose -f docker-compose.prod.yml up -d
|
docker-compose -f deploy/docker-compose.prod.yml up -d
|
||||||
|
|
||||||
log_info "后端容器已重启"
|
log_info "后端容器已重启"
|
||||||
|
|
||||||
|
|||||||
+85
-86
@@ -5,8 +5,8 @@
|
|||||||
| 项目 | 值 |
|
| 项目 | 值 |
|
||||||
|------|-----|
|
|------|-----|
|
||||||
| **域名** | uniservice-mobile.hnxinyouhe.com |
|
| **域名** | uniservice-mobile.hnxinyouhe.com |
|
||||||
| **前端目录** | /www/sites/uniservice-mobile.hnxinyouhe.com/index |
|
| **站点目录** | /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index |
|
||||||
| **后端目录** | /opt/x-server-mobile |
|
| **项目目录** | /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server |
|
||||||
| **后端容器** | x-server-backend-prod (端口 8787) |
|
| **后端容器** | x-server-backend-prod (端口 8787) |
|
||||||
| **MySQL 容器** | 1Panel-mysql-XyxS |
|
| **MySQL 容器** | 1Panel-mysql-XyxS |
|
||||||
| **Redis 容器** | 1Panel-redis-pxdb |
|
| **Redis 容器** | 1Panel-redis-pxdb |
|
||||||
@@ -23,30 +23,32 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 快速部署
|
## 目录结构
|
||||||
|
|
||||||
### 方式一:自动部署脚本(推荐)
|
```
|
||||||
|
/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
|
||||||
**本地执行**(前端+后端一起部署):
|
├── index.html # 前端入口
|
||||||
|
├── assets/ # 前端静态资源
|
||||||
```bash
|
└── server/ # 整个项目(Git 仓库)
|
||||||
# 1. 本地构建前端
|
├── backend/ # 后端代码
|
||||||
cd /www/x-server-mobile/frontend
|
│ ├── app/
|
||||||
npm run build
|
│ ├── config/
|
||||||
|
│ └── ...
|
||||||
# 2. 执行部署脚本
|
├── deploy/ # 部署配置
|
||||||
cd ..
|
│ ├── docker-compose.prod.yml
|
||||||
./deploy/deploy-1panel.sh your-server-ip
|
│ ├── .env.production
|
||||||
|
│ └── deploy.sh
|
||||||
|
├── frontend/ # 前端源码(不使用)
|
||||||
|
├── docs/ # 文档
|
||||||
|
└── logs/ # 日志
|
||||||
|
└── backend/
|
||||||
```
|
```
|
||||||
|
|
||||||
脚本会自动:
|
---
|
||||||
- 上传前端静态文件到 1Panel 静态站点
|
|
||||||
- 上传后端代码到服务器
|
|
||||||
- 重启后端 Docker 容器
|
|
||||||
|
|
||||||
### 方式二:手动部署
|
## 快速部署
|
||||||
|
|
||||||
#### 前端部署(本地)
|
### 前端部署(本地)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 本地构建
|
# 本地构建
|
||||||
@@ -56,75 +58,59 @@ npm run build
|
|||||||
# 上传静态文件
|
# 上传静态文件
|
||||||
rsync -avz --delete \
|
rsync -avz --delete \
|
||||||
frontend/dist/ \
|
frontend/dist/ \
|
||||||
root@your-server:/www/sites/uniservice-mobile.hnxinyouhe.com/index/
|
root@45.153.130.80:/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 后端部署(服务器)
|
### 后端部署(服务器)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 登录服务器
|
# 登录服务器
|
||||||
ssh root@your-server
|
ssh root@45.153.130.80
|
||||||
cd /opt/x-server-mobile
|
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server
|
||||||
|
|
||||||
# 拉取代码
|
# 拉取代码
|
||||||
git pull
|
git pull origin master
|
||||||
|
|
||||||
# 重启容器
|
# 重启容器
|
||||||
docker-compose -f docker-compose.prod.yml down
|
docker-compose -f deploy/docker-compose.prod.yml down
|
||||||
docker-compose -f docker-compose.prod.yml up -d
|
docker-compose -f deploy/docker-compose.prod.yml up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
或使用部署脚本:
|
||||||
|
|
||||||
## 服务器端部署脚本
|
|
||||||
|
|
||||||
在服务器上创建 `/opt/x-server-mobile/deploy.sh`:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
ssh root@45.153.130.80
|
||||||
cd /opt/x-server-mobile
|
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server
|
||||||
git pull
|
./deploy/deploy.sh
|
||||||
docker-compose -f docker-compose.prod.yml down
|
|
||||||
docker-compose -f docker-compose.prod.yml up -d
|
|
||||||
docker ps | grep x-server
|
|
||||||
```
|
|
||||||
|
|
||||||
使用:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ssh root@your-server
|
|
||||||
cd /opt/x-server-mobile
|
|
||||||
chmod +x deploy.sh
|
|
||||||
./deploy.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 首次部署
|
## 首次部署
|
||||||
|
|
||||||
### 1. 服务器准备
|
### 1. 克隆后端代码
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh root@your-server
|
ssh root@45.153.130.80
|
||||||
|
cd /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index
|
||||||
|
|
||||||
# 创建项目目录
|
# 克隆 master 分支
|
||||||
mkdir -p /opt/x-server-mobile
|
git clone <your-git-repository-url> server
|
||||||
cd /opt/x-server-mobile
|
cd server
|
||||||
|
git checkout master
|
||||||
# 克隆代码
|
|
||||||
git clone <your-git-repository-url> .
|
|
||||||
|
|
||||||
# 上传部署配置
|
|
||||||
# (在本地执行)
|
|
||||||
scp deploy/docker-compose.prod.yml root@your-server:/opt/x-server-mobile/
|
|
||||||
scp deploy/.env.production root@your-server:/opt/x-server-mobile/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. 配置环境变量
|
### 2. 上传 Dockerfile
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh root@your-server
|
# 本地执行
|
||||||
vi /opt/x-server-mobile/.env.production
|
scp backend/Dockerfile.prod root@45.153.130.80:/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/backend/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 配置环境变量
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh root@45.153.130.80
|
||||||
|
vi /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/deploy/.env.production
|
||||||
```
|
```
|
||||||
|
|
||||||
填写飞书配置:
|
填写飞书配置:
|
||||||
@@ -136,29 +122,41 @@ FEISHU_ENCRYPT_KEY=xxxxxxxxxxxxxxxxxxxx
|
|||||||
FEISHU_VERIFICATION_TOKEN=xxxxxxxxxxxxxxxxxxxx
|
FEISHU_VERIFICATION_TOKEN=xxxxxxxxxxxxxxxxxxxx
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. 启动后端容器
|
### 4. 创建日志目录
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh root@your-server
|
ssh root@45.153.130.80
|
||||||
cd /opt/x-server-mobile
|
mkdir -p /opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/server/logs/backend
|
||||||
docker-compose -f docker-compose.prod.yml up -d
|
```
|
||||||
|
|
||||||
|
### 5. 上传部署脚本
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 本地执行
|
||||||
|
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. 启动后端容器
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
docker ps | grep x-server
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. 配置 1Panel 静态站点
|
### 7. 上传前端
|
||||||
|
|
||||||
1. 在 1Panel 面板创建静态网站
|
|
||||||
2. 根目录: `/www/sites/uniservice-mobile.hnxinyouhe.com/index`
|
|
||||||
3. 添加 Nginx 反向代理(见下方配置)
|
|
||||||
|
|
||||||
### 5. 上传前端
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /www/x-server-mobile/frontend
|
cd /www/x-server-mobile/frontend
|
||||||
npm run build
|
npm run build
|
||||||
rsync -avz --delete \
|
rsync -avz --delete \
|
||||||
frontend/dist/ \
|
frontend/dist/ \
|
||||||
root@your-server:/www/sites/uniservice-mobile.hnxinyouhe.com/index/
|
root@45.153.130.80:/opt/1panel/www/sites/uniservice-mobile.hnxinyouhe.com/index/
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -226,7 +224,7 @@ location /feishu/card/callback {
|
|||||||
curl -I https://uniservice-mobile.hnxinyouhe.com
|
curl -I https://uniservice-mobile.hnxinyouhe.com
|
||||||
|
|
||||||
# 检查后端容器
|
# 检查后端容器
|
||||||
ssh root@your-server
|
ssh root@45.153.130.80
|
||||||
docker ps | grep x-server
|
docker ps | grep x-server
|
||||||
docker logs -f x-server-backend-prod
|
docker logs -f x-server-backend-prod
|
||||||
```
|
```
|
||||||
@@ -239,17 +237,18 @@ docker logs -f x-server-backend-prod
|
|||||||
|------|---------|
|
|------|---------|
|
||||||
| API 404 | 检查 Nginx 反向代理配置 |
|
| API 404 | 检查 Nginx 反向代理配置 |
|
||||||
| 容器启动失败 | 检查数据库/Redis 容器状态,查看日志 |
|
| 容器启动失败 | 检查数据库/Redis 容器状态,查看日志 |
|
||||||
| 飙书登录失败 | 检查 `/login/*` 反向代理配置 |
|
| 飞书登录失败 | 检查 `/login/*` 反向代理配置 |
|
||||||
| 静态资源 404 | 确认前端上传到正确目录 |
|
| 静态资源 404 | 确认前端上传到正确目录 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 文件清单
|
## 文件清单
|
||||||
|
|
||||||
| 文件 | 用途 |
|
需要上传到服务器的文件:
|
||||||
|------|------|
|
|
||||||
| `deploy/docker-compose.prod.yml` | 生产环境 Docker Compose |
|
| 文件 | 目标位置 |
|
||||||
| `deploy/.env.production` | 生产环境变量 |
|
|------|---------|
|
||||||
| `deploy/nginx-1panel.conf` | Nginx 配置参考 |
|
| `backend/Dockerfile.prod` | `server/backend/` |
|
||||||
| `deploy/deploy-1panel.sh` | 本端部署脚本 |
|
| `deploy/docker-compose.prod.yml` | `server/deploy/` |
|
||||||
| `deploy/server-deploy.sh` | 服务器端部署脚本 |
|
| `deploy/.env.production` | `server/deploy/` |
|
||||||
|
| `deploy/server-deploy.sh` | `server/deploy/deploy.sh` |
|
||||||
|
|||||||
Reference in New Issue
Block a user