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

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

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Tomcat簡介

Tomcat 是 JAVA 語言開發的,Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,是 Apache 軟件基金會的 Jakarta 項目中的一個核心項目,由 Apache、Sun 和其他一些公司及個人共同開發而成。

Tomcat 屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。一般來說,Tomcat 雖然和 Apache 或者 Nginx 這些 Web 服務器一樣,具有處理 html 頁面的功能,然而由于其處理靜態 HTML 的能力遠不及 Apache 或者 Nginx,所以 Tomcat 通常是作為一個 Servlet 和 JSP 容器,單獨運行在后端。

 

Tomcat核心組件

Web 容器:完成 Web 服務器的功能。

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

JSP 容器:用于將 JSP 動態網頁翻譯成 Servlet 代碼。

因此 Tomcat 是 Web 應用服務器,也是一個 Servlet/JSP 容器。Tomcat 作為 Servlet 容器,負責處理客戶請求,把請求傳送給 Servlet,并將 Servlet 的響應傳送回給客戶。

Web容器

web容器是一種服務程序,在服務器一個端口就有一個提供相應服務的程序,而這個程序就是處理從客戶端發出的請求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是這樣的容器。一個服務器可以有多個容器。

什么是 servlet?

Servlet 是Java Servlet 的簡稱,可以理解為是一個服務連接器,是用 Java 編寫的服務器端程序,具有獨立于平臺和協議的特性, 簡單的理解:servlet 就是一個中間件,包含了接口和方法,將客戶端和數據庫連接,從而實現動態網頁的創建。

什么是 JSP?

JSP 全稱 Java Server Pages,是一種動態網頁開發技術。它使用 JSP 標簽在HTML網頁中插入 Java 代碼。

標簽通常以 <% 開頭,以 %> 結束。

JSP 是一種 Java servlet,主要用于實現 Java web 應用程序的用戶界面部分。

JSP 通過網頁表單獲取用戶輸入數據、訪問數據庫及其他數據源,然后動態地創建網頁。

ContAIner 結構分析

每個 Service 會包含一個 Container 容器。在 Container 內部包含了 4 個子容器:

4個子容器的作用分別是:

Engine:引擎,用來管理多個虛擬主機,一個 Service 最多只能有一個 Engine;

Host:代表一個虛擬主機,也可以叫站點,通過配置 Host 就可以添加站點;

Context:代表一個 Web 應用,包含多個 Servlet 封裝器;

WrApper:封裝器,容器的最底層。每一 Wrapper 封裝著一個 Servlet,負責對象實例的創建、執行和銷毀功能。

Engine、Host、Context 和 Wrapper,這四個容器之間屬于父子關系。 容器 由一個引擎可以管理多個虛擬主機。每個虛擬主機可以管理多個 Web 應用。每個 Web 應用會有多個 Servlet 封裝器。

Tomcat 請求過程:

用戶在瀏覽器中輸入網址,請求被發送到本機端口 8080,被在那里監聽的 Connector 獲得;

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

請求在 Engine、Host、Context 和 Wrapper 這四個容器之間層層調用,最后在 Servlet 中執行對應的業務邏輯、數據存儲等。

執行完之后的請求響應在 Context、Host、Engine 容器之間層層返回,最后返回給 Connector,并通過 Connector 返回給客戶端。

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

這里選擇手動搭建tomcat環境.JDK選擇yum倉庫的openJDK,大家也可以在官網下載RPM包安裝 http://www.oracle.com/tec.NETwork/java/javase/downloads/jdk8-downloads-2133151.html

 

一:安裝JDK

1:檢查yum倉庫中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

 

顯示已經安裝成功

二:安裝配置Tomcat

1:檢查yum倉庫中tomcat的相關包

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

 

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

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

如果是下載源碼安裝就需要配置:配置 Tomcat 環境變量配置 Tomcat pid 文件和相關參數配置 Tomcat 服務腳本

Tomcat 環境變量

[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 文件和相關參數

[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 服務腳本

[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

啟動服務:

[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 開啟端口狀態

[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 啟動tomcat

 


 

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

 

tomcat默認端口是8080,接下來瀏覽輸入地址:http://ip:8080/。這個頁面暫時是無法訪問

由于tomcat的web頁面是需要安裝插件的,這里繼續用 tomcat-webapps 和 tomcat-admin-webapps 兩個插件包

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

 

[root@localhost ~]# systemctl restart tomcat 重啟服務

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

 

3:提升 Tomcat 啟動速度

●tomcat 啟動慢的原因是隨機數產生遭到阻塞,遭到阻塞的原因是 熵池大小 。

●/dev/random:阻塞型,讀取它就會產生隨機數據,但該數據取決于熵池噪聲,當熵池空了,對/dev/random 的讀操作也將會被阻塞。

●/dev/urandom:非阻塞的隨機數產生器,它會重復使用熵池中的數據以產生偽隨機數據。這表示對/dev/urandom的讀取操作不會產生阻塞,但其輸出的熵可能小于/dev/random的。它可以作為生成較低強度密碼的偽隨機數生成器,不建議用于生成高強度長期密碼。

# 查看是否有足夠的熵來用于產生隨機數

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

1418

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

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

# 開機自啟動服務

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

# 再次查看

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

2835

 

我們也可以在編輯/etc/tomcat/tomcat-users.xml配置文件來查看跟詳細的狀態頁面,但是這種配置不要使用在生產環境中

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

# 添加如下內容

[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"/>

# 允許訪問 Manager App

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

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

# 允許訪問 Host Manager

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

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

# 重啟 Tomcat 服務

[root@node01 local]# systemctl restart tomcat

4:Tomcat 虛擬主機配置

修改 server.xml

[root@localhost ~]# systemctl stop tomcat

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

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

# 添加虛擬主機配置

[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>

虛擬主機目錄及文件準備

[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

測試

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

5:Tomcat 配置文件參數優化

常用的優化相關參數如下:

【redirectPort】如果某連接器支持的協議是HTTP,當接收客戶端發來的HTTPS請求時,則轉發至此屬性定義的 8443 端口。

【maxThreads】Tomcat使用線程來處理接收的每個請求,這個值表示Tomcat可創建的最大的線程數,即支持的最大并發連接數,默認值是 200。

【minSpareThreads】最小空閑線程數,Tomcat 啟動時的初始化的線程數,表示即使沒有人使用也開這么多空線程等待,默認值是 10。

【maxSpareThreads】最大備用線程數,一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。默認值是-1(無限制)。一般不需要指定。

【processorCache】進程緩沖器,可以提升并發請求。默認值是200,如果不做限制的話可以設置為-1,一般采用maxThreads的值或者-1。

【URIEncoding】指定 Tomcat 容器的 URL 編碼格式,網站一般采用UTF-8作為默認編碼。

【connnectionTimeout】網絡連接超時,單位:毫秒,設置為 0 表示永不超時,這樣設置有隱患的。通常默認 20000 毫秒就可以。

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

【disableUploadTimeout】上傳時是否使用超時機制。應設置為 true。

【connectionUploadTimeout】上傳超時時間,畢竟文件上傳可能需要消耗更多的時間,這個根據你自己的業務需要自己調,以使Servlet有較長的時間來完成它的執行,需要與上一個參數一起配合使用才會生效。

【acceptCount】指定當所有可以使用的處理請求的線程數都被使用時,可傳入連接請求的最大隊列長度,超過這個數的請求將不予處理,默認為 100 個。

【maxKeepAliveRequests】指定一個長連接的最大請求數。默認長連接是打開的,設置為1時,代表關閉長連接;為-1時,代表請求數無限制

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

【compressionMinSize】表示壓縮響應的最小值,只有當響應報文大小大于這個值的時候才會對報文進行壓縮,如果開啟了壓縮功能,默認值就是 2048。

【compressableMimeType】壓縮類型,指定對哪些類型的文件進行數據壓縮。

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

分享到:
標簽:Tomcat
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定