整体环境介绍:
操作系统:WindowsServer 2019
JDK版本:java 8
Tomcat版本:tomcat 9
Tomcat路径:D:\Tomcat9\
1.部署单个服务
项目包路径:D:\Tomcat9\project\test-server\test.war
1.1修改server.xml文件配置
- 删除tomcat默认服务配置信息(选作)
- 配置服务信息(注意黄色部分):
<!--test-server port:12001 -->
<Service name="Catalina">
<Connector port="12001" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="project\test-server"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
PS:
<Service ></Service >标签必须在<Server></Server>标签中!!!
<!--test-server port:12001 -->:为注释内容
port="12001":设置服务端口号
URIEncoding="UTF-8" :设置服务编码方式
appBase="project\test-server" : 指定项目包路径
1.2把tomcat注册成windows服务
- 设置JVM相关运行参数变量:
进入tomcat的bin目录,在catalina.bat文件setlocal后添加如下信息:
set "JAVA_OPTS=%JAVA_OPTS% -Xms9024m -Xmx16240m -Xss512k -Dfile.encoding=UTF-8"
PS:
Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些;
Xmx:java heap最大值,使用的最大内存;
Xss:每个线程的Stack大小。
Dfile.encoding:设置编码方式
- 设置服务名称:
进入tomcat的bin目录,修改service.bat文件内容:
找到set SERVICE_NAME 把值修改为自己想要的名字
set SERVICE_NAME=team02_DeChang
- 注册Windows服务
cmd管理员身份进入tomcat的bin目录,运行如下指令:
service.bat install
运行成功后,会在Windows服务列表中注册一个服务名称为:team02_DeChang的windows服务(注意显示名称还是Tomcat 9)
- 配置Tomcat服务管理工具
复制原来的管理工具,并重命名为注册的服务名称(注册Windows服务时的名称,不是显示名称)
如下图所示:
把tomcat9.exe复制后重命名为:team02_DeChang.exe
把tomcat9w.exe复制后重命名为:team02_DeChangw.exe
- 配置管理工具(按需修改)
双击打开team02_DeChangw.exe文件
General页签中各字段描述如下:
Display name: 服务显示名称
Description:服务描述
Startup type:服务启动类型
一般来说在Java页签中只需设置编码方式和设置内存即可:
2.部署多个服务
2.1一个Tomcat部署多个服务
重点说一下server.xml文件配置,其余操作与单个部署一致。
如:有3个war包,分别为A.war、B.war、C.war。
A.war路径:D:\Tomcat9\project\A-server\A.war
B.war路径:D:\Tomcat9\project\B-server\B.war
C.war路径:D:\Tomcat9\project\C-server\C.war
Server.xml文件只需为每一个服务添加一对<Service>标签即可,如下所示:
<!--A-server port:10001 -->
<Service name="Catalina">
<Connector port="10001 " protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="project\A-server"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<!--B-server port:10002-->
<Service name="Catalina">
<Connector port="10002" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="project\B-server"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<!--C-server port:10003-->
<Service name="Catalina">
<Connector port="10003" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="project\C-server"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
2.2多个服务部署在多个Tocmat上(一个服务对应一个Tomcat)
与部署和注册服务与单个部署一致,注意端口冲突即可
3.为服务配置Https协议
3.1创建Tomcat证书
使用JDK自带的keytool工具来生成证书。
找到本地的jdk安装路径,进入到bin文件夹,执行命令:
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "D:\Office\Java\tomcat.keystore"
命令说明:
命令执行成功后,则可以在相应的目录下查看生成的文件
3.2配置Tomcat服务器
修改server.xml文件
禁用APR监听器 + 切换为NIO协议
1.移除APR监听器:
注释或删除 <Listener className="org.apache.catalina.core.AprLifecycleListener"/>
,避免Tomcat尝试加载APR:
<!-- 注释此行 -->
<!-- <Listener className="org.apache.catalina.core.AprLifecycleListener" /> -->
2.修改Connector协议为NIO
将协议改为高性能的NIO模式,并显式启用SSL:
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="D:\Office\Apache\apache-tomcat-9.0.102\conf\tomcat.keystore"
keystorePass="Phians123"
sslProtocol="TLS"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_RC4_128_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA,
SSL_RSA_WITH_RC4_128_SHA"/>
属性说明:
属性 | 说明 |
clientAuth | 如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证 |
keystoreFile | 指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<CATALINA_HOME>(Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为“.keystore”的文件。 |
keystorePass | 指定keystore的密码,如果此项没有设定,在默认情况下,Tomcat将使用“changeit”作为默认密码。 |
sslProtocol | 指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不应该修改这个默认值。 |
ciphers | 指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。如果此项没有设定,在默认情况下,套接字可以使用任意一个可用的密码。 |
修改完后,保存server.xml文件。
3.3验证
启动Tomcat,输入项目地址即可
未完待续。。。。。。