配置Tomcat为Windows系统服务

1. Tomcat安装概述

Tomcat官网提供了多种类型的安装包供下载使用,针对 Windows 操作系统,主要存在如下几个版本:

  • zip
  • 32-bit Windows zip
  • 64-bit Windows zip
  • 32-bit/64-bit Windows Service Installer

简单来看,就是两类:zip压缩包和服务安装版,前三个版本都是.zip

一般首选zip压缩包,免安装,解压就可使用。

在开发阶段,使用bin\startup.bat启动、停止服务器,很方便。
但在生产环境下,每次都停留一个黑色的命令行窗口,且都要手工启停很是麻烦,也容易被不小心关掉。

当然也有好处,可以直接观察运行日志的输出,了解服务运行情况

2. 配置Tomcat为系统服务

为了能够开机自动启动,没有黑窗口,通常会选择将Tomcat配置为系统服务,并设置自动启动。

具体方法有两种:

  1. 直接下载安装Windows Service Installer版本
    双击安装后,会自动配置为Windows服务,并提供系统运行托盘(在任务栏右下角出现)。

  2. 使用zip压缩包版本,手工配置为系统服务。
    Tomcat在安装目录的bin路径下,提供了service.bat脚本,来帮助我们将Tomcat配置为系统服务。

对于方法1,没有必要说明,主要介绍如何用方式2。

2.1 使用Tomcat自带的service.bat配置系统服务

service.bat 提供了install、remove/uninstall两个可选操作,分别对应"安装服务","移除服务"。

(1) 安装Tomcat服务

Step 1 : 打开cmd,使用cd命令切换到tomcat安装目录/bin路径下。

cd c:\tomcat8.5.43\bin

Step 2 : 在cmd窗口,输入 service install 服务名称 创建为Windows系统服务。
也可以不指定服务名称,会默认服务名称为 Tomcat + 当前的Tomcat主版本号,如 "Tomcat8"。

c:\tomcat8.5.43\bin>service install tomcat-instance-1

如上,服务名为: tomcat-instance-1

Step3 : 打开Windows的服务管理窗口,编辑服务属性,设置为自动启动。

① 打开服务窗口

在命令行输入

c:\tomcat8.5.43\bin>services.msc

② 查找名为 "Apache Tomcat 8.5 tomcat-instance-1" 的系统服务

service.bat 创建的服务显示名规则为 Apache Tomcat 8.5 + 服务名称

③ 选中服务,右键属性,修改启动类型为"自动"。

(2)移除Tomcat服务
移除相对简单很多,直接在service.bat所在路径下(也就是bin路径下),输入

c:\tomcat8.5.43\bin>service remove tomcat-instance-1

关于运行的说明:
配置为Windows服务后,在其服务属性的常规选项卡中,可以查看到有一项
可执行文件路径: c:\tomcat8.5.43\bin\tomcat8.exe //RS//tomcat-instance-1”

可以看出,启动服务实际执行的是tomcat8.exe,其中的//RS//参数指定运行名为tomcat-instance-1的服务。

解释一下

  • tomcat8.exe 是创建、启动、更新、删除Tomcat服务的服务管理程序,service.bat本质上是对它的调用。
  • tomcat8w.exe,是监控、配置Tomcat服务的图形化应用程序

它们的用途和可用参数,具体请参考官方的Doc

2.2 指定Tomcat服务使用非“环境变量”配置的JDK

在一个服务器上可能同时运行着多个Tomcat,不同的Tomcat版本对JDK的版本要求不同。

配置为Windows服务的Tomcat,如果没有做额外配置,会默认使用操作系统的环境变量设置中的JAVA_HOME、JRE_HOME作为JDK路径(默认先搜索JAVA_HOME,没有,再搜索JRE_HOME,再没有,报错)。

有几种方式来配置Tomcat Windows服务使用的JDK
(1) 修改service.bat文件,指定JAVA_HOME为目标JDK路径,再移除/重新安装为系统服务
在service.bat文件开头,加入

set JAVA_HOME=D:\java\jdk1.8.0_191

前面说过,service.bat安装时,默认使用系统环境变量中的JAVA_HOME、JRE_HOME作为JDK路径,这里在其脚本中重新指定目标JDK就可以解决。

但要移除/重新安装走一遍,有那么点不科学。对,就是DRY的感觉!

(2)使用tomat8w.exe修改服务参数
tomcat8w.exe,是监控、配置Tomcat服务的图形化应用程序,可以对Tomcat服务做配置。

① 打开tomcat8w.exe 服务配置窗口
如果是默认服务名,直接双击tomcat8w.exe即可

如果不是,则在cmd中,输入

c:\tomcat8.5.43\bin>tomcat8w \\ES\\tomcat-instance-1

也可以复制tomcat8w.exe,并重命名为要配置的Tomcat服务名w.exe,例如这里的: tomcat-instance-1w.exe,然后双击打开。

② 修改Java路径
打开 Java 选项卡,修改 Java Virtual Machine 值为 目标JDK + "\bin\server\jvm.dll"

如:

D:\java\jdk1.8.0_191\bin\server\jvm.dll

2.3 配置Tomcat服务总结

对配置过程,优化并归纳总结如下:

  • 修改service.bat,在第一句代码后,添加 set JAVA_HOME=目标JDK路径
  • 打开cmd窗口,输入 service install 服务名称
  • 复制tomcat8w.exe,重命名为服务名w.exe,再双击打开;
  • 在打开的服务配置窗口的“General”选项卡中,设置“Startup Type”为“Automatic”。

3. Tomcat (非Windows服务的)配置建议

额外补充一些Tomcat (非Windows服务)的配置细节:

  • startup.bat 调用 catalina.bat start 来启动Tomcat
  • catalina.bat 调用 setclasspath.bat 来设置Tomcat运行使用的JDK路径
  • setclasspath.bat 用来配置Java,如检测到JAVA_HOME或JRE_HOME为空时,会使用环境变量中的JAVA_HOME或JRE_HOME值。

根据这个过程,可以看出catalina.bat才是核心脚本。
因此对Tomcat做非Windows服务的配置,建议直接修改catalina.bat文件。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容