Files
zsp-project/docs/deploy/部署说明.md
2026-06-03 20:59:39 +08:00

4.0 KiB
Executable File
Raw Blame History

中尚鹏管理系统 - 部署说明

作者: rovina
最近修订: 2026/3/2

一、环境要求

组件 版本
Node.js 18+
pnpm 8+
Go 1.21+
MySQL 8.0+

二、后端部署

2.1 配置文件

复制并修改 backend/configs/config.dev.yaml

server:
  port: 8080
  mode: "release"   # 生产环境建议 release
  read_timeout: 30
  write_timeout: 30

database:
  host: "127.0.0.1"   # 或 MySQL 服务地址
  port: 3306
  user: "root"
  password: "your_password"
  dbname: "myapp"
  max_open_conns: 100
  max_idle_conns: 10
  reset_database: false   # 生产务必 false

jwt:
  secret: "your_jwt_secret"
  expire_hours: 24

2.2 启动

cd backend

# 指定配置文件(可选,默认 ./configs/config.dev.yaml
export CONFIG_PATH=./configs/config.prod.yaml

go run ./cmd/api
# 或编译后运行
go build -o zsp-api ./cmd/api && ./zsp-api

2.3 数据目录

  • 单合同附件:./data/contract/uploads/
  • 批量归档:./data/contract/batch_archive/

首次运行会自动创建,需确保进程有写权限。


三、前端部署

3.1 开发环境

cd frontend
pnpm install
pnpm dev

前端默认端口 8848可改 .env.development 中 VITE_PORTAPI 请求 /api/* 会代理到 http://127.0.0.1:8080

3.2 生产构建

cd frontend
pnpm install
pnpm build

产物在 dist/,需配合 Nginx 等 Web 服务器部署。

3.3 为什么打包部署后访问不到 8080 的数据?

打包后前端是静态资源,在用户浏览器里运行。请求会发到「打开页面时的那台服务器的同源地址」:

  • 开发时:页面来自 http://127.0.0.1:5173Vite 把 /api 代理到本机 8080所以能访问。
  • 部署后:页面来自 http://你的服务器:80,浏览器只会把 /api 发到 http://你的服务器:80/api不会自动发到 8080。

因此必须让提供前端页面的 Web 服务器(如 Nginx/api 反向代理到本机 8080或后端容器。同时前端已统一用相对路径 /api/xxx,不再写死 127.0.0.1:8080,这样部署后即可通过同源访问到后端。

3.4 Nginx 配置

完整配置文件见 docs/deploy/nginx.conf,包含:

  • SPA 路由重写(try_files $uri /index.html
  • API 反向代理(/api127.0.0.1:8080
  • 大文件上传支持(client_max_body_size 100m
  • 静态文件缓存(合同附件 7 天缓存)
  • Gzip 压缩

四、Docker 部署(可选)

4.1 后端 Dockerfile 示例

FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o zsp-api ./cmd/api

FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/zsp-api .
COPY --from=builder /app/configs ./configs
RUN mkdir -p data/contract/uploads data/contract/batch_archive
EXPOSE 8080
CMD ["./zsp-api"]

4.2 运行

# 需挂载配置与数据目录
docker run -d -p 8080:8080 \
  -v $(pwd)/configs:/app/configs \
  -v $(pwd)/data:/app/data \
  -e CONFIG_PATH=/app/configs/config.prod.yaml \
  zsp-backend

五、健康检查

  • 后端:GET http://{host}:8080/health 返回 {"status":"ok"}
  • 合同 APIGET http://{host}:8080/api/contract 需返回 JSON

六、常见问题

  1. 跨域:后端已启用 CORS生产环境若前后端同域可无需额外配置。
  2. 文件访问:合同文件通过 /api/contract-files/{path} 访问,确保 Nginx 将 /api 转发至后端。
  3. 数据库:首次部署需确保 MySQL 已创建 myapp 库,表由 GORM AutoMigrate 自动创建。
  4. JWT 认证:除 /api/auth/login/api/auth/register 外,所有 API 均需 JWT 认证。前端需在登录后存储 token并在后续请求中通过 Authorization: Bearer <token> 头传递。token 有效期为 24 小时。