日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Tomcat簡(jiǎn)介

Tomcat 是 JAVA 語(yǔ)言開(kāi)發(fā)的,Tomcat 服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的 Web 應(yīng)用服務(wù)器,是 Apache 軟件基金會(huì)的 Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由 Apache、Sun 和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。

Tomcat 屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試 JSP 程序的首選。一般來(lái)說(shuō),Tomcat 雖然和 Apache 或者 Nginx 這些 Web 服務(wù)器一樣,具有處理 html 頁(yè)面的功能,然而由于其處理靜態(tài) HTML 的能力遠(yuǎn)不及 Apache 或者 Nginx,所以 Tomcat 通常是作為一個(gè) Servlet 和 JSP 容器,單獨(dú)運(yùn)行在后端。

 

Tomcat核心組件

Web 容器:完成 Web 服務(wù)器的功能。

Servlet 容器:名字為 catalina,用于處理 Servlet 代碼。

JSP 容器:用于將 JSP 動(dòng)態(tài)網(wǎng)頁(yè)翻譯成 Servlet 代碼。

因此 Tomcat 是 Web 應(yīng)用服務(wù)器,也是一個(gè) Servlet/JSP 容器。Tomcat 作為 Servlet 容器,負(fù)責(zé)處理客戶請(qǐng)求,把請(qǐng)求傳送給 Servlet,并將 Servlet 的響應(yīng)傳送回給客戶。

Web容器

web容器是一種服務(wù)程序,在服務(wù)器一個(gè)端口就有一個(gè)提供相應(yīng)服務(wù)的程序,而這個(gè)程序就是處理從客戶端發(fā)出的請(qǐng)求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是這樣的容器。一個(gè)服務(wù)器可以有多個(gè)容器。

什么是 servlet?

Servlet 是Java Servlet 的簡(jiǎn)稱,可以理解為是一個(gè)服務(wù)連接器,是用 Java 編寫(xiě)的服務(wù)器端程序,具有獨(dú)立于平臺(tái)和協(xié)議的特性, 簡(jiǎn)單的理解:servlet 就是一個(gè)中間件,包含了接口和方法,將客戶端和數(shù)據(jù)庫(kù)連接,從而實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的創(chuàng)建。

什么是 JSP?

JSP 全稱 Java Server Pages,是一種動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。它使用 JSP 標(biāo)簽在HTML網(wǎng)頁(yè)中插入 Java 代碼。

標(biāo)簽通常以 <% 開(kāi)頭,以 %> 結(jié)束。

JSP 是一種 Java servlet,主要用于實(shí)現(xiàn) Java web 應(yīng)用程序的用戶界面部分。

JSP 通過(guò)網(wǎng)頁(yè)表單獲取用戶輸入數(shù)據(jù)、訪問(wèn)數(shù)據(jù)庫(kù)及其他數(shù)據(jù)源,然后動(dòng)態(tài)地創(chuàng)建網(wǎng)頁(yè)。

ContAIner 結(jié)構(gòu)分析

每個(gè) Service 會(huì)包含一個(gè) Container 容器。在 Container 內(nèi)部包含了 4 個(gè)子容器:

4個(gè)子容器的作用分別是:

Engine:引擎,用來(lái)管理多個(gè)虛擬主機(jī),一個(gè) Service 最多只能有一個(gè) Engine;

Host:代表一個(gè)虛擬主機(jī),也可以叫站點(diǎn),通過(guò)配置 Host 就可以添加站點(diǎn);

Context:代表一個(gè) Web 應(yīng)用,包含多個(gè) Servlet 封裝器;

WrApper:封裝器,容器的最底層。每一 Wrapper 封裝著一個(gè) Servlet,負(fù)責(zé)對(duì)象實(shí)例的創(chuàng)建、執(zhí)行和銷(xiāo)毀功能。

Engine、Host、Context 和 Wrapper,這四個(gè)容器之間屬于父子關(guān)系。 容器 由一個(gè)引擎可以管理多個(gè)虛擬主機(jī)。每個(gè)虛擬主機(jī)可以管理多個(gè) Web 應(yīng)用。每個(gè) Web 應(yīng)用會(huì)有多個(gè) Servlet 封裝器。

Tomcat 請(qǐng)求過(guò)程:

用戶在瀏覽器中輸入網(wǎng)址,請(qǐng)求被發(fā)送到本機(jī)端口 8080,被在那里監(jiān)聽(tīng)的 Connector 獲得;

Connector 把該請(qǐng)求交給它所在的 Service 的 Engine(Container)來(lái)處理,并等待 Engine 的回應(yīng);

請(qǐng)求在 Engine、Host、Context 和 Wrapper 這四個(gè)容器之間層層調(diào)用,最后在 Servlet 中執(zhí)行對(duì)應(yīng)的業(yè)務(wù)邏輯、數(shù)據(jù)存儲(chǔ)等。

執(zhí)行完之后的請(qǐng)求響應(yīng)在 Context、Host、Engine 容器之間層層返回,最后返回給 Connector,并通過(guò) Connector 返回給客戶端。

在部署 Tomcat 之前必須安裝好 jdk,因?yàn)?jdk 是 Tomcat 運(yùn)行的必要環(huán)境。

這里選擇手動(dòng)搭建tomcat環(huán)境.JDK選擇yum倉(cāng)庫(kù)的openJDK,大家也可以在官網(wǎng)下載RPM包安裝 http://www.oracle.com/tec.NETwork/java/javase/downloads/jdk8-downloads-2133151.html

 

一:安裝JDK

1:檢查yum倉(cāng)庫(kù)中openjdk的版本

[root@localhost ~]# yum list |grep ^java

 

這里選擇安裝java-1.8.0-openjdk

[root@localhost ~]# yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y

 

2:查看Java-Openjdk是否安裝成功

[root@localhost ~]# java -version

 

顯示已經(jīng)安裝成功

二:安裝配置Tomcat

1:檢查yum倉(cāng)庫(kù)中tomcat的相關(guān)包

[root@localhost ~]# yum list |grep tomcat

 

[root@localhost ~]# yum install tomcat -y 直接選擇在線安裝

也可以在官網(wǎng)下載源碼包 wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.83/bin/apache-tomcat-8.5.83.tar.gz

如果是下載源碼安裝就需要配置:配置 Tomcat 環(huán)境變量配置 Tomcat pid 文件和相關(guān)參數(shù)配置 Tomcat 服務(wù)腳本

Tomcat 環(huán)境變量

[root@localhost ~]# wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.83/bin/apache-tomcat-8.5.83.tar.gz

[root@localhost ~]# tar xf apache-tomcat-8.5.83.tar.gz -C /usr/local

[root@localhost ~]# cd /usr/local/

[root@localhost java]# ln -sv apache-tomcat-8.5.83/ tomcat

‘tomcat’ -> ‘apache-tomcat-8.5.83/’

配置變量:

[root@localhost local]# vim /etc/profile.d/tomcat.sh

# TOMCAT

export CATALINA_HOME=/usr/local/tomcat

# PATH

export PATH=$PATH:$CATALINA_HOME

配置 Tomcat pid 文件和相關(guān)參數(shù)

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

# add tomcat pid

CATALINA_PID="$CATALINA_HOME/tomcat.pid"

# add java opts

JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=512m -Xms512M -Xmx512M -XX:MaxNewSize=256m"

配置 Tomcat 服務(wù)腳本

[root@localhost]# vim /usr/lib/systemd/system/tomcat.service

[Unit]

Description=Apache Tomcat Web Application

ContainerAfter=syslog.target network.target

[Service]

Type=forking

PIDFile=/usr/local/tomcat/tomcat.pid

ExecStart=/usr/local/tomcat/bin/catalina.sh start

ExecReload=/bin/kill -s HUP MAINPID

ExecStop=/bin/kill−s QUIT MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

啟動(dòng)服務(wù):

[root@localhost]# systemctl daemon-reload

[root@localhost]# systemctl status tomcat.service

[root@localhost]# systemctl enable tomcat.service

[root@localhost]# systemctl is-enabled tomcat.service

enabled

[root@localhost]# systemctl start tomcat.service

# 查看 Tomcat 開(kāi)啟端口狀態(tài)

[root@localhost ~]# netstat -lnutp | grep :8080

tcp6 0 0 :::8080 :::* LISTEN 3060/java

2:這里我選擇的是在線安裝:

[root@localhost ~]# yum install tomcat -y

 

[root@localhost ~]# systemctl start tomcat 啟動(dòng)tomcat

 


 

[root@localhost ~]# rpm -ql tomcat 查看yunm安裝的tomcat生成文件的路徑

 

tomcat默認(rèn)端口是8080,接下來(lái)瀏覽輸入地址:http://ip:8080/。這個(gè)頁(yè)面暫時(shí)是無(wú)法訪問(wèn)

由于tomcat的web頁(yè)面是需要安裝插件的,這里繼續(xù)用 tomcat-webapps 和 tomcat-admin-webapps 兩個(gè)插件包

[root@localhost ~]# yum install tomcat-webapps tomcat-admin-webapps -y

 

[root@localhost ~]# systemctl restart tomcat 重啟服務(wù)

在瀏覽器中輸入http://10.0.0.101:8080/

 

3:提升 Tomcat 啟動(dòng)速度

●tomcat 啟動(dòng)慢的原因是隨機(jī)數(shù)產(chǎn)生遭到阻塞,遭到阻塞的原因是 熵池大小 。

●/dev/random:阻塞型,讀取它就會(huì)產(chǎn)生隨機(jī)數(shù)據(jù),但該數(shù)據(jù)取決于熵池噪聲,當(dāng)熵池空了,對(duì)/dev/random 的讀操作也將會(huì)被阻塞。

●/dev/urandom:非阻塞的隨機(jī)數(shù)產(chǎn)生器,它會(huì)重復(fù)使用熵池中的數(shù)據(jù)以產(chǎn)生偽隨機(jī)數(shù)據(jù)。這表示對(duì)/dev/urandom的讀取操作不會(huì)產(chǎn)生阻塞,但其輸出的熵可能小于/dev/random的。它可以作為生成較低強(qiáng)度密碼的偽隨機(jī)數(shù)生成器,不建議用于生成高強(qiáng)度長(zhǎng)期密碼。

# 查看是否有足夠的熵來(lái)用于產(chǎn)生隨機(jī)數(shù)

[root@localhost ~]# cat /proc/sys/kernel/random/entropy_avail

1418

# 安裝rngd服務(wù)(熵服務(wù),增大熵池)

[root@localhost ~]# yum install rng-tools

# 開(kāi)機(jī)自啟動(dòng)服務(wù)

[root@localhost ~]# systemctl enable --now rngd

# 再次查看

[root@localhost ~]# cat /proc/sys/kernel/random/entropy_avail

2835

 

我們也可以在編輯/etc/tomcat/tomcat-users.xml配置文件來(lái)查看跟詳細(xì)的狀態(tài)頁(yè)面,但是這種配置不要使用在生產(chǎn)環(huán)境中

[root@localhost ~]#vim /etc/tomcat/tomcat-users.xml

# 添加如下內(nèi)容

[root@localhost local]# vim /etc/tomcat/tomcat-users.xml

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<role rolename="manager-gui"/>

<role rolename="manager-jmx"/>

<role rolename="manager-script"/>

<role rolename="manager-status"/>

<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,managerjmx,manager-script,manager-status,admin-script"/>

# 允許訪問(wèn) Manager App

[root@localhost local]# vim /var/lib/tomcat/webapps/host-manager/META-INF/context.xml

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />

# 允許訪問(wèn) Host Manager

[root@localhost local]# vim /var/lib/tomcat/webapps/manager/META-INF/context.xml

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />

# 重啟 Tomcat 服務(wù)

[root@node01 local]# systemctl restart tomcat

4:Tomcat 虛擬主機(jī)配置

修改 server.xml

[root@localhost ~]# systemctl stop tomcat

[root@localhost /]# cd /etc/tomcat

[root@localhost ]# cp server.xml{,.bak}

# 添加虛擬主機(jī)配置

[root@localhost]# vim server.xml

</Host>

<Host name="www.a.com" appBase="webapps"

unpackWARs="true" autoDeploy="true">

<Context docBase="/web/a" path="" reloadable="flase" />

<Valve className="org.apache.catalina.valves.AccessLogValve"

directory="logs"

prefix="www.a.com_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

</Host>

<Host name="www.b.com" appBase="webapps"

unpackWARs="true" autoDeploy="true">

<Context docBase="/web/b" path="" reloadable="flase" />

<Valve className="org.apache.catalina.valves.AccessLogValve"

directory="logs"

prefix="www.b.com_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

</Host>

虛擬主機(jī)目錄及文件準(zhǔn)備

[root@localhost]# mkdir -p /web/{a,b}

[root@localhost]# vim /web/a/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>

<head>

<title>JSP a page</title>

</head>

<body>

<% out.println("Welocome to test site,http://www.a.com");%>

</body>

</html>

[root@localhost]# vim /web/b/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>

<head>

<title>JSP a page</title>

</head>

<body>

<% out.println("Welocome to test site,http://www.b.com");%>

</body>

</html>

配置 hosts 解析

[root@localhost]# vim /etc/hosts

# 添加:

10.0.0.101 www.a.com www.b.com

重啟 Tomcat

[root@localhost]# systemctl restart tomcat.service

測(cè)試

[root@localhost]# curl www.a.com

5:Tomcat 配置文件參數(shù)優(yōu)化

常用的優(yōu)化相關(guān)參數(shù)如下:

【redirectPort】如果某連接器支持的協(xié)議是HTTP,當(dāng)接收客戶端發(fā)來(lái)的HTTPS請(qǐng)求時(shí),則轉(zhuǎn)發(fā)至此屬性定義的 8443 端口。

【maxThreads】Tomcat使用線程來(lái)處理接收的每個(gè)請(qǐng)求,這個(gè)值表示Tomcat可創(chuàng)建的最大的線程數(shù),即支持的最大并發(fā)連接數(shù),默認(rèn)值是 200。

【minSpareThreads】最小空閑線程數(shù),Tomcat 啟動(dòng)時(shí)的初始化的線程數(shù),表示即使沒(méi)有人使用也開(kāi)這么多空線程等待,默認(rèn)值是 10。

【maxSpareThreads】最大備用線程數(shù),一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程。默認(rèn)值是-1(無(wú)限制)。一般不需要指定。

【processorCache】進(jìn)程緩沖器,可以提升并發(fā)請(qǐng)求。默認(rèn)值是200,如果不做限制的話可以設(shè)置為-1,一般采用maxThreads的值或者-1。

【URIEncoding】指定 Tomcat 容器的 URL 編碼格式,網(wǎng)站一般采用UTF-8作為默認(rèn)編碼。

【connnectionTimeout】網(wǎng)絡(luò)連接超時(shí),單位:毫秒,設(shè)置為 0 表示永不超時(shí),這樣設(shè)置有隱患的。通常默認(rèn) 20000 毫秒就可以。

【enableLookups】是否反查域名,以返回遠(yuǎn)程主機(jī)的主機(jī)名,取值為:true 或 false,如果設(shè)置為 false,則直接返回 IP 地址,為了提高處理能力,應(yīng)設(shè)置為 false。

【disableUploadTimeout】上傳時(shí)是否使用超時(shí)機(jī)制。應(yīng)設(shè)置為 true。

【connectionUploadTimeout】上傳超時(shí)時(shí)間,畢竟文件上傳可能需要消耗更多的時(shí)間,這個(gè)根據(jù)你自己的業(yè)務(wù)需要自己調(diào),以使Servlet有較長(zhǎng)的時(shí)間來(lái)完成它的執(zhí)行,需要與上一個(gè)參數(shù)一起配合使用才會(huì)生效。

【acceptCount】指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可傳入連接請(qǐng)求的最大隊(duì)列長(zhǎng)度,超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理,默認(rèn)為 100 個(gè)。

【maxKeepAliveRequests】指定一個(gè)長(zhǎng)連接的最大請(qǐng)求數(shù)。默認(rèn)長(zhǎng)連接是打開(kāi)的,設(shè)置為1時(shí),代表關(guān)閉長(zhǎng)連接;為-1時(shí),代表請(qǐng)求數(shù)無(wú)限制

【compression】是否對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行GZIP壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進(jìn)行壓縮,默認(rèn)值為 off,壓縮數(shù)據(jù)后可以有效的減少頁(yè)面的大小,一般可以減小 1/3 左右,節(jié)省帶寬。

【compressionMinSize】表示壓縮響應(yīng)的最小值,只有當(dāng)響應(yīng)報(bào)文大小大于這個(gè)值的時(shí)候才會(huì)對(duì)報(bào)文進(jìn)行壓縮,如果開(kāi)啟了壓縮功能,默認(rèn)值就是 2048。

【compressableMimeType】壓縮類型,指定對(duì)哪些類型的文件進(jìn)行數(shù)據(jù)壓縮。

【noCompressionUserAgents="gozilla, traviata"】對(duì)于以下的瀏覽器,不啟用壓縮

分享到:
標(biāo)簽:Tomcat
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定