|
|
@@ -1,87 +1,122 @@
|
|
|
-## 部署与上线指南
|
|
|
+# 部署与上线指南
|
|
|
|
|
|
-本文记录 shudao-chat 项目前后端在生产环境的标准交付流程,包括 Vue 前端打包、产物合入 Go 服务、Linux 下编译后端以及上传、运行服务的步骤。
|
|
|
+本文档详细说明如何在服务器的 `/tmp/tmp` 目录下拉取 `dev` 分支代码,并完成前后端的编译与生产环境部署。
|
|
|
|
|
|
----
|
|
|
+## 1. 环境准备
|
|
|
+
|
|
|
+确保服务器已安装以下环境:
|
|
|
+- **Git**: 用于拉取代码
|
|
|
+- **Node.js** (≥ 20.19) & **npm**: 用于前端打包
|
|
|
+- **Go** (≥ 1.24): 用于后端编译
|
|
|
|
|
|
-### 1. 前端(Vue 3 + Vite)打包
|
|
|
+## 2. 拉取代码
|
|
|
|
|
|
-**环境准备**
|
|
|
-- Node.js ≥ 20.19(建议与 `package.json` 中的 engines 保持一致)
|
|
|
-- npm(或 pnpm / yarn,以下以 npm 为例)
|
|
|
-- 在国内网络可替换源:`npm config set registry https://registry.npmmirror.com`
|
|
|
+进入目标目录并拉取远程 `dev` 分支代码:
|
|
|
|
|
|
-**打包流程**
|
|
|
```bash
|
|
|
-cd /path/to/shudao-chat(前端根目录)
|
|
|
-npm install
|
|
|
-npm run build
|
|
|
-```
|
|
|
+# 1. 创建并进入目录
|
|
|
+mkdir -p /tmp/tmp
|
|
|
+cd /tmp/tmp
|
|
|
|
|
|
-执行完成后会在根目录生成 `dist/`,结构类似:
|
|
|
+# 2. 拉取代码
|
|
|
+# 情况A:如果是首次部署(目录为空)
|
|
|
+git clone -b dev http://192.168.0.3:3000/ShuDao-SafeAI/ShuDaoMAIN.git .
|
|
|
+
|
|
|
+# 情况B:如果目录已存在且已有仓库
|
|
|
+# git checkout dev
|
|
|
+# git pull origin dev
|
|
|
```
|
|
|
-dist/
|
|
|
- index.html
|
|
|
- assets/
|
|
|
- *.js
|
|
|
- *.css
|
|
|
- ...
|
|
|
+
|
|
|
+> **注意**:请根据实际情况替换 git 仓库地址。
|
|
|
+
|
|
|
+## 3. 前端编译 (shudao-vue-frontend)
|
|
|
+
|
|
|
+进入前端目录,安装依赖并打包:
|
|
|
+
|
|
|
+```bash
|
|
|
+# 1. 进入前端目录
|
|
|
+cd shudao-vue-frontend
|
|
|
+
|
|
|
+# 2. 安装依赖
|
|
|
+npm install --registry=https://registry.npmmirror.com
|
|
|
+
|
|
|
+# 3. 执行构建
|
|
|
+npm run build
|
|
|
```
|
|
|
|
|
|
-### 2. 将前端产物放入 `shudao-chat-go`
|
|
|
-
|
|
|
-1. 备份旧版本(可选):
|
|
|
- ```bash
|
|
|
- cd shudao-chat-go
|
|
|
- mv views/index.html views/index_$(date +%Y%m%d%H%M%S).html
|
|
|
- mv assets assets_$(date +%Y%m%d%H%M%S)
|
|
|
- ```
|
|
|
-2. 拷贝新的 `dist` 产物:
|
|
|
- ```bash
|
|
|
- # 回到前端根目录
|
|
|
- cp dist/index.html shudao-chat-go/views/
|
|
|
- rsync -av --delete dist/assets/ shudao-chat-go/assets/
|
|
|
- ```
|
|
|
- - `views/index.html` 会被 `controllers/frontend.go` 用作模版。
|
|
|
- - `assets/` 目录被 `main.go` 中的 `beego.SetStaticPath("/assets", "assets")` 映射,前端静态资源必须放在这里。
|
|
|
-3. 若有 `dist` 中的其他静态目录(如 `public` 下复制出的 favicon 等),放入 `shudao-chat-go/static/`,Beego 已映射 `/static` 路径。
|
|
|
-
|
|
|
-### 3. 在本地编译 Linux 版后端
|
|
|
-
|
|
|
-**环境要求**
|
|
|
-- Go 1.24+(与 `go.mod` 中声明一致)
|
|
|
-- 已配置好 GOPROXY(如国内:`https://goproxy.cn,direct`)
|
|
|
-
|
|
|
-**编译命令**
|
|
|
+构建完成后,会在 `shudao-vue-frontend/dist` 目录下生成静态资源(包含 `assets` 目录和 `index.html`)。
|
|
|
+
|
|
|
+## 4. 整合产物到后端
|
|
|
+
|
|
|
+将前端生成的静态资源复制到后端对应的目录中:
|
|
|
+
|
|
|
```bash
|
|
|
-cd shudao-chat-go
|
|
|
-go mod download
|
|
|
-GOOS=linux GOARCH=amd64 go build -o bin/shudao-chat-go ./main.go
|
|
|
+# 1. 回到项目根目录
|
|
|
+cd ..
|
|
|
+
|
|
|
+# 2. 进入后端目录
|
|
|
+cd shudao-go-backend
|
|
|
+
|
|
|
+# 3. 清理旧资源(可选,建议执行以避免缓存问题)
|
|
|
+rm -rf assets
|
|
|
+rm -f views/index.html
|
|
|
+
|
|
|
+# 4. 复制新资源
|
|
|
+# 复制静态资源目录 assets
|
|
|
+cp -r ../shudao-vue-frontend/dist/assets .
|
|
|
|
|
|
-或者安装bee框架:(go env -w GOPROXY=https://goproxy.cn)//如果下面命令安装不成功先执行这条命令
|
|
|
-go install github.com/beego/bee/v2@latest
|
|
|
-然后运行:bee pack -be GOOS=linux
|
|
|
+# 复制入口文件 index.html 到 views 目录
|
|
|
+cp ../shudao-vue-frontend/dist/index.html views/
|
|
|
```
|
|
|
|
|
|
-输出文件:压缩包:shudao-chat-go.tar.gz
|
|
|
+> **说明**:
|
|
|
+> - `assets/` 目录存放 JS/CSS/图片等静态资源,后端通过 `beego.SetStaticPath("/assets", "assets")` 进行映射。
|
|
|
+> - `views/index.html` 是前端入口页面,后端控制器会渲染此模板。
|
|
|
|
|
|
-### 4. 打包并上传到服务器
|
|
|
+## 5. 后端编译与运行 (shudao-go-backend)
|
|
|
+
|
|
|
+编译 Go 后端服务并启动:
|
|
|
|
|
|
-**上传方式(示例)**
|
|
|
```bash
|
|
|
-压缩包拖入/tmp/tmp
|
|
|
+# 1. 整理依赖
|
|
|
+go mod tidy
|
|
|
+
|
|
|
+# 2. 编译二进制文件
|
|
|
+# GOOS=linux GOARCH=amd64 确保编译为 Linux 可执行文件
|
|
|
+GOOS=linux GOARCH=amd64 go build -o shudao-chat-go main.go
|
|
|
+
|
|
|
+# 3. 赋予执行权限
|
|
|
+chmod +x shudao-chat-go
|
|
|
+
|
|
|
+# 4. 停止旧服务(如果存在)
|
|
|
+# 查找进程ID
|
|
|
+# ps -ef | grep shudao-chat-go
|
|
|
+# 杀掉进程
|
|
|
+# kill -9 <PID>
|
|
|
+
|
|
|
+# 5. 启动新服务 (后台运行)
|
|
|
+nohup ./shudao-chat-go > nohup.out 2>&1 &
|
|
|
+
|
|
|
+# 6. 查看启动日志
|
|
|
+tail -f nohup.out
|
|
|
```
|
|
|
|
|
|
-### 5. 服务器部署与运行
|
|
|
-- cd /tmp
|
|
|
-- cd tmp
|
|
|
-- tar xvf shudao-chat-go.tar.gz
|
|
|
-- chmod +x shudao-chat-go
|
|
|
-- 找到进程:ps -ef | grep shudao-chat-go
|
|
|
-- 杀死进程:kill -9 1029395 # 将 12345 替换为你找到的实际PID
|
|
|
-- nohup ./shudao-chat-go & tail -f nohup.out #查看实时状态
|
|
|
+## 6. 验证部署
|
|
|
|
|
|
+- 检查进程是否存在:
|
|
|
+ ```bash
|
|
|
+ ps -ef | grep shudao-chat-go
|
|
|
+ ```
|
|
|
+- 访问服务地址,确认页面加载正常且 API 调用成功。
|
|
|
|
|
|
---
|
|
|
|
|
|
+### 目录结构说明 (重构后)
|
|
|
|
|
|
+- `/shudao-vue-frontend`: Vue 3 前端项目源码
|
|
|
+- `/shudao-go-backend`: Beego 后端项目源码
|
|
|
+ - `/controllers`: 控制器逻辑
|
|
|
+ - `/models`: 数据模型
|
|
|
+ - `/views`: 存放前端入口 HTML 模板
|
|
|
+ - `/assets`: (编译部署时生成) 存放前端静态资源
|
|
|
+ - `/static`: 其他静态文件
|