服务端部署
本页面详细介绍如何在传统服务器上部署 GoSpeedTest。
前置条件
- Linux/macOS/Windows 服务器
- Go 1.18+(如需从源码构建)
- 足够的磁盘空间和内存
获取程序
方式一:下载预编译版本
从 Gitee Releases 下载对应平台的二进制文件。
bash
# 下载
wget https://gitee.com/liumou_site/GoSpeedTest/releases/download/v1.1.0/GoSpeedTest-linux-amd64
# 赋予执行权限
chmod +x GoSpeedTest-linux-amd64方式二:从源码构建
bash
# 克隆项目
git clone https://gitee.com/liumou_site/GoSpeedTest.git
cd GoSpeedTest
# 构建
go build -o GoSpeedTest server.go基本部署
直接运行
bash
# 简单运行
./GoSpeedTest -port 8080
# Release 模式(推荐生产环境)
./GoSpeedTest -port 8080 -mode release
# 自定义 TCP 端口
./GoSpeedTest -port 8080 -tcp-port 12345验证部署
bash
# 检查服务是否运行
curl http://localhost:8080/health
# 访问 Web 界面
# 浏览器打开 http://your-server-ip:8080作为系统服务
systemd 配置(Linux)
创建服务文件 /etc/systemd/system/gospeedtest.service:
ini
[Unit]
Description=GoSpeedTest Server
After=network.target
[Service]
Type=simple
User=nobody
Group=nogroup
WorkingDirectory=/opt/gospeedtest
ExecStart=/opt/gospeedtest/GoSpeedTest -port 8080 -mode release
Restart=always
RestartSec=10
# 安全设置
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/gospeedtest
[Install]
WantedBy=multi-user.target安装和启动服务
bash
# 创建工作目录
mkdir -p /opt/gospeedtest
cp GoSpeedTest /opt/gospeedtest/
chown -R nobody:nogroup /opt/gospeedtest
# 重载 systemd
systemctl daemon-reload
# 启动服务
systemctl start gospeedtest
# 设置开机自启
systemctl enable gospeedtest
# 查看状态
systemctl status gospeedtest
# 查看日志
journalctl -u gospeedtest -f管理服务
bash
# 停止服务
systemctl stop gospeedtest
# 重启服务
systemctl restart gospeedtest
# 重新加载配置
systemctl reload gospeedtestWindows 服务
使用 NSSM
- 下载 NSSM
- 以管理员身份运行命令提示符:
cmd
nssm install GoSpeedTest在弹出的界面中配置:
- Path:
C:\path\to\GoSpeedTest.exe - Arguments:
-port 8080 -mode release - Working directory:
C:\path\to\
启动服务
cmd
nssm start GoSpeedTestmacOS LaunchDaemon
创建 /Library/LaunchDaemons/com.gospeedtest.plist:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.gospeedtest</string>
<key>ProgramArguments</key>
<array>
<string>/opt/gospeedtest/GoSpeedTest</string>
<string>-port</string>
<string>8080</string>
<string>-mode</string>
<string>release</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>WorkingDirectory</key>
<string>/opt/gospeedtest</string>
</dict>
</plist>加载服务:
bash
sudo launchctl load /Library/LaunchDaemons/com.gospeedtest.plist防火墙配置
Ubuntu/Debian (UFW)
bash
# 开放 HTTP 端口
ufw allow 8080/tcp
# 开放 TCP 测速端口
ufw allow 12306/tcp
# 启用防火墙
ufw enable
# 查看状态
ufw statusCentOS/RHEL (firewalld)
bash
# 开放端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=12306/tcp
# 重载配置
firewall-cmd --reload
# 查看状态
firewall-cmd --list-alliptables
bash
# 添加规则
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 12306 -j ACCEPT
# 保存规则
service iptables save日志管理
配置日志输出
GoSpeedTest 支持日志输出到文件:
bash
# 输出到文件
./GoSpeedTest -port 8080 2>&1 | tee -a /var/log/gospeedtest.log日志轮转(logrotate)
创建 /etc/logrotate.d/gospeedtest:
/var/log/gospeedtest.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 nobody nogroup
postrotate
systemctl reload gospeedtest
endscript
}性能调优
系统参数优化
编辑 /etc/sysctl.conf:
conf
# 增大文件描述符限制
fs.file-max = 1000000
# 增大 TCP 缓冲区
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# TCP 优化
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1应用配置:
bash
sysctl -p资源限制
编辑 /etc/security/limits.conf:
conf
nobody soft nofile 65536
nobody hard nofile 65536监控和维护
健康检查
bash
# 定期健康检查
curl -f http://localhost:8080/health || echo "Service down!"进程监控
bash
# 检查进程
ps aux | grep GoSpeedTest
# 检查端口
netstat -tlnp | grep 8080更新部署
bash
# 停止服务
systemctl stop gospeedtest
# 备份旧版本
cp /opt/gospeedtest/GoSpeedTest /opt/gospeedtest/GoSpeedTest.bak
# 替换新版本
cp GoSpeedTest-new /opt/gospeedtest/GoSpeedTest
chown nobody:nogroup /opt/gospeedtest/GoSpeedTest
chmod +x /opt/gospeedtest/GoSpeedTest
# 启动服务
systemctl start gospeedtest
# 验证
systemctl status gospeedtest故障排除
服务无法启动
- 检查端口是否被占用:
netstat -tlnp - 查看日志:
journalctl -u gospeedtest - 验证文件权限
端口被占用
bash
# 查找占用进程
lsof -i :8080
# 或使用 netstat
netstat -tlnp | grep 8080连接超时
- 检查防火墙配置
- 验证云服务商安全组
- 确认网络连通性