詳解CentOS6.7部署Tomcat及主配置文件

Java程序實現部署及應用 html

POSIX :可移植操做系統,編程操做系統接口規範,實現跨平臺編譯運行。 前端

API:應用程序編程接口 java

ABI:應用程序二進制接口 描述了應用程序和操做系統之間,一個應用和它的庫之間,或者應用的組成部分之間的低接口. web

JAVA:包含四個獨立又彼此相關的技術 shell

Java設計語言 數據庫

JavaAPI :Java應用程序編程接口 apache

Java class 文件格式,須要運行在Java虛擬機中 編程

jvm :Java虛擬機 vim

JAVA流程 windows

 

一、JavaAPI和程序設計語言開發出源程序

二、Java源程序文件,一般以.java結尾

三、使用Java編譯器來編譯Java源程序文件

四、編譯完成以後保存爲類文件,以.class結尾

五、這些類文件必須找一個Java虛擬機才能跑起來

六、這些類文件在Java虛擬機上還須要類庫才能跑起來!

七、公共類須要用 class loader 才能加載!

 

JVM實現方式:

一、一次性解釋器:解釋的是字節碼並執行,解釋的過程是將字節碼轉換成二進制的過程。

二、即時編譯器:每個class類在運行的時候,解釋完的內容要緩存下來,第二次執行時,去緩存中取。依賴於更多內存緩存解碼後的結果。

三、自適應編譯器:自動緩存20%的執行頻率比較高的代碼,提升80%的速度。

 

JDK :Java開發環境+運行,是實現Java開發的最小環境

Java應用領域的不一樣分爲三類:

Java SE :Java標準版,

Java EE :Java企業版

Java ME :Java移動版

 

CGI(協議) :通用網關接口,將處理後的動態界面格式化成HTML格式顯示給用戶。

 

Servlet(Server Applet),全稱Java Servlet,是用Java編寫的服務器端程序。其主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,

JSP全名爲Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,

它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)JSP標記(tag),從而造成JSP文件,後綴名爲(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其餘操做系統上運行。

.jsp ---> .java --->(JVM).class

jasper 幫助.jsp轉換成.javaJava編譯器幫助.java轉換成.classJVM幫助.class轉換成程序文件。

JDK :提供了javac,可以幫助.java轉換成.class

 

servlet容器:包含了JDK,又包含了JDK不具有的額外的組件

基於servlet容器的工做流程:

一、前端有一個web應用程序,負責接收用戶請求,一旦發現用戶請求的是CGI的內容,

二、servlet程序負責經過CGI協議跟web程序進行交互

三、請求的內容接收進來以後,在JVM上完成程序的執行

servlet容器負責接收CGI傳遞過來的請求,負責監控本地的.Java程序是否發生了修改,若修改,負責把它轉換成.class格式。(包含JDK)

web容器:包含了servlet與JSP框架的程序

鏈接器:真正想跟用戶請求的http請求交互,前端還要依賴於web服務器,鏈接器能夠實現就算沒有web服務器解碼http請求,封裝http響應,也能夠直接完成與用戶交互,

 

如果直接面向大量用戶請求,鏈接器壓力會變的很大,若前端給他放一個web服務器,web服務器再帶有緩存功能,那後端的鏈接器壓力會小不少,這種模式稱爲Java的web容器,或者應用程序服務器

 

安裝JDK

一、默認安裝在/usr/java/目錄下,

二、使用rpm方式安裝Java

三、在/etc/profile.d/建立java.sh,內容爲:

export JAVA_HOME=/usr/local/jdk1.6.0_45

export PATH=$PATH:$JAVA_HOME/bin

四、執行一下文件:. /etc/profile.d/java.sh

五、使用命令查看Java版本號:java -version

 

Java配置參數方法:

-XX:+選項 :開啓 此參數指定的功能

-XX:-選項 :關閉功能

         -XX:選項=值 :給指定的選項賦值

java -XX:+PrintFlagsFinal :顯示Java所有選項及其參數

 

Tomcat詳解

tomcat架構詳解

整個Tomcat容器架構從外向內一共5

Tomcat在本身內部開發了一個使用Java語言開發了一個web服務器。

Tomcat自身內部就有一個web服務器,而這個web服務器自己運行起來之後,徹底能夠直接工做在前臺,讓用戶對本機發起web請求。

 

第一層是Tomcat服務器(server):每個server就是一個Tomcat實例,意味着啓動一個Tomcat就是啓動一個serve

能夠直接響應解析http請求

第二層是Tomcat 服務(service):將一個或多個鏈接器關聯至一個引擎,

鏈接器(Connector):貫穿第一層到第三層,用於將server和引擎創建起來關聯關係,將server收到的請求轉發給某一個引擎的組件。有多個!

第三層是Tomcat 引擎:就是一個具備servlet 容器的Java虛擬機,也是具有了web容器功能的容器,解碼.java

第四層是Tomcat 主機:能夠有多個,用來在引擎內部實現虛擬主機

第五層是上下文 :定義相似於Apache的路徑別名,配置一個Context最主要的是指定Web應用程序的根目錄,以便Servlet容器可以將用戶請求發往正確的位置。

 

容器類組件

Engine(引擎)

Host (主機)

Context(上下文)

頂級組件

server (服務器)

service (服務)

其他組件

Realm(領域):用戶帳戶數據庫,

Valve (閥門):實現用戶的認證

Logger:日誌記錄器

 

經常使用組件

一、Loader(類加載器)

Java的動態裝載功能是其語言功能強大表現之一,Servlet容器使用此功能在運行時動態裝載servlet和它們所依賴的類。Loader能夠用於Context中控制java類的加載

二、Manager

Manger對象用於實現HTTP會話管理的功能,Tomcat6中有5Manger的實現:

1) StandardManager(標準管理器)

Tomcat6的默認會話管理器,用於非集羣環境中對單個處於運行狀態的Tomcat實例會話進行管理。當Tomcat關閉時,這些會話相關的數據會被寫入磁盤上的一個名叫SESSION.ser的文件,並在Tomcat下次啓動時讀取此文件。

2) PersistentManager(持久會話管理器)

當一個會話長時間處於空閒狀態時會被寫入到swap會話對象,這對於內存資源比較吃緊的應用環境來講比較有用。

3)DeltaManager

用於Tomcat集羣的會話管理器,它經過將改變了會話數據同步給集羣中的其它節點實現會話複製。這種實現會將全部會話的改變同步給集羣中的每個節點,也是在集羣環境中用得最多的一種實現方式。

4) BackupManager

用於Tomcat集羣的會話管理器,與DeltaManager不一樣的是,某節點會話的改變只會同步給集羣中的另外一個,而非全部節點。

5)SimpleTcpReplicationManager

Tomcat4時用到的版本,過於老舊了。

三、Stores(存儲)

持久管理器必須包含一個Store元素以指定將會話數據存儲至何處。這一般有兩種實現方式:FileStore(文件存儲)JDBCStore(數據庫存儲)

四、Resources

常常用於實如今Context中指定須要裝載的但不在Tomcat本地磁盤上的應用資源,如Java類,HTML頁面,JSP文件等。

五、Cluster

專用於配置Tomcat集羣的元素,可用於EngineHost容器中。在用於Engine容器中時,Engine中的全部Host均支持集羣功能。在Cluster元素中,須要直接定義一個Manager元素,這個Manager元素有一個其值爲org.apache.catalina.ha.session.DeltaManagerorg.apache.catalina.ha.session.BackupManagerclassName屬性。同時,Cluster中還須要分別定義一個ChannelClusterListener元素。

5.一、Channel(通告)

用於Cluster中給集羣中同一組中的節點定義通訊"信道"。Channel中須要至少定義MembershipReceiverSender三個元素,此外還有一個可選元素Interceptor

5.二、Membership(成員關係管理)

用於Channel中配置同一通訊信道上節點集羣組中的成員狀況,即監控加入當前集羣組中的節點並在各節點間傳遞心跳信息,並且能夠在接收不到某成員的心跳信息時將其從集羣節點中移除。Tomcat6Membership的實現是org.apache.catalina.tribes.membership.McastService

5.三、Sender(心跳發送)

用於Channel中配置"複製信息"的發送器,實現發送須要同步給其它節點的數據至集羣中的其它節點。發送器不須要屬性的定義,但能夠在其內部定義一個Transport元素。

5.4 Transport(發送集羣事務信息)

用於Sender內部,配置數據如何發送至集羣中的其它節點。Tomcat6有兩種Transport的實現:

1) PooledMultiSender

基於Java阻塞式IO,能夠將一次將多個信息併發發送至其它節點,但一次只能傳送給一個節點。

2)PooledParallelSener

基於Java非阻塞式IO,即NIO,能夠一次發送多個信息至一個或多個節點。

5.5 Receiver(接受集羣事務信息)

用於Channel定義某節點如何從其它節點的Sender接收復制數據,Tomcat6中實現的接收方式有兩種BioReceiverNioReceiver

 

Tomcat的主配置文件(server.xml)及其各組件之間的關係

<server>

<service>

<Connector />

<Engine>

<Host>

<Context> </Context>

</Host>

</Engine>

</service>

</server>

安裝Tomcat以前須要先安裝JDK,由於要依賴於開發環境!

 

Tomcat的安裝配置

一、解壓包:tar xf apache-tomcat-7.0.69.tar.gz -C /usr/local/

二、包名太長,進行軟鏈接:ln -sv apache-tomcat-7.0.69 tomcat

三、目錄結構

bin :二進制程序路徑,裏面有 .jar文件(Java歸檔壓縮包)shell腳本,還有 .bat(windows的批處理腳本)

conf :配置文件

server.xml:主配置文件

tomcat-users.xml:用戶認證

web.xml:默認的應用程序部署描述符 (部署:將一個web應用程序所依賴到的類裝載進JVM)

context.xml :默認爲上下文所提供的配置文件

logging.properties :定義日誌屬性

catalina.properties :定義應用程序自己屬性

catalina.policy :定義Tomecat自身安全策略,資源受權

lib :類庫文件

logs :日誌文件

temp :臨時文件目錄

webapps :應用程序目錄,每個程序文件夾中都有一個WEB-INF,這是程序的私有目錄。

work :工做目錄,

四、啓動Tomcat

4.一、輸出一個變量:vim /etc/profile.d/tomcat.sh ,內容爲:

export CATALINA_HOME=/usr/local/tomcat

export PATH=$PATH:$CATALINA_HOME/bin

4.二、 啓動 catalina.sh start ,而後查看端口:netstat -lnpt中的8080、8009

五、訪問網頁: 格式爲(IP地址:8080

五、使用service啓動Tomcatvim /etc/rc.d/init.d/tomcat

腳本:

#!/bin/sh

# Tomcat init script for Linux.

#

# chkconfig: 2345 96 14

# description: The Apache Tomcat servlet/JSP container.

JAVA_HOME=/usr/java/jdk1.7.0_67

CATALINA_HOME=/usr/local/tomcat

export JAVA_HOME CATALINA_HOME

exec $CATALINA_HOME/bin/catalina.sh $*

 

Tomcat優化

Tomcat的優化分紅兩塊:

Tomcat啓動命令行中的優化參數即JVM優化(catalina.sh)

ü 系統響應時間增快

ü JVM回收速度增快同時又不影響系統的響應率

ü JVM內存最大化利用

ü 線程阻塞狀況最小化

 

Tomcat容器自身參數的優化(server.xml

相關文章
相關標籤/搜索