winsw.exe 注册服务

发布时间 2023-03-28 11:40:14作者: 也许已没有也许

  如果能给你带来帮助,不胜荣幸,如果有错误也请批评指正。共同学习,一起进步

    其实一般情况下,大部分可以启动就可以了,如果因为特殊情况必须得服务启动,那么就可以注册服务

    我使用的是winsw.exe,因此需要先下载安装.net framework 4 安装地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=17718

    简单的说几个小例子:

    第一:使用winsw.exe注册服务,首先需要下载winsw.exe,推荐大家去这两个地方下载

      下载地址:1  http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/

           2  https://github.com/winsw/winsw/releases

    当然不考虑安全性,你想去那里下载都可以。

    第二:编写配置文件并进行注册

        1 注册jar,如果你的服务是springboot等打包之后为jar

          需要把下载好的WinSw.exe文件放到你需要打包的jar的同级目录下,然后创建一个xxx.xml文件(xxx和你的WinSw.exe文件同名)

          内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<service>
  <id>xxxxx</id>
  <name>xxxxx</name>
  <description>xxxxx</description>
  <env name="xxx_HOME" value="C:\jdk-1.8.0\bin\"/>
  <executable>java</executable>
  <arguments>-jar "xxxxxx.jar" --spring.profiles.active=prod</arguments>
  <log mode="roll"></log>
</service>

          <id>指定Windows内部用户标识服务 在系统安装的所有服务中id 必须是唯一的,并且完全由字母数字字符组成。

          <name> 服务的简短显示名称,可以包含空格和其他字符;在系统的所有服务中name也必须是唯一的。

          <descrption> 对服务的完整描述。

          <env> 为子进程设置环境变量,可以使用多次从而设置多个变量单标签,通过name和value两个属性设置环境变的值 

          <executable> 该元素指定要启动的可执行文件 可以是绝对路径,也可以只指定可执行文件名称并从PATH中搜索

          <arguments> 该标签指定的参数传递给可执行文件,多个参数以空格隔开

          <log> :

            该标签的mode属性指定从启动过程中捕获stdout和stderr的几种不同的方法:

            append:追加模式

            reset:重设模式,每次服务启动时,旧的日志文件都会被截断

            roll-by-size:按日志文件大小滚动,日志大于指定大小后重新生成新的日志文件进行写入,日志文件名最后以阿拉伯数字区分;
            嵌套sizeThreshold标签指定日志文件多大时生成新日志文件,单位为KB;
            嵌套keepFiles标签指定最多要保留的日志文件数;

            roll-by-time:按日志文件时间段滚动
            必须嵌套pattern标签指定日志文件名的时间标记格式,例如yyyyMMdd HH:mm

            roll-by-size-time:按日志文件大小和时间模式滚动
            嵌套sizeThreshold标签指定日志文件多大时生成新日志文件,单位为KB
            嵌套pattern标签指定当日志文件文件名最后的区分字段格式(时间格式,如yyyyMMdd HH:mm)
            嵌套autoRollAtTime标签指定每天在指定时间进行日志滚,例如00:00:00表示每天凌晨进行日志滚动

        其次需要使用管理员的身份打开小黑框 找到jar和winsw.exe文件所在的目录下,输入 winsw.exe install 进行注册服务 ;

        如出现 successfully等字样表示注册成功;可打开任务管理器进行查看

        如果报错,请检查xxx.xml文件名称是否和xxx.exe文件名相同。或者xxx.xml文件内容是否正确

      2:将nginx注册为服务

        步骤不变,xml内容更改为:

        <?xml version="1.0" encoding="utf-8" ?>

<service>
 <id>xxxxxx</id>
 <name>xxxxxx</name>
 <description>xxxxx</description>
 <logpath>E:\well\nginx-1.19.6\</logpath>
 <logmode>roll</logmode>
 <depend></depend>
  <executable>E:\nginx-1.19.6\nginx.exe</executable>
  <stopexecutable>E:\nginx-1.19.6\nginx.exe -s stop</stopexecutable>
</service>

        标签相同的不再复述

          <executable>应启动的可执行文件的路径

          <stopexecutable>  这个我不清楚该怎么解释,因为官方文档显示为:停止可执行文件 一个可选可执行文件的路径,用于执行服务的关闭。我的翻译菜的抠脚,大家可以自行去sqmple-allOptions.xml里面去看看,比我说的有用

          如果想知道更多的标签及其内容:请大家前往官网 查看全部配置(sample-allOptions.xml)或者简化配置(sample-minimal.xml)

          

      3:注册redis,除了注册nginx和jar之外,如果大家继承了其他的CAS或者是其他的AUTH等打成了jar均可以通过上面类型进行部署

        用管理员打开dos小黑框,进入redis的目录下

          命令:redis‐server.exe ‐‐service‐install 配置文件 ‐‐service‐name 服务名 ‐‐port 服务端口  可以注册成服务

        如果你只需要注册服务,对端口什么的都没有任何要求可以使用简化写法:

          命令:redis‐server.exe ‐‐service‐install

      同理都是去任务管理器当中查看是否注册成功。