您好,登錄后才能下訂單哦!
今天講解有關tomcat的安裝部署。
Apache是同步多進程模型,一個連接對應一個進程,而nginx是異步的,多個連接(萬級別)可以對應一個進程。
nginx輕量級,抗并發,處理靜態文件好
Apache超穩定,對PHP支持比較簡單,nginx需要配合其他后端用,處理動態請求有優勢,建議使用前端nginx抗并發,后端apache集群,配合起來會更好。
Apache支持支持模塊多,性能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴展腳本、模塊等支持動態頁面等。但是其配置相對復雜,自身不支持動態頁面。
Nginx,輕量級的HTTP服務器,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。其特點是占有內存少,并發能力強,易于開發,部署方便。Nginx 支持多語言通用服務器。但是,Nginx 只適合靜態和反向代理。其優點在于支持:負載均衡、反向代理、處理靜態文件。Nginx 處理靜態請求的速度高于Apache(3倍以上)。
Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
Tomcat優點
1、兼有可擴du展性和安全性。假如單位時間內訪問請求zhi數急劇增加,可以用相對較低的費dao用增加前端的能力。
2、比較容易擴展。由于是通過在這臺功能強大的服務器上運行的單個servlet容器,實際上也就不需要考慮session狀態在分布式環境下的維護這類復雜的問題。
3、臺后端服務器在外界不可以訪問,網上的黑客只能訪問前端的web服務器,不能直接訪問后端的應用服務器,這就提高了安全性。但這并不意味著黑客們不能通過網絡瀏覽器進行其它形式的攻擊。
對于學習了或者正在學習Java的朋友對Tomcat應該是比較熟悉的了。
最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
其優點在于它是一個動態解析容器,處理動態請求,是編譯JSP/Servlet的容器,其缺點也十分明顯,只能做Java服務器,并且在并發量上有限制。
至于更加深層的原因,需要有一定的架構思想才能深入理解和總結歸納Apache、Nginx和Tomcat的區別于聯系。本文核心是針對初學者而言,主要講解Tomcat的部署操作流程,因此,更深的原因在這里就不再贅述了,但是我們一定要知道“無論什么,存在的就是合理的,而我們所要做的便是透過現象看本質!”
Tomcat 是 Apache 下的一個子項目,它具備 Web 服務器的所有功能,不僅可以監聽接受請求并響應靜態資源,而且可以在后端運行特定規范 的 Java 代碼 Servlet,同時將執行的結果以 HTML 代碼的形式寫回客戶端。
Tomcat的三大核心組件:Web容器、Servlet容器以及JSP容器
1) 請求被發送到本機端口 8080,被在那里偵聽的 Coyote HTTP/11.1 Connector(連接器) 獲得。
2) Connector 把該請求交給它所在的 Service 的 Engine(引擎) 來處理,并等待來自 Engine的回應。
3) Engine 獲得請求 localhost/yy/index.JSP,匹配它所擁有的所有虛擬主機 Host;
Engine 匹配到名為 localhost 的 Host。即使匹配不到也把請求交給該 Host 處理, 因為該 Host 被定義為該 Engine 的默認主機。
4) localhost Host 獲得請求/yy/index.JSP,匹配它所擁有的所有 Context;
Host 匹配到路徑為/yy 的 Context。如果匹配不到,就把該請求交給路徑名為“”的 Context 去處理。
5) path=”/yy”的 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。
或許看了上面的過程,感覺實在是過于復雜,下面給出具體的流程圖,大家可以根據流程圖進行邏輯上的理解:
Connector 用于接收請求并將請求封裝成Request 和Response 來具體處理,(最底層是使用Socket 來進行連接的)其中 Request 和Response 是按照HTTP 協議來封裝的,所以Connector 同時實現了TCP/IP 協議和HTTP 協議, Request 和Response 封裝完后交給Container 進行處理,Container 即Servlet 的容器, Container 處理完之后返回給Connector,最后Connector 使用Socket 將處理結果返回給客戶端,這樣整個請求就處理完了,具體請求過程如上圖所示。
而Container 則是Tomcat 中容器的接口,通常使用的Servlet 就封裝在其子接口Wrapper 中。(Container 一共有4 個子接口Engine 、Host 、Context 、Wrapper 和一個默認實現類ContainerBase,每個子接口都是一個容器,這4 個子容器都有一個對應的StandardXXX 實現類,并且這些實現類都繼承ContainerBase 類。另外Container 還繼承Lifecycle 接口,而且ContainerBase 間接繼承LifecycleBase,所以Engine 、Host 、Context 、Wrapper 4 個子容器都符合前面講過的Tomcat生命周期管理模式。)
所需環境:
部署具體步驟:
[root@localhost tomcat]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
軟件包鏈接:https://pan.baidu.com/s/1q9igHqlkIVJtqRS8zbuibQ
提取碼:xzaj
[root@localhost tomcat]# rpm -ivh jdk-8u201-linux-x64.rpm
警告:jdk-8u201-linux-x64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID ec551f03: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:jdk1.8-2000:1.8.0_201-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@localhost tomcat]# cd /usr/java/
[root@localhost java]# ls
default jdk1.8.0_201-amd64 latest
[root@localhost java]# cd jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# ls
bin lib src.zip
COPYRIGHT LICENSE THIRDPARTYLICENSEREADME-JAVAFX.txt
include man THIRDPARTYLICENSEREADME.txt
javafx-src.zip README.html
jre release
bin/:命令文件存放目錄
jre/:jvm的虛擬機存放位置
lib/:函數庫目錄
src.zip/:源碼壓縮包目錄
[root@localhost jdk1.8.0_201-amd64]# pwd
/usr/java/jdk1.8.0_201-amd64
[root@localhost jdk1.8.0_201-amd64]# java -version #簡化版jdk原本就集成在Centos7中
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@localhost jdk1.8.0_201-amd64]#
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile
[root@localhost jdk1.8.0_201-amd64]# tail -3 /etc/profile #添加的內容
export JAVA_NAME=/usr/java/jdk1.8.0_201-amd64 #工作路徑
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #類文件的位置
export PATH=$JAVA_NAME/bin:$PATH #命令文件
[root@localhost jdk1.8.0_201-amd64]# java #證明source成功
java javafxpackager javapackager javaws.itweb
javac javah java-rmi.cgi
javadoc javap javaws
[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]#
[root@localhost tomcat]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
[root@localhost tomcat]# tar zxf apache-tomcat-9.0.16.tar.gz -C /opt
[root@localhost tomcat]# cd /opt/
[root@localhost opt]# ls
apache-tomcat-9.0.16 rh
[root@localhost opt]# mv apache-tomcat-9.0.16/ tomcat
[root@localhost opt]# ls
rh tomcat
[root@localhost opt]# cd tomcat/
[root@localhost tomcat]# ls
bin CONTRIBUTING.md logs RELEASE-NOTES webapps
BUILDING.txt lib NOTICE RUNNING.txt work
conf LICENSE README.md temp
其中 webapps是站點,
[root@localhost tomcat]# cd bin/
[root@localhost bin]# ls
bootstrap.jar makebase.sh
catalina.bat setclasspath.bat
catalina.sh setclasspath.sh
catalina-tasks.xml shutdown.bat
ciphers.bat shutdown.sh
ciphers.sh startup.bat
commons-daemon.jar startup.sh
commons-daemon-native.tar.gz tomcat-juli.jar
configtest.bat tomcat-native.tar.gz
configtest.sh tool-wrapper.bat
daemon.sh tool-wrapper.sh
digest.bat version.bat
digest.sh version.sh
makebase.bat
[root@localhost bin]# ln -s /opt/tomcat/bin/startup.sh /usr/bin
[root@localhost bin]# ln -s /opt/tomcat/bin/shutdown.sh /usr/bin[root@localhost bin]# systemctl stop firewalld.service
[root@localhost bin]# setenforce 0
[root@localhost bin]# startup.sh #開啟服務
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 47064/java
[root@localhost bin]# shutdown.sh
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
[root@localhost bin]# netstat -antp | grep 8080
tcp6 0 0 ::1:39678 ::1:8080 TIME_WAIT -
當我們開啟Tomcat服務的時候,可以在瀏覽器中使用“IP地址:8080”進行訪問,如下圖所示
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。