三、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
此處不演示如何導入證書