目录
Procrun 的安装与卸载
Procrun 是一组应用程序,允许 Windows 用户将(大部分)Java 应用程序(例如 Tomcat)包装为 Windows 服务。
该服务可以设置为在机器启动时自动启动,并且在没有用户登录机器的情况下继续运行。(官网地址)
它主要包括两个程序:
- 服务应用程序(名为 prunsrv.exe),用于转换任一应用程序作为 Windows 服务运行。
- 监视器应用程序(名为 prunmgr.exe),用于监视和配置 procrun 服务。
一. 下载 Procrun
下载地址:http://www.apache.org/dist/commons/daemon/binaries/windows/
下载完成后解压,如下图:
二. 启动服务目录设置
首先在准备部署项目的文件夹下创建一个目录,比如我这里叫做 SpringForWinServiceDemo_Procrun,然后在其下创建三个文件夹,分别是 JAR、Logs 和 Service,如下图:
- JAR 文件夹,用来放 SpringBoot 打出来的 JAR 包;
- Logs 文件夹用来保存 Windows Service 的运行日志,目前是空的;
- Service 文件夹用来存放 Procrun 的 exe 文件。
三. 目录配置
- 将解压的 commons-daemon-1.2.0-bin-windows\amd64 文件夹下的 prunsrv.exe,拷贝到 Service 文件夹中;
- 将 commons-daemon-1.2.0-bin-windows 文件夹下的 prunmgr.exe,拷贝到 Service 文件夹中,并重命名,我这里命名为 SpringForWinServiceDemo.exe。
四. 确定 JAR 包 Main-Class 值
- 使用压缩软件打开 JAR 文件夹下的 jar 包,进入这个META-INF文件夹;
- 使用记事本打开 MANIFEST.MF 文件;
- 记住 Main-Class 的值。
五. 编写安装服务的脚本
在 Service 文件夹下创建一个文档文本,打开编辑:
@echo off
rem 设置程序名称
set SERVICE_EN_NAME=SpringForWinServiceDemo
set SERVICE_CH_NAME=Spring演示服务
rem 设置java路径
set JAVA_HOME=%JAVA_HOME%
rem 设置程序依赖及程序入口类
cd..
set BASEDIR=%CD%
set CLASSPATH=%BASEDIR%\JAR\springforwinservice-0.0.1-SNAPSHOT.jar
set MAIN_CLASS=org.springframework.boot.loader.JarLauncher
rem 设置prunsrv路径
set SRV=%BASEDIR%\Service\prunsrv.exe
rem 设置日志路径及日志文件前缀
set LOGPATH=%BASEDIR%\Logs
rem 输出信息
echo SERVICE_NAME: %SERVICE_EN_NAME%
echo JAVA_HOME: %JAVA_HOME%
echo MAIN_CLASS: %MAIN_CLASS%
echo prunsrv path: %SRV%
rem 设置jvm
if "%JVM%" == "" goto findJvm
if exist "%JVM%" goto foundJvm
:findJvm
set "JVM=%JAVA_HOME%\jre\bin\server\jvm.dll"
if exist "%JVM%" goto foundJvm
echo can not find jvm.dll automatically,
echo please use COMMAND to localation it
echo then install service
goto end
:foundJvm
echo 正在安装服务...
rem 安装
"%SRV%" //IS//%SERVICE_EN_NAME% --DisplayName="%SERVICE_CH_NAME%" "--Classpath=%CLASSPATH%" "--Install=%SRV%" "--JavaHome=%JAVA_HOME%" "--Jvm=%JVM%" --JvmMs=256 --JvmMx=1024 --Startup=auto --JvmOptions=-Djcifs.smb.client.dfs.disabled=false ++JvmOptions=-Djcifs.resolveOrder=DNS --StartMode=jvm --StartClass=%MAIN_CLASS% --StartMethod=main --StopMode=jvm --StopClass=%MAIN_CLASS% --StopMethod=main --StopParams= --LogPath=%LOGPATH% --StdOutput=auto --StdError=auto
echo 安装服务完成。
pause
将文档文本名称修改成 install.bat。
详细解释如图:
五. 编写卸载服务的脚本
在 Service 文件夹下创建一个文档文本,打开编辑:
@echo off
cd..
set basedir=%CD%
set SERVICE_NAME=SpringForWinServiceDemo
set SRV=%BASEDIR%\Service\prunsrv.exe
echo 正在卸载服务...
"%SRV%" //DS//%SERVICE_NAME%
echo 服务卸载完毕。
pause
将文档文本名称修改成 uninstall.bat。
部署Windows服务
一. 安装服务
执行 install.bat,如下图:
提示“安装服务完成”后,使用 win + r 组合快捷键打开“运行”窗口,之后输入 services.msc 按下回车键,即可打开“服务”。
在“服务”中找到 install.bat 文件里 SERVICE_CH_NAME 中设置的名称,证明服务已经安装,如下图:
二. 启动服务
装好的服务还没有启动,我们需要手动将其启动,回到 Service 文件夹,双击打开 SpringForWinServiceDemo.exe,然后点击“开始”,如下:
如果一切正常的话,服务就可以成功启动了,如下图:
再次回到“服务”列表页,刷新后,可以看到服务的状态为“正在运行”,如下图:
注意,如果服务起不来的话,一定要去检查 Procrun 的 log,在这里:
三. 卸载服务
如果想要卸载服务,运行 uninstall.bat 即可,如下图:
然后重启电脑即可看见对应的服务已经没有了