一、背景
帮朋友部署了一个基于若依框架的系统,怕他平时不懂维护,我就想把所有程序做成系统服务,让它们开机自启动,实现有问题就重启电脑解决。
二、系统构成
系统由前端(若依框架前端,nginx部署)、后端(若依框架后端,java -jar)、数据库(MySQL)、缓存(Redis)4个部分构成。
三、做成windows系统服务
(一)Redis做成windows系统服务
假设redis的安装目录是d:\redis,用windows自带的sc命令就可以了。
sc create RedisServer binPath= "D:\redis\redis-server.exe --service-run D:\redis\redis.windows.conf" start= auto displayname= "Redis Server"
(二)nginx做成windows系统服务
1.下载WinSW
我搜索到的是不能直接用系统自带的sc命令来创建服务,用的是winsw,地址是https://github.com/winsw/winsw/releases,我选中的下面最新的稳定版本,下载的是WinSW-x64.exe。如果你打开很慢,也可以直接下载我上传的winsw-64.exe。
2.用winsw做nginx系统服务
假设nginx的目录是D:\softs\nginx-1.28.0
(1)复制WinSW-64.exe到nginx目录
修改WinSW-64.exe的名称为nginx-service.exe。
(2)编写nginx-service.xml
xml文件名称要与exe文件名称相同,我把服务名称也写一样的,方便查找核对。里面的定义可以去看官方文档日志定义说明,同目录下还有其他的说明,也可以问AI解释。我就不详细解释了。
<service>
<id>nginx-service</id>
<name>nginx-service</name>
<description>XX系统前端服务</description>
<executable>D:\softs\nginx-1.28.0\nginx.exe</executable>
<stopexecutable>D:\softs\nginx-1.28.0\nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
<!-- 新增:重载配置命令(reload) -->
<reloadexecutable>D:\softs\nginx-1.28.0\nginx.exe</reloadexecutable>
<reloadargument>-s</reloadargument>
<reloadargument>reload</reloadargument>
<!-- 日志配置(输出到console.txt) -->
<logpath>D:\softs\nginx-1.28.0/logs/</logpath>
<log mode="roll-by-size-time">
<sizeThreshold>10240</sizeThreshold>
<pattern>yyyyMMdd</pattern>
<autoRollAtTime>00:00:00</autoRollAtTime>
</log>
<startmode>Automatic</startmode>
<!-- 关键配置:启用延迟启动(依赖Windows系统支持) -->
<delayedAutoStart>true</delayedAutoStart>
<restartsec>30</restartsec>
<onfailure action="restart" delay="60 sec"/>
</service>
(3)创建服务及启动
打开cmd窗口,切到我们nginx的安装目录,并执行服务创建,和服务运行的命令。
cd /d D:\softs\nginx-1.28.0
nginx-service.exe install
sc start nginx-service
如果创建不对,可以用 nginx-service.exe uninstall来删除服务,但是注销之前要先关闭服务。也可以用 sc delete nginx-service来删除服务。
(三)jar包做成windows系统服务
我的jar包放在D:\softs\services目录下面。
(1)复制WinSW-64.exe到jar包所在目录
修改WinSW-64.exe的名称为ruoyi-admin-service.exe。
(2)编写ruoyi-admin-service.xml
xml文件名称要与exe文件名称相同,我把服务名称也写一样的,方便查找核对。里面的定义可以去看官方文档日志定义说明,同目录下还有其他的说明,也可以问AI解释。我就不详细解释了。
<service>
<id>ruoyi-admin-service</id>
<name>ruoyi-admin-service</name>
<description>XX系统后端服务</description>
<executable>java</executable>
<arguments>-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -jar "%BASE%\ruoyi-admin.jar" --spring.datasource.druid.master.password=xxxx --server.port=8080</arguments>
<!-- 日志配置(输出到console.txt) -->
<logpath>D:/softs/services/logs/</logpath>
<log mode="roll-by-size-time">
<sizeThreshold>10240</sizeThreshold>
<pattern>yyyyMMdd</pattern>
<autoRollAtTime>00:00:00</autoRollAtTime>
</log>
<startmode>Automatic</startmode>
<restartsec>30</restartsec>
<onfailure action="restart" delay="60 sec"/>
</service>
(3)创建服务及启动
打开cmd窗口,切到我们nginx的安装目录,并执行服务创建,和服务运行的命令。
cd /d D:\softs\services
ruoyi-admin-service.exe install
sc start ruoyi-admin-service
如果创建不对,可以用 ruoyi-admin-service.exe uninstall来删除服务,但是注销之前要先关闭服务。也可以用 sc delete ruoyi-admin-service来删除服务。