将绿色版Tomcat/Nginx注册成服务,实现开机自启动

我们常用的Tomcat,不管是在windows下还是linux下基本上都是绿色版本,解压、启动后直接使用。
这就产生了一个问题,不能开机自自动,很不方便,linux下可以添加到/etc/rc.local实现开机自启,windows下也可以添加到开机启动项里;不过注册为系统服务更加方便一些,这里记录一下方法。

注册Tomcat服务

检查系统环境

确保64位的操作系统下是64位的Jdk
tomcat

1
2
3
4
F:\>java -d64 -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

使用tomcat自身工具注册服务

进入到tomcat bin目录下,执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#注册服务
service.bat install '服务名'
#服务名中不能有"-","_",否则在服务中看不到
F:\apache-tomcat-7.0.70(zabbix)\bin>service.bat install tomcat7070
Installing the service 'tomcat7070' ...
Using CATALINA_HOME: "F:\apache-tomcat-7.0.70(zabbix)"
Using CATALINA_BASE: "F:\apache-tomcat-7.0.70(zabbix)"
Using JAVA_HOME: "C:\Program Files\Java\jdk1.7.0_80"
Using JRE_HOME: "C:\Program Files\Java\jdk1.7.0_80\jre"
Using JVM: "C:\Program Files\Java\jdk1.7.0_80\jre\bin\server\jvm.dll"
The service 'tomcat7070' has been installed.
#卸载服务
service.bat remove '服务名'
F:\apache-tomcat-7.0.70(zabbix)\bin>service.bat remove tomcat7070
Removing the service 'tomcat7070' ...
Using CATALINA_BASE: "F:\apache-tomcat-7.0.70(zabbix)"
The service 'tomcat7070' has been removed

tomcat

设置服务依赖关系

如果项目中有多个tomcat,有先后启动顺序的话,可以使用到服务里的依赖关系,比如tomcat8080启动时候监测tomcat8081是否启动(8080依赖8081),就可以按下边这种方法设置。

1
sc config "tomcat8080" depend= tomcat8081

设置访问自动启动

1
set autoconfig enabled={yes|no}

注册Nginx服务方法一

进入github下载WinSW.NET4.exe

https://github.com/kohsuke/winsw/releases/download/winsw-v2.1.2/WinSW.NET4.exe
将WinSW.NET4.exe 拷贝到 D:\nginx-1.16.1目录下,并重命名为nginx-server.exe

编写配置文件

在D:\nginx-1.16.1目录下新建 nginx-server.xml 配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>Nginx</id>
<name>Nginx</name>
<description>Nginx</description>
<executable>D:\nginx-1.16.1\nginx.exe</executable>
<startargument>-p</startargument>
<startargument>D:\nginx-1.16.1</startargument>
<logpath>D:\nginx-1.16.1\logs</logpath>
<logmode>roll</logmode>
<stopexecutable>D:\nginx-1.16.1\nginx.exe</stopexecutable>
<stopargument>-p</stopargument>
<stopargument>D:\nginx-1.16.1</stopargument>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
<stoptimeout>6sec</stoptimeout>
</service>

注册并启动服务

1
2
3
4
5
6
D:\>d:\nginx-1.16.1\nginx-server.exe install
2019-11-12 15:34:26,555 INFO - Installing the service with id 'Nginx'
D:\nginx-1.16.1>net start Nginx
Nginx 服务正在启动 .
Nginx 服务已经启动成功。

注册Nginx服务方法二

下载Windows Server 2003 Resource Kit Tools

其实我们只需要里边instsrv.exe、srvany.exe这两个工具
https://www.microsoft.com/en-IE/download/details.aspx?id=17657

注册Nginx服务

安装完上述工具,打开C:\Program Files (x86)\Windows Resource Kits\Tools, 复制srvany.exe到nginx.exe同级目录下。

1
sc create "Nginx" binPath="D:\deploy\nginx-1.12.1\srvany.exe" start=auto

导入注册表

复制一下内容,保存为.reg格式文件,双击导入到注册表

1
2
3
4
5
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Nginx\Parameters]
"Application"="D:\\deploy\\nginx-1.12.1\\nginx.exe"
"AppParameters"=""
"AppDirectory"="D:\\deploy\\nginx-1.12.1"

启动关闭服务

1
2
3
4
5
6
7
# 启动
C:\>net start Nginx
Nginx 服务正在启动 .
Nginx 服务已经启动成功。
# 关闭
windows下nginx默认会启动两个进程,如果使用net stop Nginx的话只能关闭一个nginx进程,不能完全关闭
taskkill /F /IM nginx.exe

参考资料:
http://www.cnblogs.com/xwdreamer/p/3411986.html
http://wlbbswl.iteye.com/blog/840538
https://blog.csdn.net/qq_16022261/article/details/53836004
http://koda.iteye.com/blog/600725

独学无友,孤陋寡闻;学习记录,欢迎拍砖!