# 部署与上线指南 本文档详细说明如何在服务器的 `/tmp/tmp` 目录下拉取 `dev` 分支代码,并完成前后端的编译与生产环境部署。 ## 1. 环境准备 ### 方案A:服务器直接编译(需要安装 Go) 确保服务器已安装以下环境: - **Git**: 用于拉取代码 - **Node.js** (≥ 20.19) & **npm**: 用于前端打包 - **Go** (≥ 1.24): 用于后端编译 #### 安装 Go 1.24+ ```bash # 1. 下载 Go 1.24 wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz # 2. 解压到 /usr/local sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz # 3. 配置环境变量 echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc echo 'export GOPATH=$HOME/go' >> ~/.bashrc echo 'export GOPROXY=https://goproxy.cn,direct' >> ~/.bashrc source ~/.bashrc # 4. 验证安装 go version ``` ### 方案B:本地编译上传(推荐,无需服务器安装 Go) 在本地 Windows 环境编译好二进制文件,然后上传到服务器。详见后续步骤。 ## 2. 拉取代码 进入目标目录并拉取远程 `dev` 分支代码: ```bash # 1. 创建并进入目录 mkdir -p /tmp/tmp cd /tmp/tmp # 2. 拉取代码 # 情况A:如果是首次部署(目录为空) git clone -b dev http://192.168.0.3:3000/ShuDao-SafeAI/ShuDaoMAIN.git . # 情况B:如果目录已存在且已有仓库 # git checkout dev # git pull origin dev ``` > **注意**:请根据实际情况替换 git 仓库地址。 ## 3. 前端编译 (shudao-vue-frontend) 进入前端目录,安装依赖并打包: ```bash # 1. 进入前端目录 cd shudao-vue-frontend # 2. 安装依赖 npm install --registry=https://registry.npmmirror.com # 3. 执行构建 npm run build ``` 构建完成后,会在 `shudao-vue-frontend/dist` 目录下生成静态资源(包含 `assets` 目录和 `index.html`)。 ## 4. 整合产物到后端 将前端生成的静态资源复制到后端对应的目录中: ```bash # 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 . # 复制入口文件 index.html 到 views 目录 cp ../shudao-vue-frontend/dist/index.html views/ ``` > **说明**: > - `assets/` 目录存放 JS/CSS/图片等静态资源,后端通过 `beego.SetStaticPath("/assets", "assets")` 进行映射。 > - `views/index.html` 是前端入口页面,后端控制器会渲染此模板。 ## 5. 后端编译与打包 (shudao-go-backend) ### 方法1:使用 Beego bee 工具打包(推荐) ```bash # 1. 进入后端目录 cd shudao-go-backend # 2. 安装 bee 工具(如果未安装) go install github.com/beego/bee/v2@latest # 3. 使用 bee pack 打包(会自动交叉编译为 Linux 并打包所有资源) bee pack -be GOOS=linux -be GOARCH=amd64 # 4. 生成的压缩包:shudao-go-backend.tar.gz # 将此文件上传到服务器 /opt/www/shudao_main/shudao-go-backend/ 目录 ``` ### 方法2:直接使用 go build 编译 ```bash # 1. 进入后端目录 cd shudao-go-backend # 2. 整理依赖 go mod tidy # 3. 交叉编译为 Linux 可执行文件 # Windows PowerShell: $env:GOOS="linux"; $env:GOARCH="amd64"; go build -o shudao-go-backend main.go # Linux/Mac: GOOS=linux GOARCH=amd64 go build -o shudao-go-backend main.go ``` ### 服务器部署 ```bash # 1. 进入部署目录 cd /opt/www/shudao_main/shudao-go-backend # 2. 解压(如果使用 bee pack) tar -xzf shudao-go-backend.tar.gz # 3. 进入后端目录 cd shudao-go-backend # 4. 赋予执行权限 chmod +x shudao-go-backend # 5. 停止旧服务(如果存在) ps -ef | grep shudao-go-backend # 找到进程ID后执行:kill -9 # 6. 启动新服务 (后台运行) nohup ./shudao-go-backend > nohup.out 2>&1 & # 7. 查看启动日志 tail -f nohup.out ``` ## 6. 验证部署 - 检查进程是否存在: ```bash ps -ef | grep shudao-go-backend ``` - 访问服务地址,确认页面加载正常且 API 调用成功。 --- ### 目录结构说明 (重构后) - `/shudao-vue-frontend`: Vue 3 前端项目源码 - `/shudao-go-backend`: Beego 后端项目源码 - `/controllers`: 控制器逻辑 - `/models`: 数据模型 - `/views`: 存放前端入口 HTML 模板 - `/assets`: (编译部署时生成) 存放前端静态资源 - `/static`: 其他静态文件