将java,tomcat,nginx,redis部署成windows启动服务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/achenyuan/article/details/82843310

将java,tomcat,nginx,redis部署成windows启动服务

前言

原来我的做法是写一个bat脚本,然后将它的快捷方式复制到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,这样就可以开机自启了。不过这种方式有一个非常大的缺点,就是开机之后会显示一个命令行窗口!而且这个窗口还不能关,一关程序就停了。
好在,有个利器winsw,它可以将Windows上的任何一个程序注册为服务,如果不需要,也可以方便的卸载服务。
winsw:Windows Service Wrapper缩写,是包装任何应用程序注册成windows服务的exe程序

注意点

windows系统需要以管理员权限运行命令,也就是说右键选择以管理员身份运行批处理文件
下载地址
github地址源码地址
github released版本下载地址,包括exe,样例,源码下载
官方英文安装文档
只有发布版exe下载地址

注册java

以MyApp.jar为例,注意xml和exe名字要保持一致。新建一个project文件夹

创建MyApp.xml文件

<service>
    <id>MyApp</id>
    <name>MyApp</name>
    <description>This runs Spring Boot as a Service.</description>
    <env name="MYAPP_HOME" value="%BASE%"/>
    <executable>java</executable>
    <arguments>-Xmx256m -jar "%BASE%\MyApp.jar"</arguments>
    <logmode>rotate</logmode>
</service>

上面的MYAPP_HOME是系统环境变量,我们需要像设置JAVA-HOME一样设置。地址指向jar文件地址,当然如果我们不使用环境变量的方式,那就直接在xml里指定jar的目录地址。我就是这样的方式。所以我的MyApp.xml文件为

<service>
    <id>Kelaien</id>
    <name>Kelaien</name>
    <description>This runs Spring Boot as a Service.</description>
    <executable>java</executable>
    <arguments>-Xmx256m -jar "myApp.jar" --spring.profiles.active=stage  --spring.datasource.dbname=donglitestdb  --server.port=9982</arguments>
    <logmode>rotate</logmode>
</service>

arguments是java命令后的一些参数,是自定义的。
id和name就是注册到windows服务的名字,建议和文件名保持一致,这里就是MyApp

创建MyApp.exe

其实不是重新创建而是重命名,将下载的winsw.exe重命名为MyApp.exe。注意名字要和MyApp.xml保持一致
官方这么说的:you have to rename the winsw.exe to MyApp.exe so that its name matches with the MyApp.xml,注意是必需

创建MyApp.jar

将准备好的jar重命名为MyApp.jar,当然,这个可以不是MyApp,也可以是其它的。比如MyApp.xml里的配置是这样的

<arguments>-Xmx256m -jar "myApp.jar" --spring.profiles.active=stage  --spring.datasource.dbname=donglitestdb  --server.port=9982</arguments>

是小写。

安装服务

至些就制作完成,就可以使用install/uninstall命令了
安装服务:MyApp.exe install
卸载服务:MyApp.exe uninstall
检查状态:MyApp.exe status
启动服务:MyApp.exe startnet start MyApp
停止服务:MyApp.exe stopnet stop MyApp
重启服务:MyApp.exe restart
windows下没有重启服务,我们可以先stop服务再start服务。批处理如下
restart.bat

net stop %1
net start %1

重启服务:restart 服务名

问题

如果报WMI Operation failure: AccessDenied解决办法:

  • 那就创建一个批处理文件,然后以管理员权限运行,
    比如如下installDongLi.bat:
D:\tmp\dongliService\DongLi.exe install
pause
  • window+x 使用管理员权限运行命令行,然后输入命令

注册nginx

winsw也可以包装其它exe文件,或可启动文件。做成windows服务。以nginx为例
将winsw.exe改名为NginxService.exe
创建NginxService.xml如下

<service>
    <id>NginxService</id>
    <name>NginxService</name>
    <description>This runs Spring Boot as a Service.</description>
    <executable>D:\soft\nginx\nginx-1.15.2\nginx.exe</executable>
</service>

将上面文件放到nginx安装文件包下
创建installService.bat批处理文件

D:\soft\nginx\nginx-1.15.2\NginxService.exe install

注意是绝对路径,因为在以管理员权限运行批处理文件,否则报WMI Operation failure: AccessDenied

注册tomcat

tomcat除上以winsw方式注册外,本身它就提供这注入服务方式

配置Tomcat环境变量

添加 TOMCAT_HOME 环境变量,也就是tomcat目录,D:\apache-tomcat-8.0.27
将变量添加到系统的path目录中,例如:%TOMCAT_HOME%\bin123

添加Tomcat服务

cmd命令行界面进入Tomcat解压目录的bin目录
安装tomcat服务运行:service.bat install

清除之前添加的tamcat:service remove tomcat8123456

启动Tomcat服务

 # net start tomcat8 运行tomcat服务了,窗口关闭后,tomcat服务器一会一直运行
 # net stop tomcat8  停止tomcat服务输入命令
 # net start   查看运行的windows服务就可以查看运行的所有服务,如果tomcat服务在里面,说明tomcat服务正在运行
    
 如果报拒绝访问的问题
 window+x 使用管理员权限运行或者修改Tomcat文件夹权限允许Users完全控制、读取、写入的权限

注册redis

因为是可执行程序,所以我们也可以使用winsw包装一下做成win服务,但是redis本身就提供win服务,所以我们一般使用redis提供的方式注册服务。下载redis

配置

redis.windows-service.conf是当redis注册成windows服务时使用的配置。redis.windows.conf是普通命令行启动时需要的配置文件,不介绍具体配置,百度一下。

命令

进入redis安装包
注册服务:redis-server --service-install redis.windows-service.conf --loglevel verbose
启动服务:redis-server --service-start
停止服务:redis-server --service-stop
卸载服务:redis-server.exe --service-uninstall

当然如果我们用net start/stop 服务名操作服务也可以

猜你喜欢

转载自blog.csdn.net/achenyuan/article/details/82843310