构建与部署
XYGo Admin 2025-02-20 140 次阅读
生产环境构建、Nginx 配置与 Docker 部署指南
构建与部署
前端构建
bash
cd web
# 构建生产版本
pnpm build
构建产物输出到 web/dist/ 目录。构建配置:
- Target: ES2015
- 压缩:Terser(自动移除 console 和 debugger)
- Gzip:vite-plugin-compression 自动生成 .gz 文件
- Chunk 警告阈值:2000KB
后端构建
bash
cd server
# 编译为可执行文件
go build -o xygoadmin main.go
# 或使用 GoFrame CLI
gf build
Nginx 配置
nginx
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location / {
root /var/www/xygoadmin/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# 后台 API 代理
location /admin/ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 会员 API 代理
location /member/ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 前台公共 API
location /site/ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 系统接口
location /system/ {
proxy_pass http://127.0.0.1:8000;
}
# 验证码
location /captcha/ {
proxy_pass http://127.0.0.1:8000;
}
# 附件访问
location /attachment/ {
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";
proxy_read_timeout 86400;
}
# Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1024;
}
Docker 部署
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.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:
进程管理
生产环境建议使用 systemd 或 supervisor 管理后端进程:
ini
# /etc/systemd/system/xygoadmin.service
[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