使用WinSW工具制作Windows服务

​ 最近我在工作的时候,因为服务器会定时重启的问题要求把项目的服务做成服务器,开机自启动,原先我找到一个办法就是给项目写了一个简单的bat脚本作为启动脚本,然后将开机自启动脚本按顺序放在开机自启动的文件夹中 (按下【win+R】打开运行输入:【shell:Common Startup】) 来实现开机自启动,但是这个方法有个问题就是开机自启动之后得登录对应的用户,所以我就放弃了,最后还是使用winSw将所需的一些服务器做成Windows服务的形式。

​ 接下来就讲讲winSw制作Windows服务的过程,文章分别举三个例子 (jar包,war包,nginx服务)

1、下载

​ 下载地址为:https://github.com/winsw/winsw/releases 先进行下载这个exe文件。

在这里插入图片描述

(1)jar包制作服务:

在这里插入图片描述

可以看到文件夹有两个文件,其中.exe文件其实就是刚刚下载的WinSW-x64.exe文件只是修改了名称没有进行其他任何修改。其中名称xiaomai-service就是我们的服务名,然后下面的xiaomai-service.xml是需要我们自己来创建编写的,制作服务需要这两个文件,其中文件名就是服务名并且两个文件的文件名一定要一样

例如现在我们是将jar包的启动制作成服务xml的编写可以按照我下面的示例来进行修改:

<?xml version="1.0" encoding="UTF-8"?>
<service>
    <!-- 服务ID名称(唯一) -->
    <id>xiaomai-service</id>
    <!-- 服务显示名称 -->
    <name>xiaomai-service</name>
    <!-- 服务的描述信息 -->
    <description>KeXin xiaomai-service</description>

    <!-- Executable (Java command to run the .jar file) -->
    <executable>C:\Program Files\Java\jdk1.8.0_211\bin\java.exe</executable>

    <!-- Arguments passed to the executable (match your original .bat script) -->
    <arguments>
        -Dfile.encoding=utf-8
        -server
        -Xms512m
        -Xmx1g
        -XX:+UseG1GC
        -XX:SurvivorRatio=6
        -XX:MaxGCPauseMillis=400
        -XX:G1ReservePercent=15
        -XX:ParallelGCThreads=4
        -XX:ConcGCThreads=1
        -XX:InitiatingHeapOccupancyPercent=40
        -jar D:\xmtx\xiaomai\private-xiaomai-0.0.1-SNAPSHOT.jar
    </arguments>

    <!-- Working directory (where the service runs from) -->
    <workingdir>D:\xmtx\xiaomai</workingdir>

    <!-- If the service fails, restart it after 3 seconds -->
    <onfailure action="restart" delay="3s"/>

    <!-- Log output for the service -->
    <logmode>rotate</logmode>
    <logpath>D:\xmtx\WinSw\xiaomai\logs</logpath>

    <!-- Set this to true if you want it to start automatically -->
    <autostart>true</autostart>
    <startdepend></startdepend>
</service>

executable: 标签中是我们的JDK中java.exe的位置自行修改。

arguments: 标签中是一些运行jar包的参数和位置。

onfailure: 标签是如果服务崩了的一个重启时间。

logpath: 标签是日志输出的文件夹

workingdir: 我写的是jar包所在的文件夹

然后这两个文件都没问题后,在当前目录开一个小黑窗 ,服务名➕install就可以了;

xiaomai-service install

任务管理器 --> 服务 --> 就会多一个xiaomai-service的服务

(2)war包制作服务

其实有了上面的经验,那么war包还是一样的,还是那两个文件然后小黑窗,服务名 + install 就可以了。唯一变化的就是xml文件的编写。

下面我给一个我的示例:

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<service>
    <!-- Service name -->
    <id>batchService</id>
    <name>batchService</name>
    <description>KeXin - batchService</description>
    
    <!-- Executable to run (Tomcat startup script) -->
    <executable>D:\xmtx\apache-tomcat-9.0.87-batch\bin\catalina.bat</executable>
    <arguments>run</arguments>
    
    <!-- Optional working directory -->
    <workingdir>D:\xmtx\apache-tomcat-9.0.87-batch</workingdir>
	
	<!-- 设置环境变量 -->
    <env name="CATALINA_HOME" value="D:\xmtx\apache-tomcat-9.0.87-batch"/>
    <env name="JAVA_HOME" value="C:\Program Files\Java\jdk1.8.0_211"/>
    
    <!-- If the service fails, restart it after 3 seconds -->
    <onfailure action="restart" delay="3s"/>
    
    <!-- Log output for the service -->
    <logmode>rotate</logmode>
    <logpath>D:\xmtx\apache-tomcat-9.0.87-batch\logs</logpath>
    
    <!-- Set this to true if you want it to start automatically -->
    <autostart>true</autostart>
    <startdepend></startdepend>
</service>

这个文件示例改改jdk的目录,Tomcat目录,服务名…信息就可以了。

(3)nginx制作Windows服务

最后nginx制作成Windows服务,也是差不多就是xml文件有所不同。下面是示例:

<service>
    <id>nginx-service</id>
    <name>Nginx Web Server</name>
    <description>Nginx Web Server Service</description>
    <executable>D:\zzdy\nginx-1.16.1\nginx.exe</executable>
    <arguments>-p D:\zzdy\nginx-1.16.1 -c D:\zzdy\nginx-1.16.1\conf\nginx.conf</arguments>
    <logpath>D:\zzdy\nginx-1.16.1\logs</logpath>
    <logmode>roll</logmode>
</service>

文章基于个人学习,参考创作,如果有代码写的不好的地方欢迎大佬指出!一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值