关于NSSM启动Springboot打成的jar包服务,可看我原来的文章
WIndows服务器中使用nssm启动多个Springboot服务
tomcat启动的服务,会有一个命令对话框,对话框关闭了,程序也就推出了,为了不显示命令对话框,以服务的方式注册到window的服务表,可以使用NSSM.
NSSM 启动 Tomcat 时,不需要设置额外的 Arguments。
分析TOMCAT的startup.bat:
- 如果脚本硬编码了 Tomcat 路径:
bash
set "CATALINA_HOME=D:\SCM\SCM_TH"
set "CATALINA_BASE=D:\SCM\SCM_TH"
- 脚本会调用
bash
%CATALINA_HOME%\bin\catalina.bat start
NSSM 配置步骤:
- 基本配置:
Application 标签页:
bash
Path: D:\SCM\SCM_TH\bin\startup.bat
Startup directory: D:\SCM\SCM_TH\bin
Arguments: (留空)
- 或者直接使用 catalina.bat:
如果你想更直接的控制,也可以这样配置:
bash
Application 标签页:
Path: D:\SCM\SCM_TH\bin\catalina.bat
Startup directory: D:\SCM\SCM_TH\bin
Arguments: start
- 推荐使用 catalina.bat 的原因:
· 更简洁直接
· 避免 startup.bat 中的 pause 命令影响服务启动
· 更好的控制启动参数
- 完整 NSSM 配置示例:
bash
nssm install SCM_TH "D:\SCM\SCM_TH\bin\catalina.bat"
nssm set SCM_TH AppDirectory "D:\SCM\SCM_TH\bin"
nssm set SCM_TH AppParameters "start"
nssm set SCM_TH AppStdout "D:\SCM\SCM_TH\logs\stdout.log"
nssm set SCM_TH AppStderr "D:\SCM\SCM_TH\logs\stderr.log"
- 如果需要在 Arguments 中添加其他参数:
如果你的 Tomcat 需要额外的 JVM 参数,可以这样配置:
bash
Arguments: start -Dsome.property=value
或者通过环境变量方式在 NSSM 的 Environment 标签页中设置:
bash
CATALINA_OPTS=-Xms512m -Xmx1024m -Dfile.encoding=UTF-8
建议:
最简单的方式就是:
bash
· Path: D:\SCM\SCM_TH\bin\catalina.bat
· Startup directory: D:\SCM\SCM_TH\bin
· Arguments: run
这样配置后,NSSM 会正确启动你的 Tomcat 服务。
实际操作日志如下
我的电脑时64位的,nssm路径是D:\nssm-2.24\win64,打开cmd
\>cd D:\nssm-2.24\win64
D:\nssm-2.24\win64>nssm install
执行上述命令,会打开配置对话框,填写以下信息
Path: D:\SCM\SCM_TH\bin\catalina.bat
Startup directory: D:\SCM\SCM_TH\bin
Arguments: run
保存成功后命令行就会出现以下成功的日志
Service "SCMTH" installed successfully!
D:\nssm-2.24\win64>net start SCMTH
SCMTH 服务正在启动 .
SCMTH 服务已经启动成功。
D:\nssm-2.24\win64>net stop SCMTH
.
SCMTH 服务已成功停止。
D:\nssm-2.24\win64>net start SCMTH
SCMTH 服务正在启动 .
SCMTH 服务已经启动成功。
D:\nssm-2.24\win64>
D:\nssm-2.24\win64>nssm edit SCMTH