使用NSSM将程序注册为Windows服务
NSSM (Non-Sucking Service Manager) 是一个非常实用的Windows服务管理工具,它可以将任何应用程序注册为Windows服务,支持开机自启动、失败自动重启等功能,本文将介绍如何使用NSSM,并以Nginx为例进行实践。
NSSM简介
NSSM的主要特点:
- 可以将任何可执行程序注册为Windows服务
 - 支持服务失败自动重启
 - 支持开机自动启动
 - 可以捕获程序的标准输出和错误输出到日志文件
 - 提供图形界面和命令行两种操作方式
 - 完全免费开源
 
安装NSSM
下载NSSM
访问 NSSM官网 下载最新版本
或使用 Chocolatey 包管理器安装:1
choco install nssm
解压下载的zip文件(如果是手动下载)
将win64目录下的nssm.exe复制到一个固定目录,比如:C:\Program Files\nssm添加环境变量(可选)
将nssm.exe所在目录添加到系统PATH环境变量中
使用NSSM注册Nginx服务
图形界面方式
打开命令提示符,输入:
1
nssm install nginx
在弹出的图形界面中配置:
- Path:填写nginx.exe的完整路径,如:
C:\nginx\nginx.exe - Startup directory:填写nginx的安装目录,如:
C:\nginx - Service name:服务名称,默认为”nginx”
 
- 切换到”Details”标签:
 
- Display name:显示名称,如:”Nginx Web Server”
 - Description:描述信息,如:”Nginx HTTP and reverse proxy server”
 
- 切换到”Log on”标签:
 
- 选择”Local System account”(推荐)
 
- 切换到”I/O”标签:
 
- Output (stdout):设置标准输出日志路径,如:
C:\nginx\logs\service-stdout.log - Error (stderr):设置错误输出日志路径,如:
C:\nginx\logs\service-error.log 
- 切换到”Exit actions”标签:
 
- Restart:选择”Restart application”
 - Delay:设置重启延迟,如:30000(30秒)
 
命令行方式
也可以使用命令行一次性完成配置:
1  | nssm install nginx "C:\nginx\nginx.exe"  | 
服务管理命令
启动服务
1
nssm start nginx
停止服务
1
nssm stop nginx
重启服务
1
nssm restart nginx
查看服务状态
1
nssm status nginx
移除服务
1
nssm remove nginx
常见问题处理
- 服务启动失败
 
- 检查程序路径是否正确
 - 检查程序所需的依赖文件是否完整
 - 查看Windows事件查看器中的错误日志
 - 检查服务账户是否有足够权限
 
- 日志文件无法创建
 
- 确保日志目录存在
 - 确保服务账户对日志目录有写入权限
 
- 程序异常退出不重启
 
- 检查Exit actions标签中的重启设置
 - 适当调整重启延迟时间
 
最佳实践
- 路径设置
 
- 使用绝对路径
 - 避免路径中包含空格,如果无法避免,请使用引号包围
 - 建议将程序安装在系统盘之外的分区
 
- 日志管理
 
- 设置日志轮转,避免日志文件过大
 - 定期清理旧日志
 - 建议使用专门的日志目录
 
- 权限控制
 
- 使用最小权限原则
 - 必要时创建专门的服务账户
 - 定期检查和更新权限设置
 
- 监控告警
 
- 配置服务监控
 - 设置异常重启告警
 - 定期检查服务状态
 
总结
NSSM是一个强大的Windows服务管理工具,通过它可以轻松地将普通程序转换为Windows服务,实现自动化运维。本文以Nginx为例介绍了NSSM的基本使用方法,希望对大家有所帮助。在实际应用中,还可以根据具体需求进行更多个性化配置。
本文由 AI 辅助生成,如有错误或建议,欢迎指出。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
 评论






