Tomcat常用配置

1、配置Server Status、Manager AppHost Manager:

# vim /usr/local/tomcat/conf/tomcat-users.xml,在末尾</tomcat-users>标签上方新增如下代码:

<role rolename="manager-gui"/>

<role rolename="admin-gui"/>

<user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>

# catalina.sh stop  # catalina.sh configtest  # catalina.sh start  # ss -tunlp | grep -w :8080

点击“Server Status”:

image.png

image.png

点击“Manager App”:

image.png

image.png

点击“Host Manager”:

image.png

image.png

备注:用户名和密码均为tomcat123456Server StatusManager App共用一个验证规则

2、Tomcat访问静态资源:

# cd /usr/local/tomcat/webapps/ROOT

# mkdir -pv images

# cd images

上传一张图片test.png

浏览器中访问http://192.168.1.145:8080/images/test.png

image.png

3、 在一台服务器中同时部署多个版本的JDKTomcat

(1)取消之前配置的CATALINA_HOME环境变量:# cd /etc/profile.d  # mv tomcat.sh tomcat.sh.bak  # logout

(2)查看系统中已安装的JDKTomcat版本:# /usr/local/tomcat/bin/catalina.sh version

image.png

(3)解压jdk-7u80-linux-x64.tar.gz# tar -xf jdk-7u80-linux-x64.tar.gz

(4)解压apache-tomcat-7.0.91.tar.gz# tar -xf apache-tomcat-7.0.91.tar.gz

(5)修改apache-tomcat-7.0.91的端口号:# vim /apache-tomcat-7.0.91/conf/server.xml

Ø  SHUTDOWN默认端口8005:接收服务器关闭指令的端口,修改为8006

Ø  HTTP默认端口8080:接收HTTP请求的端口,修改为8081

Ø  HTTPS默认端口(redirectPort8443HTTPS协议请求处理端口,修改为8444

Ø  AJP默认端口8009:接收AJP请求的端口,修改为8010

(6)修改apache-tomcat-7.0.91的脚本文件:

# vim /apache-tomcat-7.0.91/bin/setclasspath.sh,第2行新增代码:export JAVA_HOME=/jdk1.7.0_80

# vim /apache-tomcat-7.0.91/bin/catalina.sh,第2行新增代码:export JAVA_HOME=/jdk1.7.0_80

(7)启动apache-tomcat-7.0.91

# /apache-tomcat-7.0.91/bin/version.sh

image.png

# /apache-tomcat-7.0.91/bin/startup.sh

image.png

# ss -tunlp

image.png

# ps -ef | grep java

image.png

(8)浏览器中分别访问apache-tomcat-7.0.91apache-tomcat-8.0.53

image.png

image.png

4、使用Manager App部署本地war包:

image.png

点击“选择文件”,找到本地需要部署的wartest.war,再点击“Deploy”:

image.png

直接热部署成功,浏览器中访问http://192.168.1.145:8080/test

image.png

# ls -lh /usr/local/tomcat/webapps

image.png

还可以通过Manager App停止、重载和解除部署应用程序

image.png

image.png

点击“Undeploy”按钮后会自动删除此应用程序:

image.png

image.png

5、自定义Host虚拟主机:

# vim /usr/local/tomcat/conf/server.xml</Host></Engine>之间新增如下代码:

<Host name="web.qiuyue.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="true">

<Context path="" docBase="" reloadable="true" />

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs" prefix="web_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

# mkdir -pv /data/{webapps,logs}

# mkdir -pv /data/webapps/myapp/{META-INF,WEB-INF}

# mkdir -pv /data/webapps/myapp/WEB-INF/{classes,lib}

# vim /data/webapps/myapp/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>

<head>

<title>JSP Test Page</title>

</head>

<body>

<% out.println("Hello JSP"); %>

</body>

</html>

备注:Java WebApp目录结构

Ø  META-INF/:用于存放应用程序自用的context.xml,是应用程序的私有资源目录,其内部的所有文件和子目录均不能被客户端公开访问,只有服务端可以访问

Ø  WEB-INF/:用于存放应用程序的配置文件web.xml(程序结构描述符文件),是应用程序的私有资源目录,其内部的所有文件和子目录均不能被客户端公开访问,只有服务端可以访问

  u  classes/:用于存放此应用程序的私有类

  u  lib/:用于存放此应用程序的私有类,且被打包为jar格式类

Ø  index.jsp:应用程序的主页

# catalina.sh stop  # catalina.sh configtest  # catalina.sh start  # ss -tunlp | grep -w :8080

修改本地Windows 10C:\Windows\System32\drivers\etc\hosts文件,末尾新增如下代码:

192.168.1.145 web.qiuyue.com

浏览器中访问:

http://web.qiuyue.com:8080/myapp/

image.png

http://192.168.1.145:8080

image.png

备注:使用IP访问的就是<Engine name="Catalina" defaultHost="localhost">中名为localhost的默认主机

6、在示例5的基础上基于IP实现访问控制,拒绝IP192.168.1.151的主机访问:

# vim /usr/local/tomcat/conf/server.xml,新增如下红色部分的代码:

<Host name="web.qiuyue.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="true">

<Context path="" docBase="" reloadable="true" />

<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192.168.1.151" />

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs" prefix="web_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

备注:Valve写在Context中不会生效,与deny对应的是allow

# catalina.sh stop  # catalina.sh configtest  # catalina.sh start  # ss -tunlp | grep -w :8080

使用3台主机进行测试:

192.168.1.151的浏览器中访问:

http://web.qiuyue.com:8080/myapp/

image.png

http://192.168.1.145:8080

image.png

192.168.199.157Windows 10,使用×××,同样需要修改hosts文件)的浏览器中访问:

http://web.qiuyue.com:8080/myapp/

image.png

CentOS 7.5主机192.168.1.146上编辑/etc/hosts文件,末尾新增代码:192.168.1.145 web.qiuyue.com

# curl http://web.qiuyue.com:8080/myapp/

image.png

7、在示例5的基础上配置HTTPS

(1)配置HTTPS之前访问http://web.qiuyue.com:8080/myapp/

image.png

(2)生成SSL证书:

# keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.keystore -validity 36500

image.png

备注:各选项含义

Ø  -alias:表示证书的别名

Ø  -keyalg RSA:表示使用RSA密钥算法

Ø  -keystore:证书保存的位置

Ø  -validity:证书的有效时间

# keytool -importkeystore -srckeystore /usr/local/tomcat/conf/tomcat.keystore -destkeystore /usr/local/tomcat/conf/tomcat.keystore -deststoretype pkcs12

image.png

备注:上述所有涉及到的密码均为Root_123456

# ls -lh /usr/local/tomcat/conf | grep keystore

image.png

(3)修改主配置文件server.xml

# vim /usr/local/tomcat/conf/server.xml,取消如下代码的注释并修改:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />

-->

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat/conf/tomcat.keystore" keystorePass="Root_123456" />

备注:可以将端口号修改为443

(4)将所有http请求自动跳转至https请求,修改配置文件web.xml

# cd /usr/local/tomcat/conf

# cp web.xml web.xml.bak

# vim web.xml,在末尾</web-app>前新增如下代码:

<security-constraint>

<web-resource-collection>

<web-resource-name>SSL</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

# catalina.sh stop  # catalina.sh configtest  # catalina.sh start  # ss -tunlp | grep -w :8080

(5)浏览器中访问:

http://web.qiuyue.com:8080/myapp/

image.png

image.png

image.png

http://192.168.1.145:8080

image.png

此处不演示如何导入证书