第一步:安装 Go SDK 与环境配置
- 从官方/镜像站(
golang.google.cn/dl/)安装 Go,默认路径为C:\Program Files\Go。 - 打开 **PowerShell(管理员身份)**,执行以下命令配置模块与国内镜像代理:
# 开启模块支持并配置国内代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
- 确保用户的
go\bin工具目录在系统环境变量中:
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
$goBin = "$env:USERPROFILE\go\bin"
if ($userPath -notlike "*$goBin*") {
[Environment]::SetEnvironmentVariable("Path", "$userPath;$goBin", "User")
}
第二步:准备 NSSM 工具
- 前往 NSSM 官网 下载压缩包(如
nssm-2.24.zip)。 - 解压后将
win64目录下的nssm.exe复制到全局路径目录(例如C:\Users\Admin\go\bin或C:\Windows\System32)。 - 验证命令行可用:
nssm -version
第三步:编译项目二进制程序
在注册系统服务前,严禁通过命令行或后台命令提前启动程序,否则会导致后续服务拉起时端口冲突。
# 进入项目目录并拉取整理依赖
Set-Location "D:\myapi\cms\bbs"
go mod tidy
# 编译生成 Windows 独立可执行程序
go build -o bbs.exe .
第四步:注册并配置 Windows 系统服务(一次性完成)
先配置好路径和日志参数,再启动服务:
# 1. 注册服务名称并绑定可执行文件路径
nssm install bbs-service "D:\myapi\cms\bbs\bbs.exe"
# 2. 设置工作目录(关键:确保读取同级目录下的配置、模板和静态资源)
nssm set bbs-service AppDirectory "D:\myapi\cms\bbs"
# 3. 挂载标准输出与错误日志文件
nssm set bbs-service AppStdout "D:\myapi\cms\bbs\service_stdout.log"
nssm set bbs-service AppStderr "D:\myapi\cms\bbs\service_stderr.log"
# 4. 启动服务
nssm start bbs-service
第五步:验证运行状态与日志
执行以下检查命令,确保服务处于 SERVICE_RUNNING 且端口正常监听:
# 1. 查看服务状态(必须显示 SERVICE_RUNNING)
nssm status bbs-service
# 2. 检查程序进程与 PID
Get-Process -Name bbs
# 3. 检查端口监听(以进程 PID 筛选网络连接状态)
$pidNum = (Get-Process -Name bbs).Id
Get-NetTCPConnection -OwningProcess $pidNum -State Listen | Select-Object LocalAddress, LocalPort, State
# 4. 查看服务输出日志
Get-Content "D:\myapi\cms\bbs\service_stdout.log" -Tail 20
日常运维管理速查卡
| 操作场景 | 执行命令 |
|---|---|
| 代码更新后重新部署 | nssm stop bbs-service``go build -o bbs.exe .``nssm start bbs-service |
| 查看实时运行日志 | Get-Content "D:\myapi\cms\bbs\service_stdout.log" -Wait |
| 查看异常崩溃日志 | Get-Content "D:\myapi\cms\bbs\service_stderr.log" -Tail 30 |
| 重启服务 | nssm restart bbs-service |
| 停止服务 | nssm stop bbs-service |
| 彻底卸载服务 | nssm stop bbs-service``nssm remove bbs-service confirm |
- 修改完文件直接一键重启
nssm stop bbs-service
go build -o bbs.exe .
nssm start bbs-service