CentOS7系統部署安裝Tomcat服務(理論+實戰)

1、Tomcat 介紹

自從 JSP 發佈之後,推出了各式各樣的 JSP 引擎。Apache Group 在完成 GNUJSP1.0 的開發以後,開始考慮在 SUN 的 JSWDK 基礎上開發一個可以直接提供 Web 服務的 JSP 服務器,當然同時也支持 Servlet, 這樣 Tomcat 就誕生了。

Tomcat 是 Apache 軟件基金會(Apache Software Foundation)的 Jakarta 項目中的一個核心項目,由 Apache、Sun 和其他一些公司及個人共同開發而成。其被 JavaWorld 雜誌的編輯選爲 2001 年度最具創新的 Java 產品,同時它又是 sun 公司官方推薦的 Servlet和 JSP 容器,因此其越來越多的受到軟件公司和開發人員的喜愛。由於有了 Sun 的參與和支持,最新的 Servlet 和 JSP 規範總是能在 Tomcat 中得到體現,Tomcat 5 支持最新的Servlet 2.4 和 JSP 2.0 規範。因爲 Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成爲目前比較流行的 Web 應用服務器。

Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。對於一個初學者來說,可以這樣認爲,當在一臺機器上配置好 Apache 服務器,可利用它響應 HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上,Tomcat 是 Apache服務器的擴展,但運行時它是獨立運行的,所以當運行 Tomcat 時,它實際上作爲一個與Apache 獨立的進程單獨運行的。

當配置正確時,Apache 爲 HTML 頁面服務,而 Tomcat 實際上運行 JSP 頁面和 Servlet。另外,Tomcat 和 IIS 等 Web 服務器一樣,具有處理 HTML 頁面的功能,另外它還是一個 Servlet和 JSP 容器,獨立的 Servlet 容器是 Tomcat 的默認模式。不過,Tomcat 處理靜態 HTML 的能力不如 Apache 服務器。

2、Tomcat 核心組件

通常意義上的 Web 服務器接受請求後,只是單純地響應靜態資源,如 HTML 文件,圖片文件等,不能在後端進行一定的處理操作。Tomcat 是 Apache 下的一個子項目,它具備 Web服務器的所有功能,不僅可以監聽接受請求並響應靜態資源,而且可以在後端運行特定規範的 Java 代碼 Servlet,同時將執行的結果以 HTML 代碼的形式寫回客戶端。

Tomcat 由一系列的組件構成,其中核心的組件有三個:

1)Web 容器:完成 Web 服務器的功能。
2)Servlet 容器:名字爲 catalina,用於處理 Servlet 代碼。
3)JSP 容器:用於將 JSP 動態網頁翻譯成 Servlet 代碼。

3、Tomcat處理請求過程

1.用戶在瀏覽器中輸入網址localhost:8080/test/index.jsp,請求被髮送到本機端口8080,被在那裏監聽的Coyote HTTP/1.1 Connector獲得;

2.Connector把該請求交給它所在的Service的Engine(Container)來處理,並等待Engine的迴應;

3.Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host;

4.Engine匹配到名爲localhost的Host(即使匹配不到也把請求交給該Host處理,因爲該Host被定義爲該Engine的默認主機),名爲localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有Context。Host匹配到路徑爲/test的Context(如果匹配不到就把該請求交給路徑名爲“ ”的Context去處理);

5.path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL Pattern爲*.jsp的Servlet,對應於JspServlet類;

6.構造HttpServletRequest對象和HttpServletResponse對象,作爲參數調用JspServlet的doGet()或doPost(),執行業務邏輯、數據存儲等;

7.Context把執行完之後的HttpServletResponse對象返回給Host;

8.Host把HttpServletResponse對象返回給Engine;

9.Engine把HttpServletResponse對象返回Connector;

10.Connector把HttpServletResponse對象返回給客戶Browser。

4、Tomcat目錄結構

[root@localhost ~]# ll /usr/local/tomcat/
總用量 124
drwxr-x--- 2 root root  4096 3月   7 22:34 bin
-rw-r----- 1 root root 19203 2月   5 00:32 BUILDING.txt
drwx------ 3 root root   254 3月   7 22:36 conf
-rw-r----- 1 root root  6095 2月   5 00:32 CONTRIBUTING.md
drwxr-x--- 2 root root  4096 3月   7 22:34 lib
-rw-r----- 1 root root 57092 2月   5 00:32 LICENSE
drwxr-x--- 2 root root   197 3月   7 22:36 logs
-rw-r----- 1 root root  2333 2月   5 00:32 NOTICE
-rw-r----- 1 root root  3255 2月   5 00:32 README.md
-rw-r----- 1 root root  6854 2月   5 00:32 RELEASE-NOTES
-rw-r----- 1 root root 16262 2月   5 00:32 RUNNING.txt
drwxr-x--- 2 root root    30 3月   7 22:34 temp
drwxr-x--- 7 root root    81 2月   5 00:31 webapps
drwxr-x--- 3 root root    22 3月   7 22:36 work

----------------------------------------------------------
●bin
存放啓動和關閉 Tomcat 的腳本文件,比較常用的是 catalina.sh、startup.sh、
shutdown.sh 三個文件

●conf
存放 Tomcat 服務器的各種配置文件,比較常用的是 server.xml、context.xml、
tomcat-users.xml、web.xml 四個文件。

●lib
存放 Tomcat 服務器的 jar 包,一般不作任何改動,除非連接第三方服務,比如 redis,
那就需要添加相對應的 jar 包

●logs
存放 Tomcat 日誌

●temp
存放 Tomcat 運行時產生的文件

●webapps
存放項目資源的目錄

●work
Tomcat 工作目錄,一般清除 Tomcat 緩存的時候會使用到

5、Tomcat部署步驟

(1)宿主機將所需工具包共享出去

(2)掛載工具包並安裝JDK

在部署 Tomcat 之前必須安裝好 jdk,因爲 jdk 是 Tomcat 運行的必要環境。

[root@localhost ~]# mkdir /mnt/tools
[root@localhost ~]# mount.cifs //192.168.100.50/tools /mnt/tools   #掛載共享文件到Linux本地目錄中
Password for root@//192.168.100.50/tools:  
[root@localhost ~]# cd /mnt/tools/tomcat/   #進入本地目錄查看
[root@localhost tomcat]# ls
12D18CFCD6599AFF0445766ACC4CA231C5025773.torrent  apache-jmeter-5.1.zip        jdk-8u201-linux-x64.rpm
apache-jmeter-5.1                                 apache-tomcat-9.0.16.tar.gz  tomcat優化壓測.jmx
[root@localhost tomcat]# rpm -ivh jdk-8u201-linux-x64.rpm    #安裝JDK

(3)設置環境變量/etc/profile文件

[root@localhost tomcat]# cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# pwd
/usr/java/jdk1.8.0_201-amd64   #確認JDK安裝的目錄路徑
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile
#在文件的末行追加一下三條申明條目
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
#申明java的工作目錄
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#申明java類文件的位置
export PATH=$JAVA_HOME/bin:$PATH
#申明java環境變量
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile   #生效環境變量
[root@localhost jdk1.8.0_201-amd64]# 
[root@localhost jdk1.8.0_201-amd64]# java -version   #查看版本
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
[root@localhost jdk1.8.0_201-amd64]# 

(4)安裝並啓動Tomcat服務

[root@localhost jdk1.8.0_201-amd64]# cd /mnt/tools/tomcat/
[root@localhost tomcat]# tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/
#解壓tomcat包到/usr/local/目錄中
[root@localhost tomcat]# cd /usr/local/
[root@localhost local]# mv apache-tomcat-9.0.16/ tomcat     #改名apache-tomcat-9.0.16文件爲tomcat
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat
[root@localhost local]# 
[root@localhost local]# cd tomcat/bin/   #切換到tomcat目錄下的bin目錄,這裏有控制tomcat服務的腳本
[root@localhost bin]# ls
bootstrap.jar       ciphers.bat                   configtest.bat  digest.sh         setclasspath.sh  startup.sh            tool-wrapper.sh
catalina.bat        ciphers.sh                    configtest.sh   makebase.bat      shutdown.bat     tomcat-juli.jar       version.bat
catalina.sh         commons-daemon.jar            daemon.sh       makebase.sh       shutdown.sh      tomcat-native.tar.gz  version.sh
catalina-tasks.xml  commons-daemon-native.tar.gz  digest.bat      setclasspath.bat  startup.bat      tool-wrapper.bat
[root@localhost bin]# ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
#創建tomcat啓動腳本的軟鏈接到系統目錄中,方便系統識別
[root@localhost bin]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/
#創建tomcat關閉腳本的軟鏈接到系統目錄中,方便系統識別
[root@localhost 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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# systemctl stop firewalld.service    #關閉防火牆
[root@localhost bin]# setenforce 0   #關閉增強型安全功能
[root@localhost bin]# netstat -ntap | grep 8080   #查看tomcat服務的8080端口狀態
tcp6       0      0 :::8080                 :::*                    LISTEN      52230/java          
[root@localhost bin]#

(5)瀏覽Tomcat的默認主頁

在瀏覽器中輸入http://192.168.52.132:8080即可訪問到網頁

(6)優化Tomcat啓動時間

[root@localhost bin]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security/
[root@localhost security]# ls
blacklist  blacklisted.certs  cacerts  java.policy  java.security  javaws.policy  policy  trusted.libraries
[root@localhost security]# vim java.security   #修改java.security參數
securerandom.source=file:/dev/urandom
#檢索到random參數條目,將random修改爲urandom,以縮短啓動時間
[root@localhost security]# 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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章