# 打包编译说明 ## 快速编译 ### Windows ```bash # 方法1: 使用批处理脚本 build.bat # 方法2: 手动编译 go build -ldflags="-s -w" -o software-download-center.exe . ``` ### Linux/macOS ```bash # 方法1: 使用 Shell 脚本 chmod +x build.sh ./build.sh # 方法2: 手动编译 go build -ldflags="-s -w" -o software-download-center . ``` ## 交叉编译 ### 编译 Windows 版本(在 Linux/macOS 上) ```bash GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o software-download-center.exe . ``` ### 编译 Linux 版本(在 Windows 上) ```bash set GOOS=linux set GOARCH=amd64 go build -ldflags="-s -w" -o software-download-center . ``` ### 编译 macOS 版本 ```bash # 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 ```bash # 方法1: 使用启动脚本 start.bat # 方法2: 直接运行 software-download-center_windows_amd64.exe # 方法3: 指定端口 set PORT=8080 software-download-center_windows_amd64.exe ``` ### Linux/macOS ```bash # 方法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`: ```ini [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 ``` 启动服务: ```bash 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 服务: ```bash # 下载 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) ```nginx 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 压缩(可选): ```bash upx --best software-download-center.exe ``` 2. 使用静态链接(减小依赖): ```bash CGO_ENABLED=0 go build -ldflags="-s -w" -o software-download-center . ``` ## 常见问题 ### 编译失败 - 确保 Go 版本 >= 1.21 - 运行 `go mod download` 下载依赖 - 检查网络连接(需要访问 Go 模块仓库) ### 运行时错误 - 确保 `public` 和 `views` 目录存在 - 检查文件权限 - 查看日志输出 ### 端口被占用 - 修改 `PORT` 环境变量 - 或修改代码中的默认端口 ## 版本信息 编译时可以通过 `-ldflags` 注入版本信息: ```bash go build -ldflags="-X main.Version=1.0.0 -X main.BuildTime=$(date +%Y-%m-%d)" -o software-download-center . ``` 然后在代码中定义: ```go var Version = "dev" var BuildTime = "unknown" ```