README.md 4.3 KB

部署与上线指南

本文档详细说明如何在服务器的 /tmp/tmp 目录下拉取 dev 分支代码,并完成前后端的编译与生产环境部署。

1. 环境准备

方案A:服务器直接编译(需要安装 Go)

确保服务器已安装以下环境:

  • Git: 用于拉取代码
  • Node.js (≥ 20.19) & npm: 用于前端打包
  • Go (≥ 1.24): 用于后端编译

安装 Go 1.24+

# 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 分支代码:

# 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)

进入前端目录,安装依赖并打包:

# 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. 整合产物到后端

将前端生成的静态资源复制到后端对应的目录中:

# 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 工具打包(推荐)

# 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
# 将此文件上传到服务器 /tmp/tmp 目录

方法2:直接使用 go build 编译

# 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

服务器部署

# 1. 进入部署目录
cd /tmp/tmp

# 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 <PID>

# 6. 启动新服务 (后台运行)
nohup ./shudao-go-backend > nohup.out 2>&1 &tail -f nohup.out

6. 验证部署

  • 检查进程是否存在:

    ps -ef | grep shudao-go-backend
    
  • 访问服务地址,确认页面加载正常且 API 调用成功。


目录结构说明 (重构后)

  • /shudao-vue-frontend: Vue 3 前端项目源码
  • /shudao-go-backend: Beego 后端项目源码
    • /controllers: 控制器逻辑
    • /models: 数据模型
    • /views: 存放前端入口 HTML 模板
    • /assets: (编译部署时生成) 存放前端静态资源
    • /static: 其他静态文件