本文记录 shudao-chat 项目前后端在生产环境的标准交付流程,包括 Vue 前端打包、产物合入 Go 服务、Linux 下编译后端以及上传、运行服务的步骤。
环境准备
package.json 中的 engines 保持一致)npm config set registry https://registry.npmmirror.com打包流程
cd /path/to/shudao-chat(前端根目录)
npm install
npm run build
执行完成后会在根目录生成 dist/,结构类似:
dist/
index.html
assets/
*.js
*.css
...
shudao-chat-go备份旧版本(可选):
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)
拷贝新的 dist 产物:
# 回到前端根目录
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") 映射,前端静态资源必须放在这里。若有 dist 中的其他静态目录(如 public 下复制出的 favicon 等),放入 shudao-chat-go/static/,Beego 已映射 /static 路径。
环境要求
go.mod 中声明一致)https://goproxy.cn,direct)编译命令
cd shudao-chat-go
go mod download
GOOS=linux GOARCH=amd64 go build -o bin/shudao-chat-go ./main.go
或者安装bee框架:(go env -w GOPROXY=https://goproxy.cn)//如果下面命令安装不成功先执行这条命令
go install github.com/beego/bee/v2@latest
然后运行:bee pack -be GOOS=linux
输出文件:压缩包:shudao-chat-go.tar.gz
上传方式(示例)
压缩包拖入/tmp/tmp