背景
最近有个需求让我把原本部署在linux系统
上的数据库
和对数据库进行CRUD的java程序
部署到windows系统上来.
问题
mysql
和tdengine
这两个数据库有windows版本, 直接安装就行了, 并且也已经自动注册成服务, 可以自己设置开机自动启动(控制面板->本地服务)
但是
kafka
和zookeeper
是绿色版,怎么设置自动启动呢?还有springboot的jar程序,又该如何是好呢?
解决
可以使用winSW这个开源项目来注册自定义服务.
https://github.com/winsw/winsw/releases
下载这两个文件:
WinSW-x64.exe
sample-allOptions.xml
如何使用?
zookeeper
1.把两个文件都改名为你想注册的服务名称, 比如zookeeper.xml
和zookeeper.exe
然后exe文件就不用动了, 修改xml文件.
2.修改xml文件
xml文件有这么几项是必填项
<service>
<!-- 该服务的唯一标识 -->
<id>zookeeper</id>
<!-- 注册为系统服务的名称 -->
<name>zookeeper</name>
<!-- 对服务的描述 -->
<description>数据采集系统zookeeper</description>
<!-- 执行程序 -->
<executable>C:\software\zookeeper-3.4.14\bin\zkServer.cmd</executable>
<!-- 执行参数 -->
<arguments>C:\software\zookeeper-3.4.14\conf\zoo.cfg</arguments>
<!--
日志模式
支持的模式:
* append - Rust update the existing log
* none - Do not save executable logs to the disk
* reset - Wipe the log files on startup
* roll - Roll logs based on size
* roll-by-time - Roll logs based on time
* rotate - Rotate logs based on size, (8 logs, 10MB each). This mode is deprecated, use "roll"
默认模式: append
官方文档看https://github.com/kohsuke/winsw/blob/master/doc/loggingAndErrorReporting.md for more details
-->
<logmode>rotate</logmode>
</service>
这个xml文件就是定义了该服务每次启动时,去执行哪个文件,并且参数或者包含参数的配置文件在哪里, 所以配置了执行文件路径之后,就不要动了,也不要删除,不然服务会启动失败.
3.安装服务
在管理员模式的CMD命令行中
a.执行 zookeeper.exe install
安装服务
b.执行 start zookeeper.exe
开启服务
c.在控制面板->本地服务 已经能看到了,且可以右键它启动和停止,设置成自动就是开机自动启动
也可以在xml文件中配置好自动启动
<startmode>Automatic</startmode>
4.在注册表中查看和修改
win + r
打开运行,输入regedit
打开注册表编辑器
依次打开计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\zookeeper
找到刚才创建的zookeeper服务
如果你后期把zookeeper.exe移动了位置, 就需要改这个地方了
5.日志
如果服务启动失败,日志默认是在zookeeper.exe文件同级目录,
也可以在xml文件中配置指定目录
<logpath>%BASE%\logs</logpath>
kafka
1.故技重施安装kafka服务
a. 修改kafka.xml
<service>
<!-- 该服务的唯一标识 -->
<id>kafka</id>
<!-- 注册为系统服务的名称 -->
<name>kafka</name>
<!-- 对服务的描述 -->
<description>kafka</description>
<!-- 将程序添加到系统服务 -->
<executable>C:\software\kafka_2.12-2.4.1\bin\windows\kafka-server-start.bat</executable>
<!-- 执行的参数 -->
<arguments>C:\software\kafka_2.12-2.4.1\config\server.properties</arguments>
<!-- 失败后重试 -->
<onfailure action="restart" delay="10 sec"/>
<!-- 日志模式 -->
<logmode>rotate</logmode>
</service>
2.故技重施安装服务
a.执行 kafka.exe install
安装服务
3.注意kafka启动要在zookeeper之后,这需要修改注册表中的开机启动程序顺序,修改这个List,在末尾加上zookeeper和kafka
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder
java程序
1.修改xml
<service>
<!-- 该服务的唯一标识 -->
<id>k2h</id>
<!-- 注册为系统服务的名称 -->
<name>k2h</name>
<!-- 对服务的描述 -->
<description>数据采集系统</description>
<!-- 将java程序添加到系统服务 -->
<executable>java</executable>
<!-- 执行的参数 -->
<arguments>-jar -Xms2048m -Xmx2048m -Dspring.config.location=C:\apps\k2t\config\application.yml "C:\apps\k2t\k2h-3.02.jar" --spring.profiles.active=prod >/dev/null</arguments>
<!-- 日志模式 -->
<logmode>rotate</logmode>
</service>
这里要注意,如果你的java程序有外置的配置文件,一定要在执行参数里加上, 否则会不生效.
2.安装
k2h.exe install
3.因为我的java程序是kafka的消费者,要依赖于kafka,所以也加在开机自启的List后面
这样就好了
测试
把kafka,zookeeper,java程序里的配置IP什么的都改好
然后重启一下win10看看效果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏