你的想法很重要-大家都来谈 (C)Copyright 2012 by WeiPt

用nssm将minio和srs注册成服务

首先,要注意一个关键问题,不要在nssm中直接调用bat

  1. NSSM 与 Bat 文件的问题:当NSSM启动一个批处理文件(.bat)时,它实际启动的是cmd.exe进程,而批处理中的命令(如minio.exe)则是其子进程。NSSM会监视cmd.exe的状态。一旦批处理中的命令执行完毕,cmd.exe进程就会退出,NSSM会认为服务已停止,从而可能尝试重启它,但这会导致进程管理混乱。更糟糕的是,直接关闭服务时,NSSM只能终止cmd.exe,而无法正确终止真正的目标进程(minio.exe),导致进程残留。

  2. MinIO 的特殊性:MinIO Server确实设计为需要在命令行环境中运行,因为它需要持续地输出日志和状态信息。

最佳解决方案:使用 NSSM 直接运行 minio.exe,并正确配置参数

我们不需要批处理文件。正确的方法是将NSSM的启动路径直接指向minio.exe,并将所有原本写在批处理文件中的参数和命令,全部放在NSSM的Arguments配置里。

以下是详细步骤:

第一步:准备目录和文件

假设你的软件布局如下:

C:
├── Apps
│   ├── MinIO/
│   │   └── minio.exe   # MinIO 主程序
│   ├── SRS/
│   │   └── objs/
│   │       └── srs.exe # SRS 主程序
│   └── NSSM/
│       └── nssm.exe    # NSSM 工具
├── Data
│   └── MinIO/          # MinIO 数据目录
└── Logs
    ├── MinIO/          # MinIO 服务日志
    └── SRS/            # SRS 服务日志

请提前创建好这些目录(如C:\Data\MinIOC:\Logs\MinIOC:\Logs\SRS)。

第二步:以管理员身份启动命令行

右键点击“命令提示符”或“PowerShell”,选择“以管理员身份运行”。

第三步:安装并配置 MinIO 服务

我们使用NSSM的命令行模式进行安装,这样更清晰、可重复。

# 进入NSSM目录(或者如果你已将其加入系统PATH,则无需此行)
cd C:\Apps\NSSM

# 安装服务,并设置可执行文件路径
nssm install MinIO "C:\Apps\MinIO\minio.exe"

# 设置服务启动目录(非常重要)
nssm set MinIO AppDirectory "C:\Apps\MinIO"

# 设置启动参数:指定数据目录和控制台端口
nssm set MinIO AppParameters "server C:\Data\MinIO --console-address :9001"

# 设置显示名称和描述
nssm set MinIO DisplayName "MinIO Object Storage Server"
nssm set MinIO Description "High-performance, Kubernetes-native object storage"

# 【强烈推荐】配置日志输出,便于排查问题
nssm set MinIO Output "C:\Logs\MinIO\service_out.log"
nssm set MinIO Error "C:\Logs\MinIO\service_err.log"

# 【可选】设置标准输出和错误输出的文件轮转
nssm set MinIO FileRotate 1
nssm set MinIO FileRotateSize 1048576

# 【可选】配置服务在失败时自动重启
nssm set MinIO Start SERVICE_AUTO_START
nssm set MinIO ObjectName "NT AUTHORITY\LocalService" ""

第四步:安装并配置 SRS 服务

SRS的配置相对直接,因为它通常只需要一个配置文件参数。

 
# 安装SRS服务
nssm install SRS "C:\Apps\SRS\objs\srs.exe"

# 设置启动目录
nssm set SRS AppDirectory "C:\Apps\SRS\objs"

# 设置启动参数(指向配置文件)
nssm set SRS AppParameters "-c ..\conf\srs.conf"

# 设置显示名称和描述
nssm set SRS DisplayName "SRS Media Server"
nssm set SRS Description "Simple, Efficient, and Real-Time Video Server"

# 配置日志输出
nssm set SRS Output "C:\Logs\SRS\service_out.log"
nssm set SRS Error "C:\Logs\SRS\service_err.log"
nssm set SRS FileRotate 1

第五步:启动并测试服务

配置完成后,启动服务并进行测试。

# 启动服务
net start MinIO
net start SRS

# 检查状态(sc query 命令)
sc query MinIO
sc query SRS

测试方法:

  1. MinIO:打开浏览器,访问 http://localhost:9001。应该能看到MinIO的登录页面。

  2. SRS:可以使用OBS推一个RTMP流到 rtmp://localhost/live/test,然后用VLC播放器拉流(rtmp://localhost/live/test)进行测试。

  3. 检查日志:如果服务启动失败,第一时间查看你在第三步和第四步中设置的 Output 和 Error 日志文件(如 C:\Logs\MinIO\service_err.log),里面会有详细的错误信息。

 
posted @ 2025-09-16 17:28  weipt  阅读(36)  评论(0)    收藏  举报

你的想法很重要-大家都来谈 (C)Copyright 2012 by WeiPt