目录

Windows 各种中间件安装为服务

通用步骤(以Nacos为例)

1、插件下载

​ 地址:Releases · winsw/winsw · GitHub

Windiws 上的 .NET framework 版本 要 是4.6或以上。

​ 选择下面这个插件:

./1.png

2、配置文件和插件安装

1、在nacos解压包的bin目录下创建nacos-service.xml文件

./2.png

2、在nacos-service.xml输入以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?xml version="1.0" encoding="UTF-8" ?>
<service>
    <id>nacos</id>		<!-- 服务id,必须唯一 -->
    <name>Nacos Service</name>		<!-- 服务名称 -->
    <description>Nacos-service</description>		<!-- 服务描述 -->
    <logpath>D:\tool\nacos\nacos\bin\logs\</logpath>	<!--  日志路径 -->
    <logmode>roll</logmode>
    <executable>D:\tool\nacos\nacos\bin\startup.cmd</executable>
    <stopexecutable>D:\tool\nacos\nacos\bin\shutdown.cmd</stopexecutable>
</service>

先说注意的点:不要有中文!!不要有中文!!不要有中文!!

博主就是在中文这块折腾很久,保险起见哪怕注释都不要有中文

另外,要将三个地址改为你自己的:

./3.png

解释下相关配置:

id:服务id,需在windows系统上唯一,不能与其他服务有冲突

name:注册完服务后显示的服务名称

description:随便写,但尽量不要有中文

一般将下载下来的 winsw.exe 修改成 jar文件同名。并在同目录创建一个 同名的xml,每个软件分别放置一个此软件,大佬可自行摸索配置环境变量

3、将刚刚下载的 WinSW-x64.exe插件移动到nacos解压目录的bin目录下,改名为:nacos-service.exe,exe是后缀

./4.png

4、在bin目录下输入cmd,打开命令行,输入:nacos-service.exe install

./5.png

5、在cmd命令行输入:net start nacos,启动服务

./6.png

3、服务的查看与开启关闭

1、查看

​ win + R

​ 输入:services.msc

./7.png

2、开启关闭服务

1
2
net start nacos
net stop nacos

其他中间间仅需修改xml即可

Mysql

自带脚本运行即可

RabbitMq

自带脚本运行即可

Redis

自带脚本运行即可

ElasticSearch

自带脚本运行即可

Logstash

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<service>
  <!-- 唯一服务ID-->
  <id>logstash</id>
  <!-- 显示服务的名称 -->
  <name>Logstash Service</name>
  <!-- 服务描述 -->
  <description>Logstash服务</description>
  <!-- 日志路径 -->
  <logpath>C:\Program_Green\Java_env\logstash-8.2.0\logs\</logpath>
  <!-- 日志模式 -->
  <logmode>roll</logmode>
  <!-- 可执行文件的命令 -->
  <executable>C:\Program_Green\Java_env\logstash-8.2.0\bin\ry-cloud-aa-comp_start.cmd</executable>
  <!-- <executable>C:\Program_Green\Java_env\logstash-8.2.0\bin\logstash.bat</executable> -->
  <!-- <arguments>-f C:\Program_Green\Java_env\logstash-8.2.0\ry-cloud-aa-comp\config\config.conf - -path.data=C:\Program_Green\Java_env\logstash-8.2.0\ry-cloud-aa-comp\data\</arguments> -->
  <!-- 停止可执行文件的命令 -->
  <stopexecutable>C:\Program_Green\Java_env\logstash-8.2.0\bin\logstash_stop.bat</stopexecutable>
</service>

ry-cloud-aa-comp_start.cmd

1
2
cd C:\Program_Green\Java_env\logstash-8.2.0\bin
logstash.bat -f C:\Program_Green\Java_env\logstash-8.2.0\ry-cloud-aa-comp\config\config.conf --path.data=C:\Program_Green\Java_env\logstash-8.2.0\ry-cloud-aa-comp\data\

logstash_stop.bat

根据jps找java进程,拿到进程号startkill掉

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@echo off
set program=org.logstash.Logstash
echo program: %program%
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %program%`) do (
	set pid=%%a
	set image_name=%%b
)
if not defined pid (echoprocess%program% does not exists) else (
	echo prepare to kill %image_name%
	echo startkill %pid% ...
	rem 根据进程ID,kill进程
	taskkill /f /pid %pid%
)

ElasticHD

直接startkill掉进行关闭

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<service>
  <!-- 唯一服务ID-->
  <id>elastic_hd</id>
  <!-- 显示服务的名称 -->
  <name>ElasticHD Service</name>
  <!-- 服务描述 -->
  <description>ElasticHD服务</description>
  <!-- 日志路径 -->
  <logpath>C:\Program_Green\Java_env\ElasticHD\logs\</logpath>
  <!-- 日志模式 -->
  <logmode>roll</logmode>
  <!-- 可执行文件的命令 -->
  <executable>C:\Program_Green\Java_env\ElasticHD\ElasticHD.exe</executable>
  <!-- 停止可执行文件的命令 -->
  <stopexecutable>taskkill -f -PID ElasticHD.exe</stopexecutable>
</service>

Nginx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<service>
  <!-- 唯一服务ID-->
  <id>nginx</id>
  <!-- 显示服务的名称 -->
  <name>Nginx Service</name>
  <!-- 服务描述 -->
  <description>Nginx服务</description>
  <!-- 日志路径 -->
  <logpath>C:\Program_Green\Java_env\nginx-1.20.2\logs\</logpath>
  <!-- 日志模式 -->
  <logmode>roll</logmode>
  <!-- 可执行文件的命令 -->
  <executable>C:\Program_Green\Java_env\nginx-1.20.2\nginx.exe</executable>
  <!-- 停止可执行文件的命令 -->
  <stopexecutable>C:\Program_Green\Java_env\nginx-1.20.2\nginx.exe -s stop</stopexecutable>
</service>

Jar包

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<service>
  <id>test</id>    <!-- 服务id,必须唯一 -->
  <name>test</name>  <!-- 服务名称 -->
  <description>测试</description> <!-- 服务描述 -->
  <executable>java</executable>
  <arguments>-jar D:\test.jar</arguments> <!-- 指定jar包的路径 ,启动命令 -->
  <logpath>.\log</logpath> <!--  日志路径 -->
  <startmode>Automatic</startmode> <!--  设置服务自动启动 -->
  <logmode>reset</logmode>
</service>

执行成功,会生成一个log 文件夹,到windows 服务中查看,test 服务已经创建成功。

minio

1
2
3
4
5
6
7
8
9
<service>
  <id>minio</id>
  <name>minio</name>
  <description>minio服务端</description>
  <executable>d:\minio\start.bat</executable> <!-- 指定bat文件的路径 -->
  <logpath>.\log</logpath>
  <startmode>Automatic</startmode>
  <logmode>reset</logmode>
</service>

我的脚本

启动

1
2
3
4
5
6
7
8
net start mysql
net start redis
net start nacos
net start RabbitMQ
net start elasticsearch-service-x64
net start elastic_hd
net start logstash
net start nginx

关闭

1
2
3
4
5
6
7
8
net stop nacos
net stop redis
net stop mysql
net stop RabbitMQ
net stop elasticsearch-service-x64
net stop elastic_hd
net stop logstash
net stop nginx

删除服务

1
winsw uninstall [<path-to-config>] [--no-elevate]

path-to-config:配置文件路径。如果未指定文件,WinSW 将在可执行目录中搜索。具有相同文件名但没有扩展名的 xml 文件。

–no-elevate:不自动处罚UAC提示