Initial commit - DesignerCEP Project with Caddy deployment

This commit is contained in:
zuowei1216
2025-12-19 21:27:17 +08:00
commit 8ea58fe480
170 changed files with 47469 additions and 0 deletions

436
部署配置手册.md Normal file
View File

@@ -0,0 +1,436 @@
# 🚀 DesignerCEP 部署配置手册(子域名方案)
## 📐 架构概览
```
app.aidg168.uk → 前端应用Caddy 静态文件)
backend.aidg168.uk → 后端 APIFastAPI
```
---
## 🌐 第 1 步:配置 DNSCloudflare
登录 Cloudflare添加以下 DNS 记录:
| 类型 | 名称 | 内容 | 代理状态 | TTL |
|------|------|------|----------|-----|
| A | app | 103.97.201.136 | ☁️ 已代理 | 自动 |
| A | backend | 103.97.201.136 | ☁️ 已代理 | 自动 |
| A | @ | 103.97.201.136 | ☁️ 已代理 | 自动 |
> 103.97.201.136 是您的服务器 IP
---
## 📁 第 2 步:服务器目录准备
SSH 登录服务器:
```bash
ssh root@103.97.201.136
```
创建目录结构:
```bash
# 创建静态文件目录
sudo mkdir -p /var/www/DesignerCEP/Server/static/app
# 设置权限
sudo chown -R www-data:www-data /var/www/DesignerCEP
sudo chmod -R 755 /var/www/DesignerCEP
```
---
## ⚙️ 第 3 步:配置 Caddy
### 方法 A直接使用提供的配置文件
```bash
# 1. 上传 Caddyfile 到服务器
# 在本地执行:
scp Caddyfile root@103.97.201.136:/etc/caddy/Caddyfile
# 2. SSH 登录服务器
ssh root@103.97.201.136
# 3. 验证配置
sudo caddy validate --config /etc/caddy/Caddyfile
# 4. 重启 Caddy
sudo systemctl restart caddy
# 5. 查看状态
sudo systemctl status caddy
```
### 方法 B手动编辑
```bash
# 编辑 Caddy 配置
sudo nano /etc/caddy/Caddyfile
# 粘贴 Caddyfile 的内容(已在项目根目录)
# 保存后验证
sudo caddy validate --config /etc/caddy/Caddyfile
# 重启
sudo systemctl restart caddy
```
---
## 📤 第 4 步:上传前端文件
### 构建前端
在本地执行:
```bash
cd Designer
# 构建主应用
npm run build:core
# 输出在 dist_core/ 目录
```
### 上传到服务器
#### 方法 A手动上传临时测试
```bash
# 在本地 Designer 目录执行
cd dist_core
# 上传所有文件到服务器
scp -r * root@103.97.201.136:/var/www/DesignerCEP/Server/static/app/
```
#### 方法 B使用自动化脚本推荐
修改 `AdminTool/deploy_config.json`
```json
{
"host": "103.97.201.136",
"port": "22",
"username": "root",
"password": "tuEj-jkaw-8mFe",
"remote_path": "/var/www/DesignerCEP/Server/static"
}
```
然后执行:
```bash
cd AdminTool
python auto_deploy_core.py --version 1.0.0 --deploy --update-db
```
---
## 🔍 第 5 步:验证部署
### 5.1 检查文件是否上传成功
SSH 登录服务器:
```bash
ssh root@103.97.201.136
# 检查文件
ls -la /var/www/DesignerCEP/Server/static/app/
# 应该看到:
# index-core.html
# assets/
# CSInterface.js
# vite.svg
```
### 5.2 测试静态文件访问
在浏览器访问:
```
https://app.aidg168.uk/index-core.html
```
**期望结果**:能看到页面(即使可能显示错误,至少文件能加载)
### 5.3 测试 API
```bash
# 测试健康检查
curl https://backend.aidg168.uk/health
# 期望输出:
# {"status":"healthy","timestamp":"...","env":"production"}
```
### 5.4 测试完整流程
1. 在浏览器打开:`https://app.aidg168.uk/`
2. 应该能看到登录页面(如果已合并)
3. 或者 404如果还没合并 Shell 和 Core
---
## ⚠️ 当前问题
### 问题 1文件名不匹配
您的 Core 构建输出是 `index-core.html`,但 Caddy 和浏览器默认访问 `index.html`
**解决方法 A**:修改 Caddy 配置
```caddy
app.aidg168.uk {
root * /var/www/DesignerCEP/Server/static/app
# 指定默认文件
try_files {path} /index-core.html
file_server
}
```
**解决方法 B**(推荐):修改构建配置
```typescript
// Designer/vite.config.ts
build: {
outDir: 'dist_core',
rollupOptions: {
input: 'index-core.html' // ← 改成 'index.html'
}
}
```
### 问题 2Shell 和 Core 还没合并
目前 Shell登录和 Core主功能还是分开的。
需要:
- 把登录页面路由加到 Core 应用
- 或者先测试用 Core 的主页
---
## 🎯 快速测试方案
### 临时方案:先让 Core 能访问
1. **修改 Caddy 配置**(访问 index-core.html
```caddy
app.aidg168.uk {
root * /var/www/DesignerCEP/Server/static/app
# 默认访问 index-core.html
@root {
path /
}
rewrite @root /index-core.html
try_files {path} /index-core.html
file_server
encode gzip
}
```
2. **上传文件**
```bash
cd Designer/dist_core
scp -r * root@103.97.201.136:/var/www/DesignerCEP/Server/static/app/
```
3. **访问测试**
```
https://app.aidg168.uk/
```
---
## 📋 完整 Caddyfile 配置
复制这个内容到服务器的 `/etc/caddy/Caddyfile`
```caddy
# ==================== DesignerCEP Caddy 配置 ====================
{
# 邮箱用于 HTTPS 证书申请
email admin@aidg168.uk
# 如果使用 Cloudflare 橙云代理,取消下面这行注释
# auto_https off
}
# ==================== 前端应用 ====================
app.aidg168.uk {
# 静态文件根目录
root * /var/www/DesignerCEP/Server/static/app
# SPA 路由支持(所有请求都返回 index-core.html
try_files {path} /index-core.html
# 提供静态文件
file_server
# ========== 缓存策略 ==========
# HTML 不缓存
@html path *.html
header @html Cache-Control "no-cache, no-store, must-revalidate"
# JS/CSS 长期缓存
@assets path *.js *.css *.woff *.woff2
header @assets Cache-Control "public, max-age=31536000, immutable"
# 图片缓存
@images path *.png *.jpg *.jpeg *.gif *.svg *.ico
header @images Cache-Control "public, max-age=2592000"
# ========== 安全头 ==========
header {
X-Frame-Options "SAMEORIGIN"
X-Content-Type-Options "nosniff"
X-XSS-Protection "1; mode=block"
-Server
}
# ========== 压缩 ==========
encode gzip
# ========== 日志 ==========
log {
output file /var/log/caddy/app.log {
roll_size 50mb
roll_keep 5
}
}
}
# ==================== 后端 API ====================
backend.aidg168.uk {
# 反向代理到 FastAPI (端口 8000)
reverse_proxy localhost:8000 {
# 传递真实 IP
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
header_up X-Forwarded-Host {host}
}
# ========== 压缩 ==========
encode gzip
# ========== 日志 ==========
log {
output file /var/log/caddy/backend.log {
roll_size 50mb
roll_keep 5
}
}
}
# ==================== 主域名重定向(可选)====================
aidg168.uk, www.aidg168.uk {
# 重定向到应用
redir https://app.aidg168.uk{uri} permanent
}
```
---
## ✅ 部署清单
执行以下命令:
```bash
# ========== 在本地 ==========
# 1. 构建前端
cd Designer
npm run build:core
# 2. 上传 Caddyfile
scp Caddyfile root@103.97.201.136:/etc/caddy/Caddyfile
# 3. 上传前端文件
cd dist_core
scp -r * root@103.97.201.136:/var/www/DesignerCEP/Server/static/app/
# ========== 在服务器 ==========
# 4. SSH 登录
ssh root@103.97.201.136
# 5. 验证 Caddy 配置
sudo caddy validate --config /etc/caddy/Caddyfile
# 6. 重启 Caddy
sudo systemctl restart caddy
# 7. 查看状态
sudo systemctl status caddy
# 8. 查看日志(如果有错误)
sudo journalctl -u caddy -n 50
```
---
## 🧪 测试
### 测试 1静态文件
```bash
curl -I https://app.aidg168.uk/
# 期望HTTP/2 200
```
### 测试 2API
```bash
curl https://backend.aidg168.uk/health
# 期望:{"status":"healthy"}
```
### 测试 3浏览器访问
```
https://app.aidg168.uk/
```
---
## 🔧 常见问题
### Q1: 访问 app.aidg168.uk 显示 404
**检查**
```bash
ls -la /var/www/DesignerCEP/Server/static/app/index-core.html
```
### Q2: API 请求 CORS 错误
**检查**FastAPI 的 `ALLOWED_ORIGINS` 是否包含 `https://app.aidg168.uk`
```bash
# 编辑 .env
sudo nano /var/www/DesignerCEP/Server/.env
# 确保有:
# ALLOWED_ORIGINS=https://app.aidg168.uk,https://backend.aidg168.uk
```
### Q3: Caddy 证书申请失败
如果使用 Cloudflare 橙云代理,修改 Caddyfile
```caddy
{
auto_https off # ← 添加这行
}
```
然后重启 Caddy。
---
**部署完成后,访问 `https://app.aidg168.uk/` 测试!** 🎉