Files
DP/部署配置手册.md

437 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 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/` 测试!** 🎉