三、Tomcat常用配置:
1、配置Server Status、Manager App和Host 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”:
点击“Manager App”:
点击“Host Manager”:
备注:用户名和密码均为tomcat和123456,Server Status和Manager 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
3、 在一台服务器中同时部署多个版本的JDK和Tomcat:
(1)取消之前配置的CATALINA_HOME环境变量:# cd /etc/profile.d # mv tomcat.sh tomcat.sh.bak # logout
(2)查看系统中已安装的JDK和Tomcat版本:# /usr/local/tomcat/bin/catalina.sh version
(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默认端口(redirectPort)8443:HTTPS协议请求处理端口,修改为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
# /apache-tomcat-7.0.91/bin/startup.sh
# ss -tunlp
# ps -ef | grep java
(8)浏览器中分别访问apache-tomcat-7.0.91和apache-tomcat-8.0.53:
4、使用Manager App部署本地war包:
点击“选择文件”,找到本地需要部署的war包test.war,再点击“Deploy”:
直接热部署成功,浏览器中访问http://192.168.1.145:8080/test
# ls -lh /usr/local/tomcat/webapps
还可以通过Manager App停止、重载和解除部署应用程序
点击“Undeploy”按钮后会自动删除此应用程序:
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 "%r" %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 10的C:\Windows\System32\drivers\etc\hosts文件,末尾新增如下代码:
192.168.1.145 web.qiuyue.com
浏览器中访问:
http://web.qiuyue.com:8080/myapp/
http://192.168.1.145:8080
备注:使用IP访问的就是<Engine name="Catalina" defaultHost="localhost">中名为localhost的默认主机
6、在示例5的基础上基于IP实现访问控制,拒绝IP为192.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 "%r" %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/
http://192.168.1.145:8080
在192.168.199.157(Windows 10,使用×××,同样需要修改hosts文件)的浏览器中访问:
http://web.qiuyue.com:8080/myapp/
在CentOS 7.5主机192.168.1.146上编辑/etc/hosts文件,末尾新增代码:192.168.1.145 web.qiuyue.com
# curl http://web.qiuyue.com:8080/myapp/
7、在示例5的基础上配置HTTPS:
(1)配置HTTPS之前访问http://web.qiuyue.com:8080/myapp/
(2)生成SSL证书:
# keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.keystore -validity 36500
备注:各选项含义
Ø -alias:表示证书的别名
Ø -keyalg RSA:表示使用RSA密钥算法
Ø -keystore:证书保存的位置
Ø -validity:证书的有效时间
# keytool -importkeystore -srckeystore /usr/local/tomcat/conf/tomcat.keystore -destkeystore /usr/local/tomcat/conf/tomcat.keystore -deststoretype pkcs12
备注:上述所有涉及到的密码均为Root_123456
# ls -lh /usr/local/tomcat/conf | grep keystore
(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/
http://192.168.1.145:8080
此处不演示如何导入证书