4.0 KiB
Executable File
4.0 KiB
Executable File
中尚鹏管理系统 - 部署说明
作者: 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_PORT),API 请求 /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:5173,Vite 把/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 反向代理(
/api→127.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"} - 合同 API:
GET http://{host}:8080/api/contract需返回 JSON
六、常见问题
- 跨域:后端已启用 CORS,生产环境若前后端同域可无需额外配置。
- 文件访问:合同文件通过
/api/contract-files/{path}访问,确保 Nginx 将/api转发至后端。 - 数据库:首次部署需确保 MySQL 已创建
myapp库,表由 GORM AutoMigrate 自动创建。 - JWT 认证:除
/api/auth/login、/api/auth/register外,所有 API 均需 JWT 认证。前端需在登录后存储 token,并在后续请求中通过Authorization: Bearer <token>头传递。token 有效期为 24 小时。