Winsw将jar-bat-nacos-seata-nginx等快捷部署为windows服务
Winsw将jar-bat-nacos-seata-nginx等快捷部署为windows服务
1.软件下载
WinSW的github下载地址:https://github.com/winsw/winsw/releases
本文以WinSW v2.11.0为例
2.注意事项
1.xxx.xml和xxx.exe必须放在同一个文件夹
2.xxx.xml和xxx.exe的xxx必须一致,例test.xml和test.exe
3.编写配置文件
**注意事项** 1.如果配置了环境变量executable直接写成java就行了,如果没有就写全路径 <executable>java</executable> <executable>D:\java\jdk1.8.0_152\bin\java.exe</executable> 2.如果auth.jar和auth.exe和auth.xml在同一个目录jar包路径可以省略,否则写全路径 <arguments>-Dspring.profiles.active=dev -Dfile.encoding=utf-8 -jar -Xmx1024M -Xms256M auth.jar</arguments> <arguments>-Dspring.profiles.active=dev -Dfile.encoding=utf-8 -jar -Xmx1024M -Xms256M D:\jar\auth.jar</arguments> 3.简单而言之就是 <executable>启动可执行文件的路径 <arguments>填写你要附加的参数
nacos示例
<service> <!-- 服务的ID. windows系统必须唯一--> <id>nacos</id> <!-- 服务名称 --> <name>nacos</name> <!-- 服务描述 --> <description>nacos服务</description> <!-- Path to the executable, which should be started --> <!-- 如果配置了环境变量 executable直接写成java就行了 <executable>java</executable> <executable>D:\java\jdk1.8.0_152\bin\java.exe</executable> --> <executable>D:\JavaService\nacos-server-2.0.3\bin\startup.cmd</executable> <arguments>-m standalone</arguments> <startmode>Automatic</startmode> <logpath>%BASE%/log</logpath> <logmode>rotate</logmode> </service>
jar示例
<service> <!-- ID of the service. It should be unique across the Windows system--> <id>auth</id> <!-- Display name of the service --> <name>auth</name> <!-- Service description --> <description>认证模块</description> <!-- Path to the executable, which should be started --> <!-- 如果配置了环境变量 executable直接写成java就行了 <executable>java</executable> <executable>D:\java\jdk1.8.0_152\bin\java.exe</executable> --> <executable>java</executable> <arguments>-Dspring.profiles.active=dev -Dfile.encoding=utf-8 -jar -Xmx1024M -Xms256M auth.jar</arguments> <startmode>Automatic</startmode> <logpath>%BASE%/log</logpath> <logmode>rotate</logmode> </service>
nginx示例
<service> <id>NginxService</id> <name>NginxService</name> <description>Nginx启动服务</description> <!-- 启动 --> <executable>nginx.exe</executable> <!-- 停止 --> <stopexecutable>nginx.exe -s stop</stopexecutable> <!-- 开机启动 --> <startmode>Automatic</startmode> <!-- 日志配置 --> <logpath>%BASE%\logs\serviceLog</logpath> <!-- append:追加模式;reset:重设模式,每次服务启动时,旧的日志文件都会被截断;none:不生成任何日志文件 --> <logmode>none</logmode> </service>
bat/seata示例
<service> <!-- 指定在Windows系统内部使用的识别服务的ID。在系统中安装的所有服务中,这必须是唯一的,它应该完全由字母数字字符组成 --> <id>seata</id> <!-- 服务的简短名称,它可以包含空格和其他字符。尽量简短,就像“id”一样,在系统的所有服务名称中,也要保持唯一 --> <name>seata</name> <!-- 该服务可读描述。当选中该服务时,它将显示在Windows服务管理器中 --> <description>seata服务</description> <!-- 该元素指定要启动的可执行文件 --> <executable>D:\JavaService\seata-server-1.4.2\bin\seata-server.bat</executable> <startmode>Automatic</startmode> <!-- 日志输出位置 --> <logpath>%BASE%\seataServiceLogs</logpath> <logmode>rotate</logmode> </service>
4.部署服务
例:windows下cmd执行命令,install对应部署,uninstall对应注销
D:\nginx>NginxService.exe install 2022-12-02 15:41:51,752 INFO - Installing service 'NginxService (NginxService)'... 2022-12-02 15:41:51,805 INFO - Service 'NginxService (NginxService)' was installed successfully. D:\nginx>NginxService.exe uninstall 2022-12-02 15:41:56,789 INFO - Uninstalling service 'NginxService (NginxService)'... 2022-12-02 15:41:56,800 INFO - Service 'NginxService (NginxService)' was uninstalled successfully.
5.windows服务配置
最后在任务管理器中就能找到对应得 服务可以配置一下启停
6.批量部署/注销服务
windows的bat文件
部署:
@echo off nginx.exe install seata.exe install nacos.exe install xxx.exe install exit
注销:
@echo off nginx.exe uninstall seata.exe uninstall nacos.exe uninstall xxx.exe uninstall exit
7.附:xml其它配置注释
<!-- 这是Windows服务包装器的一个配置示例。 此配置文件应放在WinSW.exe同目录,名称应相同。 例如,对于myapp.exe,配置文件名应为myapp.xml。 更多信息:https://github.com/kohsuke/winsw/blob/master/doc/xmlconfigfile.md --> <configuration> <!-- SECTION: 必填项 --> <!-- 服务ID,在windows系统中必须唯一 --> <id>myapp</id> <!-- 服务显示名称,只能英文和数字 --> <name>MyApp Service (powered by WinSW)</name> <!-- 服务描述,只能英文和数字 --> <description>This service is a service cratead from a sample configuration</description> <!-- 启动可执行文件的路径 --> <executable>%BASE%\myExecutable.exe</executable> <!-- SECTION: 安装 这些选项仅在安装时有效。修改配置后,必须重新安装服务才能生效。 --> <!-- OPTION: serviceaccount 定义运行服务的账号。 --> <!-- <serviceaccount> <domain>YOURDOMAIN</domain> <user>useraccount</user> <password>Pa55w0rd</password> <allowservicelogon>true</allowservicelogon> </serviceaccount> --> <!-- OPTION: onfailure 定义一系列操作,如果托管的可执行文件失败,则顺序执行这些操作。 支持的操作:restart,reboot,none --> <!-- <onfailure action="restart" delay="10 sec"/> <onfailure action="restart" delay="20 sec"/> <onfailure action="reboot" /> --> <!-- OPTION: resetfailure windows服务重置故障状态的时间。 默认值 1 day --> <!-- <resetfailure>1 hour</resetfailure> --> <!-- SECTION: 执行管理配置 --> <!-- OPTION: arguments 传递给可执行文件的参数。 --> <!-- <arguments>-classpath c:\cygwin\home\kohsuke\ws\hello-world\out\production\hello-world test.Main</arguments> --> <!-- OPTION: startarguments 可执行文件启动参数。 如果配置,则覆盖"arguments" --> <!-- <startarguments></startarguments> --> <!-- OPTION: workingdirectory 如果指定,则设置可执行文件的默认工作目录。 默认值:服务包装的可执行文件的目录 --> <!-- <workingdirectory>C:\myApp\work</workingdirectory> --> <!-- OPTION: priority 所需的进程优先级。 可设置的值:Normal, Idle, High, RealTime, BelowNormal, AboveNormal 默认值:Normal --> <priority>Normal</priority> <!-- OPTION: stoptimeout 强制终止可执行文件之前,尝试正常关闭的等待时间。 默认值:15 seconds --> <stoptimeout>15 sec</stoptimeout> <!-- OPTION: stopparentprocessfirst 如果设置为true,在停止子进程之前终止父进程。 默认值:false --> <stopparentprocessfirst>false</stopparentprocessfirst> <!-- OPTION: stopexecutable 执行关闭服务的可执行文件路径。 只有配置了"stoparguments"时,才使用此配置。如果没有则用"executable"关闭服务 --> <!-- <stopexecutable>%BASE%\stop.exe</stopexecutable> --> <!-- OPTION: stoparguments 终止服务时,传递给"stopexecutable"的附加参数 此选项还允许通过停止可执行文件终止可执行文件 --> <!-- <stoparguments>-stop true</stoparguments> --> <!-- SECTION: 服务管理 --> <!-- OPTION: startmode 定义服务的启动模式 支持的模式:Automatic, Manual, Boot, System (latter ones are supported for driver services only) 默认模式:Automatic --> <startmode>Automatic</startmode> <!-- OPTION: delayedAutoStart 如果在"startmode"配置了"Automatic",则启用延迟自动启动。 请参阅Winsw文档以获取有关支持的平台版本和限制的信息。 --> <!-- <delayedAutoStart/> --> <!-- OPTION: depend 在本服务启动之前启动的服务。 --> <!-- <depend>Eventlog</depend> <depend>W32Time</depend> --> <!-- OPTION: waithint 挂起停止操作所需的时间 在指定的时间段过去之前,服务应该下次调用setServiceStatus函数。 否则服务将被标记为无响应 默认值:15 seconds --> <waithint>15 sec</waithint> <!-- OPTION: sleeptime 服务下次调用setServiceStatus函数之前的时间。 不要超过"waithint"。建议间隔是"waithint"的十分之一,但不小于1秒,也不大于10秒。 默认值:1 second --> <sleeptime>1 sec</sleeptime> <!-- OPTION: interactive 指示服务可以与桌面交互。 --> <!-- <interactive/> --> <!-- SECTION: 日志记录 --> <!-- OPTION: logpath 为服务包装程序生成的所有日志设置自定义日志目录。 默认值:包含执行器的目录 --> <!-- <logpath>%BASE%\logs</logpath> --> <!-- OPTION: log 为可执行文件生成的日志定义日志记录模式。 支持的模式: * append - 追加到现有日志 * none - 不保存日志 * reset - 启动时擦除日志 * roll - 根据大小自动循环分割日志 * roll-by-time - 根据日期循环分割日志 默认模式: append 每种模式都有不同的设置。https://github.com/kohsuke/winsw/blob/master/doc/loggingAndErrorReporting.md --> <log mode="append"> <!-- <setting1/> <setting2/> --> </log> <!-- SECTION: 环境设置 --> <!-- OPTION: env 设置或重写环境变量。 顶层可能配置了多个条目。 --> <!-- <env name="MY_TOOL_HOME" value="C:\etc\tools\myTool" /> <env name="LM_LICENSE_FILE" value="host1;host2" /> --> <!-- OPTION: download 启动前由包装器执行的下载列表。 --> <!-- <download from="http://www.google.com/" to="%BASE%\index.html" /> 下载并在出现错误时使服务启动失败: <download from="http://www.nosuchhostexists.com/" to="%BASE%\dummy.html" failOnError="true"/> 由于连接未加密而导致基本身份验证不安全的示例: <download from="http://example.com/some.dat" to="%BASE%\some.dat" auth="basic" unsecureAuth=“true” username="aUser" password=“aPassw0rd" /> 通过HTTPS安全基本身份验证 <download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="basic" username="aUser" password="aPassw0rd" /> 当目标服务器和客户端是同一域的成员,并且客户端域属于具有信任的域时,安全身份验证: <download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="sspi" /> --> <!-- SECTION: 其他选项 --> <!-- OPTION: beeponshutdown 指示服务在关闭时(如果操作系统支持)应发出嘟嘟声。 --> <!-- <beeponshutdown/> --> <!-- SECTION: 扩展 此配置部分允许指定自定义扩展。 更多信息请访问:https://github.com/kohsuke/winsw/blob/master/doc/extensions/extensions.md --> <!-- <extensions> Extension 1: id values must be unique <extension enabled="true" id="extension1" className="winsw.Plugins.SharedDirectoryMapper.SharedDirectoryMapper"> <mapping> <map enabled="false" label="N:" uncpath="\\UNC"/> <map enabled="false" label="M:" uncpath="\\UNC2"/> </mapping> </extension> ... </extensions> --> </configuration>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2020-12-02 Windows安装RabbitMQ