**
采用winsw方式windows服务器部署java springboot项目
**
winsw的开源地址:https://github.com/winsw/winsw
细节说明:
1.将该文件夹内1.net-install.bat、2.net-start.bat、net-stop.bat、net-uninstall.bat、api-server.exe、api-server.xml放置与项目jar同级文件夹内或内部新建自定义文件夹内,后续可以在xml里指定路径;
2.修改api-server.exe、api-server.xml两个的文件名称,尽量保持与jar包名称一致;
3.编辑器打开api-server.xml文件,修改内部节点配置,注:ID节点必须唯一
api-server.xml文件:
<service>
<!-- ID of the service. It should be unique across the Windows system-->
<id>APPId</id>
<!-- Display name of the service -->
<name>App</name>
<!-- Service description -->
<description>app</description>
<!-- Path to the executable, which should be started java的jdk路径可以这样写,如果配置了系统环境变量,也可以写成java-->
<executable>D:\run\jdk\jdk1.8.0_221\bin\java.exe</executable>
<arguments>-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Dfile.encoding=utf-8 -jar D:\run\app.jar --spring.config.location=D:\run\run_bin\application-prod.properties</arguments>
<logpath>%BASE%/logs</logpath>
<log mode="roll-by-time">
<pattern>yyyy-MM-dd</pattern>
</log>
</service>
arguments节点内容可以指定为例子中的写法,也可以写成其他的java运行命令,如:-jar D:\run\app.jar
修改完成后,保存xml文件;
4.打开1.net-install.bat、2.net-start.bat、net-stop.bat、net-uninstall.bat,修改内部的配置,与文件夹内的名称、xml的ID节点保持一致;
5.先运行1.net-install.bat,双击,提示以下信息代表成功
2022-02-16 09:14:00,160 INFO - Installing service 'apiName (APIId)'...
2022-02-16 09:14:00,176 INFO - Service 'apiName (APIId)' was installed successfully.
6.运行2.net-start.bat,双击,会提示代表成功
apiName 服务正在启动 .
apiName 服务已经启动成功。
7.如需停止服务可双击net-stop.bat,卸载服务,可以双击net-uninstall.bat。
如果需要windows查看,可在cmd上输入services.msc或者我的电脑\右击\管理\服务与应用程序\服务。找到api-server.xml文件的
ID名称服务,即可操作停止、重启等操作
上述提到的bat文件内容:
1.net-install.bat
@echo off
title start-APP
echo APP start
mode con cols=100 lines=20
color 3f
:: 开始获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
D:
cd D:\run\run_bin
app-server.exe install
pause
exit
2.net-start.bat
@echo off
title start-APP
echo APP start
mode con cols=100 lines=20
color 3f
:: 开始获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
net start APPId
pause
exit
3.net-stop.bat
@echo off
title start-APP
echo APP stop
mode con cols=100 lines=20
color 3f
:: 开始获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
net stop APPId
pause
exit
4.net-uninstall.bat
@echo off
title start-APP
echo APP uninstall
mode con cols=100 lines=20
color 3f
:: 开始获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
D:
cd D:\run\run_bin
app-server.exe uninstall
pause
exit