Files
YMhut-box-C-/server/update/BUILD.md
T
QWQLwToo 079ee4eaeb
build-winui / winui (push) Has been cancelled
Add server components
2026-06-26 13:28:09 +08:00

4.8 KiB
Raw Blame History

打包编译说明

快速编译

Windows

# 方法1: 使用批处理脚本
build.bat

# 方法2: 手动编译
go build -ldflags="-s -w" -o software-download-center.exe .

Linux/macOS

# 方法1: 使用 Shell 脚本
chmod +x build.sh
./build.sh

# 方法2: 手动编译
go build -ldflags="-s -w" -o software-download-center .

交叉编译

编译 Windows 版本(在 Linux/macOS 上)

GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o software-download-center.exe .

编译 Linux 版本(在 Windows 上)

set GOOS=linux
set GOARCH=amd64
go build -ldflags="-s -w" -o software-download-center .

编译 macOS 版本

# Intel 版本
GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o software-download-center .

# Apple Silicon (M1/M2) 版本
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o software-download-center .

编译参数说明

  • -ldflags="-s -w": 减小可执行文件大小
    • -s: 去除符号表
    • -w: 去除调试信息

部署文件结构

编译后的目录结构:

output/
├── software-download-center_*.exe  (或可执行文件)
├── start.bat                       (Windows 启动脚本)
├── start.sh                        (Linux/macOS 启动脚本)
├── public/                         (静态资源目录)
│   ├── css/
│   ├── img/
│   ├── fonts/
│   ├── lang/
│   └── *.json
├── views/                          (模板目录)
│   ├── index.html
│   ├── admin.html
│   ├── 404.html
│   └── 500.html
├── README.md
└── ADMIN.md

运行服务端

Windows

# 方法1: 使用启动脚本
start.bat

# 方法2: 直接运行
software-download-center_windows_amd64.exe

# 方法3: 指定端口
set PORT=8080
software-download-center_windows_amd64.exe

Linux/macOS

# 方法1: 使用启动脚本
chmod +x start.sh
./start.sh

# 方法2: 直接运行
chmod +x software-download-center_linux_amd64
./software-download-center_linux_amd64

# 方法3: 指定端口
PORT=8080 ./software-download-center_linux_amd64

作为系统服务运行

Linux (systemd)

创建服务文件 /etc/systemd/system/software-download-center.service:

[Unit]
Description=Software Download Center
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/software-download-center
ExecStart=/opt/software-download-center/software-download-center_linux_amd64
Restart=always
RestartSec=5
Environment="PORT=3355"

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable software-download-center
sudo systemctl start software-download-center
sudo systemctl status software-download-center

Windows (NSSM)

使用 NSSM 将程序安装为 Windows 服务:

# 下载 NSSM: https://nssm.cc/download
nssm install SoftwareDownloadCenter "C:\path\to\software-download-center.exe"
nssm set SoftwareDownloadCenter AppDirectory "C:\path\to"
nssm set SoftwareDownloadCenter AppEnvironmentExtra PORT=3355
nssm start SoftwareDownloadCenter

生产环境建议

  1. 使用反向代理Nginx/Caddy

    server {
        listen 80;
        server_name your-domain.com;
    
        location / {
            proxy_pass http://localhost:3355;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
  2. 使用进程管理器

    • Linux: systemd, supervisor, pm2
    • Windows: NSSM, Windows Service
    • 跨平台: PM2
  3. 配置 HTTPS

    • 使用 Let's Encrypt 免费证书
    • 配置自动续期
  4. 日志管理

    • 配置日志轮转
    • 使用日志收集工具(如 ELK
  5. 监控

    • 配置健康检查
    • 使用监控工具(如 Prometheus

文件大小优化

编译后的文件大小通常在 15-25MB 左右。如需进一步优化:

  1. 使用 UPX 压缩(可选):

    upx --best software-download-center.exe
    
  2. 使用静态链接(减小依赖):

    CGO_ENABLED=0 go build -ldflags="-s -w" -o software-download-center .
    

常见问题

编译失败

  • 确保 Go 版本 >= 1.21
  • 运行 go mod download 下载依赖
  • 检查网络连接(需要访问 Go 模块仓库)

运行时错误

  • 确保 publicviews 目录存在
  • 检查文件权限
  • 查看日志输出

端口被占用

  • 修改 PORT 环境变量
  • 或修改代码中的默认端口

版本信息

编译时可以通过 -ldflags 注入版本信息:

go build -ldflags="-X main.Version=1.0.0 -X main.BuildTime=$(date +%Y-%m-%d)" -o software-download-center .

然后在代码中定义:

var Version = "dev"
var BuildTime = "unknown"