配置开机自启的原因是打算用ipv6绑定一个域名,因为ipv6现在无法实现固定所以需要一个服务去动态的去更新。绑定后就可以通过域名访问家中的主机
ipv6绑定域名的具体产考有了IPv6公网IP以后,通过域名访问内网设备,DDNS,基于SpringBoot实现!项目参考ddns解析ipv6
当在本地测试没有问题后就需要考虑主机开机时无法自己去运行这个项目绑定当前的ipv6,这时候就需要让这个项目加入Windows的开机自启了
介绍一款可以在Windows环境下将Springboot程序注册成为服务实现开机自启和后台运行
1、 winsw (Windows Service Wrapper)
使用winsw,可以简单实现。winsw是用c#写的一个小工具。
所以运行需要”.NET framework“,现在Win10上都自带.NET framework4.0
原理其实是winsw.exe本身可以注册为windows服务,可以设置为自启动。
当他启动后,然后根据和此exe同名的xml文件中的配置,执行设置的命令,达到自启动的效果。
winsw的开源地址:https://github.com/winsw/winsw
目前稳定版本是v2.11.0,
下载链接:https://github.com/winsw/winsw/releases/tag/v2.11.0
2、 查看.NET Framework版本并下载对应版本
1、在地址栏上输入“C:\Windows\Microsoft.NET\Framework”,按回车键
2、可以看到.NET Framework版本。可以看到最高版本为4.0
下载与之版本对应的exe文件
此文件下载完成之后需要与程序放在同级目录,并修改名称为 程序名.exe。(最好与jar包的名称相同)
3、创建初始化服务的XML文件
创建一个xml文件,此xml文件也需要与程序同名,用于初始化服务。内容如下
(注意:填写arguments是要注意xml中特殊符号表示的方法,不然会报错:: 分析 EntityName 时出错 )
特殊字符 特殊含义 实体编码
> 开始标记 >
< 结束标记 <
" 引号 "
' 撇号 '
& "&"符号 &
<?xml version="1.0" encoding="UTF-8"?>
<service>
<!-- 服务ID -->
<id>aliyun-ipv6</id>
<!-- 服务名称 -->
<name>aliyun-ipv6</name>
<!-- 服务描述 -->
<description>ddns解析ipv6绑定阿里云</description>
<!-- jar包运行参数,指定运行程序的jdk位置 -->
<executable>java</executable>
<!-- -jar之后是jar包名称 -->
<arguments> -jar aliyun-ipv6.jar >aliyun-ipv6.log 2>&1 & </arguments>
<!-- 日志配置 -->
<logpath>D:\Software\programming\jar\aliyun-ipv6\log</logpath>
<logmode>rotate</logmode>
</service>
相关参数说明如下:
- id:安装windows服务后的服务ID,必须是唯一的。
- name:服务名称,也必须是唯一的。一般和id一致即可。
- description:服务说明,可以使用中文,可做备注使用。
- executable:执行的命令,比如启动springboot应用的命令java。
- arguments:命令执行参数,比如 包路径,类路径等。
此时目录下的内容如下:
4、安装服务
使用管理员身份打开cmd窗口,注意一定要使用管理员身份打开,否则服务无法启动时无法删除服务。
进入程序目录
使用win-demo.exe install命令安装服务,未出现错误信息即代表安装成功。如果提示错误信息,检查exe,jar,xml文件名是否完全一致,文件后缀名是否有打开显示,以及xml文件中的内容是否无误。
win-demo.exe install
除install之外,还有如下命令:
uninstall:删除服务
start:启动服务
stop:停止服务
restart:重启服务
status:查看状态