淺談Tomcat安裝

博文結構
tomcat介紹
Tomcat組件及其特點
安裝Tomcat
自定義目錄
開啓JMX遠程調試功能
使用https訪問tomcat服務器

一.Tomcatl介紹

Tomcat是apache軟件基金會項目中的一個核心項目,有apache和sun其他一些公司及個人共同開發而成的Tomcat服務器是一個免費的開放源代碼的web應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是多的場合下被普遍使用,是開發和調試jsp程序的首選。
可以這樣認爲,當一臺服務器配置好apache服務器以後,可以利用apache服務器來響應我們的html頁面的訪問請求,而tomcat是 apahce 服務器的擴展,當你運行tomcat的時候實際上是作爲一個apache獨立的進程單獨運行的,apache服務器爲html頁面提供服務的,而tomcat是運行jsp頁面和servlet,另外tomcat也能具有處理html頁面的功能,但是處理靜態的能力沒有apache處理好。

二.Tomcat組件及其特點

  • tomcat組件

servlet(應用程序或者容器)是java提供的用於開發web服務器應用程序的一個組件,運行在服務器端,有servlet用於生成動態頁面內容,servlet是平臺立的java類,編寫一個servlet,實際上就是安裝servlet規範編寫一個java類

  • 什麼是servlet ?

Tomcat 處理請求和響應的過程是由servlet的程序來完成的,並且servlet是爲例解決實現動態頁面而衍生的東西,與我們之前瞭解的nginx或者apache想要實現動態頁面需要和php服務器溝通的過程差不多,可以把servlet比作成php

淺談Tomcat安裝

Tomcat 是web應用服務器,是一個servlet/jsp容器,tomcat作爲servlet容器,負責處理客戶請求,並將servlet的響應傳送給客戶,而servlet是一種運行在java語言的服務器上的組件,servlet最常見的用途是擴展java web服務器功能,提供非常安全的,可以移植的(打包網頁代碼就可以在另外一個環境中運行,如linux系統跟windows環境),易於使用cgi替代品。

  • Tomcat處理數據的流程

1、瀏覽器發送請求數據
2、tomcat收到服務器的請求數據,由servlet容器處理並進行解析,並且把客戶端的數據請求request改變成servlet request 交給後端的servlet 實例(或者或叫對象)實例收到客戶端的請求數據的請求對象,進行出處理客戶端的請求,處理完成後將數據響應給servlet容器,響應給servlet容器叫做servlet response。
3、Servlet收到的實例的響應數據交給客戶端(如圖)
淺談Tomcat安裝
Servlet(tomcat)容器與servlet實例需要通過java servlet api接口進行通信,api接口是由開發人員在寫代碼的時候定義或者編寫的
4.servlet容器將收到的響應數據交給客戶端

  • Servlet和jsp的區別

Servlet在Java代碼中可以通過HttpServletResponse對象動態輸出HTML內容;

JSP在靜態HTML內容中嵌入Java代碼,然後Java代碼在被動態執行後生成HTML頁面;

  • tomcat的特點

運行時佔用的資源小,擴展性好,支持負載均衡和郵件服務器等開發應用系統常用的功能

三.安裝tomcat

下載Tomcat所需的軟件包

  • 安裝Tomcat需要系統Java環境1.8版本以上,Centos 7默認就已經支持Java環境1.8版本,由於現在大部分使用還是Centos 6的系統,,由於本人採用的Centos 7系統,所以首先需要卸載JDK環境。
[root@localhost ~]# rpm -qa | grep jdk  
\\查詢已安裝的jdk包
copy-jdk-configs-1.2-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
[root@localhost ~]# rpm -e java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64  java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 --nodeps
\\卸載系統自帶的jdk環境
[root@localhost ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# vim /etc/profile
//編寫系統環境變量,在最後一行加以下內容
export  JAVA_HOME=/usr/local/jdk1.8.0_211              //指定java的路徑
export  JRE_HOME=/usr/local/jdk1.8.0_211/jre           //java運行環境
export  CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
                                                                                    //聲明java中的類,類就是一類事務的屬性,如各種蓋飯最終他們的屬性是飯
export  PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
                                                                                    //將定義的變量添加到系統環境變量中
[root@localhost ~]# source /etc/profile                        //重新加載系統環境變量文件

[root@localhost ~]# tar zxf apache-tomcat-8.5.35.tar.gz 
[root@localhost ~]# mv apache-tomcat-8.5.35 /usr/local/tomcat
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh  \\啓動tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# netstat -anpt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      16320/java      
  • 現在可以用客戶端訪問測試

淺談Tomcat安裝

  • Tomcat目錄說明
    [root@localhost ~]# ls /usr/local/tomcat/
    bin conf lib logs README.md RUNNING.txt webapps
    BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
Bin:存放windows或linux平臺上啓動或者關閉tomcat的腳本文件
Conf:存放tomcat服務器的全局配置文件,其中最重要的是server.xml和web.xml
Lib:tomcat運行需要的庫文件(jars)
Logs:tomcat運行時產生的日誌文件
Temp:臨時文件存放目錄
Work:tomcat的工作目錄,存放tomcat運行時的編譯配置文件
Webapps:網頁文件存放路徑
Tomcat常用配置文件說明
Server.xml:tomcat的主配置文件,可以設置端口號,設置域名或者IP
Web.xml: 缺省的web app配置(也可以理解爲是實現主配置文件沒有定義到的功能:如目錄遍歷,定義錯誤頁面類型)
Tomcat-users.xml:用來配置管理tomcat的用戶與權限
  • tomcat中server.xml文件結構

淺談Tomcat安裝

Server:代表整個容器,實例的頂層元素,一個配置文件中只能有一個server元素,可以包含多個service。比如:

<Server port="8005" shutdown="SHUTDOWN">
//表示關閉Tomcat,使用telnet連接8005,輸入shutdown指令

Service:提供完整jvm的獨立組件,jvm表示Java虛擬機,是一個虛構出來的虛擬機,可以包含一個engine包含多個connector;

  <Service name="Catalina">
//代表接受所有tomcat接受的請求,如果是Service name="apache"則表示接受所有apache轉發過來的請求

Connector:接口定義,負責接受客戶端的請求,以及向客戶端返回響應的結構;

<Connector port="8080" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />
//port:接受數據的端口;protocol:設置http協議;
//Connection Timeout:與客戶端的連接超時時間,-1代表不限制客戶端的連接時間;
//Redirectport :當客戶端請求是https將請求轉發到8443去

Engine:處理客戶端的請求,可以包含多個hots;

<Engine name="Catalina" defaultHost="localhost">

//name:是引擎名稱,處理客戶的請求默認去尋找localhost
Host:定義的虛擬主機,爲特定的虛擬主機處理所有的客戶端請求;

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

Context:運行在虛擬主機中的單個web應用;

  • Tomcat處理http請求過程

淺談Tomcat安裝

過程

①用戶點擊網頁內容,請求被髮送到本機端口8080,被在那裏監聽的Coyote HTTP/1.1 Connector獲得;
②Connector把該請求交給它所在的Service的Engine來處理,並等待Engine的迴應;
③Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host;
④Engine匹配到名爲localhost的Host(即使匹配不到也把請求交給該Host處理,因爲該Host被定義爲該Engine的默認主機),名爲localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有的Context。Host匹配到路徑爲/test的Context(如果匹配不到就把該請求交給路徑名爲“ ”的Context去處理);
⑥path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL PATTERN爲*.jsp的Servlet,對應於JspServlet類;
⑥構造HttpServletRequest對象和HttpServletResponse對象,作爲參數調用JspServlet的doGet()或doPost().執行業務邏輯、數據存儲等程序;
⑦Context把執行完之後的HttpServletResponse對象返回給Host;
⑧Host把HttpServletResponse對象返回給Engine;
⑨Engine把HttpServletResponse對象返回Connector;
⑩Connector把HttpServletResponse對象返回給客戶Browser;

四.自定義目錄

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml 
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
\\在zhe這個Hostname下添加以下內容
<Context path = "/xws" docBase = "/data/project" debug = "0" reloadable  = "false" crossContext = "true">     
        </Context>
  • 相關解釋
Path:指出訪問的路徑
docBase:指定存放的路徑
Debug:指定debug的等級爲0輸出信息最少,9提供最多信息
Reloadable:爲ture時當web.xml文件有改動的時候自動重新加載,不用重啓服務
CorssContext:爲ture時表示不同的context共享一個session(會話池)
[root@localhost ~]# mkdir -p /data/project
[root@localhost ~]# vim /data/project/index1.jsp
aaaaaaa
[root@localhost ~]# vim /data/project/index2.jsp
bbbbbbb
  • 開啓tomcat目錄遍歷
[root@localhost ~]# vim /usr/local/tomcat/conf/web.xml
\\大約在112行中把false改爲true

淺談Tomcat安裝

  • 重啓服務
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh   \\關閉服務
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh        \\啓動服務
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
  • 客戶端訪問驗證

淺談Tomcat安裝

淺談Tomcat安裝

五.自定義監控頁面

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml 
//在host中添加
 <Context path="/jiankong" docBase="/jk/jiankong" debug="0" reloadable="    false" crossContext="true"/>

淺談Tomcat安裝

[root@localhost /]# mkdir /jk/jiankong -p
[root@localhost /]# vim /jk/jiankong/index.jsp
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;

out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory: "+tm+"MB"+"<br>");
out.println("Free memory: "+fm+"MB"+"<br>");
out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
    %>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh                  //重啓tomcat服務
  • 訪問如下

淺談Tomcat安裝

六.開啓JMX遠程調試功能

[root@localhost /]# vim /usr/local/tomcat/bin/catalina.sh 

#----- Execute The Requested Command -----------------------------------------        //填寫的內容必須在這行下面大約在309行

CATALINA_OPTS=" $CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
[root@localhost /]# cd /usr/local/jdk1.8.0_211/jre/lib/management/
[root@localhost management]# cp jmxremote.password.template jmxremote.password
[root@localhost management]# vim jmxremote.password  //在最後一行添加,定義用戶爲xws,密碼爲123456,使用“wq!”強制保存退出
xws     123456
[root@localhost management]# vim jmxremote.access  //定義用戶權限的文件
xws   readwrite \                                       //在倒數第三行。把原有的用戶改爲xws
[root@localhost management]# chmod 600 jmxremote.access 
[root@localhost management]# chmod 600 jmxremote.password
[root@localhost management]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost management]# /usr/local/tomcat/bin/startup.sh 
[root@localhost ~]# netstat -anpt | grep 8888
tcp6       0      0 :::8888                 :::*                    LISTEN      58760/java   
//確認剛纔定義的端口8888在監聽
  • 由於其爲圖像化界面,所以需要在桌面環境下執行以下命令
[root@localhost /]# . /etc/profile
\\更新環境變量
[root@localhost /]# jconsole

淺談Tomcat安裝

淺談Tomcat安裝

淺談Tomcat安裝

七.配置使用https訪問tomcat服務器

[root@localhost /]# keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.keystore -validity 36500
//alias:別名,這裏設置爲tomcat;
//keyalg:證書算法,RSA;
//validity:證書有效期,單位爲天
//keystore:指定證書存放路徑,可以自定義

輸入密鑰庫口令:  
再次輸入新口令: 
您的名字與姓氏是什麼?
  [Unknown]:  xws
您的組織單位名稱是什麼?
  [Unknown]:  aaa
您的組織名稱是什麼?
  [Unknown]:  bbb
您所在的城市或區域名稱是什麼?
  [Unknown]:  ccc
您所在的省/市/自治區名稱是什麼?
  [Unknown]:  wwwe
該單位的雙字母國家/地區代碼是什麼?
  [Unknown]:  qwe
CN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe是否正確?
  [否]:  y

正在爲以下對象生成 2,048 位RSA密鑰對和自簽名證書 (SHA256withRSA) (有效期爲 36,500 天):
     CN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe
輸入 <tomcat> 的密鑰口令
    (如果和密鑰庫口令相同, 按回車):  
[正在存儲/usr/local/tomcat/conf/tomcat.keystore]

Warning:
JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore /usr/local/tomcat/conf/tomcat.keystore -destkeystore /usr/local/tomcat/conf/tomcat.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml   //可以添加也可以從原有的內容稍作修改即可
 <Connector port="443"   protocol="org.apache.coyote.http11.Http11NioProtocol"                   //將原本的8443改爲443
               maxThreads="150" SSLEnabled="true"
                keystoreFile="/usr/local/tomcat/conf/tomcat.keystore"                   //指定證書存放路徑
               keystorePass="123456">                      //指定生成證書所輸入的密碼
     </Connector>

[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh      
  • 訪問如下:

淺談Tomcat安裝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章