GoFrame + Vue3 后台管理框架的完整部署方案:XYGo Admin 从构建到上线全流程
GoFrame + Vue3 后台管理框架的完整部署方案:XYGo Admin 从构建到上线全流程
部署为何是后台框架的试金石
很多团队选型后台管理框架时,只看 Demo 跑得通不通、UI 漂不漂亮。但真正决定项目存活率的,是这套框架能不能快速且可靠地部署到生产环境。
如果你用的是一套基于 GoFrame 的敏捷后台开发框架,后端是 Go 编译的单体二进制,前端是 Vue3 的 SPA 构建产物,那部署本身并不复杂。但问题往往出在细节上——Nginx 怎么配?多租户的独立域名怎么做?Docker 编排里依赖顺序对不对?API 代理漏了一个路径导致 404 怎么办?
本文以 XYGo Admin 为例,拆解一套 GoFrame + Vue3 后台管理框架从构建到独立部署的完整流程,覆盖 Docker Compose 编排、Nginx 反代配置、多租户域名隔离等生产实战要点。
构建:前后端分别打包
前端构建
XYGo Admin 前端基于 Vite 7 构建,产物输出到 `web/dist/`。核心配置:
- Target: ES2015,兼容主流现代浏览器
- 压缩:Terser 自动移除 console 和 debugger
- Gzip:vite-plugin-compression 自动生成 .gz 文件
- Chunk 分包:阈值 2000KB,超过自动拆分
执行构建只需要一条命令:
```bash
cd web
pnpm build
```
构建产物是一个纯静态目录,后续交给 Nginx 托管即可。
后端构建
GoFrame 框架的后端是编译型语言,编译成单个可执行文件:
```bash
cd server
go build -o xygoadmin main.go
```
或者用 GoFrame CLI 一行搞定:
```bash
gf build
```
编译出来的 `xygoadmin` 是一个无外部依赖的二进制文件,直接扔到服务器上就能跑——这是 Go 语言做后台服务最大的工程优势之一。配置文件 `manifest/config/config.yaml` 放在同级目录即可。
Docker Compose:一键编排全栈应用
把前端静态资源挂进 Nginx 容器,后端 Go 服务、PostgreSQL、Redis 分别编排,一套 `docker-compose.yml` 就能把整个系统拉起来:
```yaml
version: '3.8'
services:
app:
build: .
ports:
- "8000:8000"
depends_on:
- db
- redis
environment:
- GF_GCFG_FILE=config.yaml
db:
image: postgres:15
environment:
POSTGRES_DB: xygoadmin
POSTGRES_PASSWORD: 123456
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
pgdata:
```
Dockerfile 用多阶段构建,编译产物只拿最终二进制,镜像体积极小:
```dockerfile
FROM golang:1.24-alpine AS builder
WORKDIR /app
COPY server/ .
RUN go build -o xygoadmin main.go
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/xygoadmin .
COPY --from=builder /app/manifest/config/ ./manifest/config/
EXPOSE 8000
CMD ["./xygoadmin"]
```
一条 `docker-compose up -d`,整个 Vue3 后台管理系统框架的后端基础设施就齐了。
Nginx 配置:前后端反代与静态资源
生产环境的典型拓扑是:Nginx 在前面统一收口,静态资源直接返回,API 请求反代到后端 8000 端口。
```
server {
listen 80;
server_name admin.example.com;
root /var/www/xygoadmin/web/dist;
index index.html;
# API 反代
location /admin/ { proxy_pass http://127.0.0.1:8000; }
location /system/ { proxy_pass http://127.0.0.1:8000; }
location /attachment/ { proxy_pass http://127.0.0.1:8000; }
location /captcha/ { proxy_pass http://127.0.0.1:8000; }
# WebSocket
location /socket/ {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# SPA 兜底
location / {
try_files $uri $uri/ /index.html;
}
}
```
关键点:所有 API 路径(`/admin/`、`/system/`、`/attachment/`、`/captcha/`)缺一不可,漏掉一个对应功能就 404。WebSocket 需要单独配置 HTTP Upgrade,否则即时通讯功能不可用。
独立部署:多租户的域名级隔离
XYGo Admin 的多租户方案不同于常见的"一个域名 + 路径区分",它是每个租户端前端作为一个独立 SPA 部署,有自己的域名和构建流程。
为什么要独立部署?
1. 域名级隔离:租户端用 `tenant.example.com`,平台端用 `admin.example.com`,品牌感和安全边界都完全不同
2. 独立发布:平台端更新不影响租户端,回滚互不干扰
3. 按需定制:每个租户端可以有自己的主题色、Logo,裁掉不需要的模块
4. Cookie 天然隔离:不同域名下的 localStorage 和 Cookie 互不干扰
构建与域名配置
```bash
cd web-tenant
pnpm install
pnpm build
```
生产环境中 `VITE_BASE_URL = /`(独立域名部署),Nginx 配置加一条:
```
server {
listen 80;
server_name tenant.example.com;
root /var/www/xygoadmin/web-tenant/dist;
location /tenant/ { proxy_pass http://127.0.0.1:8000; }
location /site/ { proxy_pass http://127.0.0.1:8000; }
location /attachment/ { proxy_pass http://127.0.0.1:8000; }
location /captcha/ { proxy_pass http://127.0.0.1:8000; }
location /system/ { proxy_pass http://127.0.0.1:8000; }
location /tenant-socket/ {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
try_files $uri $uri/ /index.html;
}
}
```
注意租户端的 WebSocket 路径是 `/tenant-socket/`(与平台端 `/socket/` 区分),同样要配好 Upgrade。
进程管理:Systemd 保活
生产环境别用 `nohup` 凑合。用 systemd 管理后端进程,挂了自动拉起来:
```ini
[Unit]
Description=XYGo Admin Server
After=network.target
[Service]
Type=simple
User=www
WorkingDirectory=/var/www/xygoadmin/server
ExecStart=/var/www/xygoadmin/server/xygoadmin
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
```
```bash
systemctl enable xygoadmin
systemctl start xygoadmin
```
总结
一套 GoFrame + Vue3 后台管理框架的部署链路,概括下来就是:
1. 前端 `pnpm build` → 纯静态产物
2. 后端 `go build` → 单体二进制
3. Docker Compose 一键编排全栈服务
4. Nginx 收口反代 + 静态托管
5. 多租户做独立域名部署,安全隔离
6. Systemd 保活,别手动起进程
整个流程不超过 10 分钟,比手动在服务器上逐项配置省心得多。如果你正选型 vue3 后台管理框架,建议把部署便利性作为核心评估维度——Demo 跑得快不算快,能稳定上线才算真本事。
更多推荐

所有评论(0)