238 lines
4.8 KiB
Markdown
238 lines
4.8 KiB
Markdown
# 打包编译说明
|
||
|
||
## 快速编译
|
||
|
||
### 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"
|
||
```
|