摘要:服務器插件在其他的服務器進程內部地址空間啟動一個虛擬機,容器組件在此虛擬機中運行。如有客戶端發出調用請求,服務器插件獲得對此請求的控制并轉發給容器組件使用通訊機制,即本地調用接口。
博文參考
http://xtony.blog.51cto.com/3964396/988706/ http://blog.sina.com.cn/s/blog_a0e7e34c01015nes.html http://blog.csdn.net/u010066934/article/details/51669043 http://www.cnblogs.com/doit8791/archive/2012/10/27/2742768.htmltomcat簡介
tomcat是SUN公司的JSWDK(JavaServer Web DEvelopmentKit,是SUN公司推出的小型Servlet/JSP調試工具 )的基礎上發展出來的一個優秀的完全由Java語言編寫的Servlet容器; Servlet,顧名思義,是一種運行在服務器上的小插件。Servlet最常見的用途就是擴展Web服務器的功能,可作為非常安全的、可移植的、易于使用的CGI代替品。Servlet具有以下特點: 提供了可被服務器動態加載并執行的程序代碼,為客服端的請求提供相應服務; Servlet完全用Java語言編寫,因此要求運行Servlet的服務器必須支持Java語言; Servlet完全運行在服務器端,因此它不依賴于瀏覽器。不管瀏覽器是否支持Java語言,都能請求訪問服務器端的Servlet;tomcat 三種工作模式 獨立servlet容器
Tomcat作為獨立的Web服務器來多帶帶運行,Servlet容器組件作為Web服務器中的一部分而存在,這是Tomcat的默認工作模式。在這種模式下,Tomcat是一個獨立運行Java程序,需要啟動一個Java虛擬機(JVM)進程來運行Tomcat;
其他web服務進程內的servlet容器在這種模式下,Tomcat分別為Web服務器插件和Servlet容器組件兩部分。Web服務器插件在其他的Web服務器進程內部地址空間啟動一個Java虛擬機,Servlet容器組件在此Java虛擬機中運行。如有客戶端發出調用Serlvet請求,Web服務器插件獲得對此請求的控制并轉發給Servlet容器組件(使用JNI通訊機制,即Java本地調用接口)。
其他web服務進程外的servlet容器在這種模式下,Tomcat分為Web服務器插件和Serlvet容器組件兩部分。Web服務器插件在其他的Web服務器進程外部地址空間啟動一個Java虛擬機,Servlet容器組件在此Java虛擬機中運行。如有客戶端發出調用Serlvet請求,Web服務器插件獲得對此請求的控制并轉發給Servlet容器組件(采用IPC通訊機制,即進程間通信的一種機制)。
安裝java環境1、從Base倉庫安裝java開發工具包:OpenJDK;
注:tomcat對java1.7的兼容性較好
yum install java-1.7.0-openjdk-devel.x86_64
2、查看JDK是否正常安裝;
java -version
3、查看java的環境配置信息;
type java
可以看出/usr/bin/java以及/etc/alternatives/java均為鏈接文件; java支持多版本同時運行,可以通過alternatives命令修改默認版本,或者修改/etc/alternatives/java鏈接文件指向要設定的默認版本的路徑即可;安裝tomcat
1、從官網下載tomcat二進制安裝包(http://tomcat.apache.org/)
wget http://mirrors.tuna.tsinghua....
tar xf apache-tomcat-8.5.11.tar.gz -C /usr/local/
查看解壓后的目錄;
ll /usr/local/ | grep tomcat
2、為方便管理,創建軟鏈接;
ln -s /usr/local/apache-tomcat-8.5.11/ /usr/local/tomcat
3、創建環境配置腳本;
vim /etc/profile.d/tomcat.sh
賦予執行權限;
chmod +x /etc/profile.d/tomcat.sh
加載環境配置;
source /etc/profile.d/tomcat.sh
4、啟動tomcat
/usr/local/tomcat/bin/catalina.sh start 或 #catalina.sh start
查看tomcat是否正常啟動
ss –tnl
5、測試本地8080端口是否正常監聽
curl -I 127.0.0.1:8080
6、通過瀏覽器訪問測試(需指定8080端口),注意selinux與iptables策略;
到此tomcat安裝成功;
tomcat目錄結構以及相關文件1、Tomcat組件
Tomcat本身由一系列可配置的組件構成,其核心組件是Servlet容器組件,即運行在服務器上的小插件。每個tomcat組件在server.xml文件中對應一種配置元素:
每一個組件都由一個Java"類"實現,這些組件大體可以分為以下幾個類型:
頂級組件:Server;
服務類組件:Service;
連接器組件:http,https,ajp;
容器類組件:Engine,Host,Context;
嵌套類組件:valve,logger,realm,loader,manger,. . . ;
集群類組件:listener,cluster,. . . ;
2、tomcat目錄結構
bin:腳本及啟動時用到的類
conf:配置文件目錄
lib:庫文件,java庫,jar
logs:日志文件目錄
temp:臨時文件目錄
webapps:webapps的默認目錄
work:工作目錄
如果為rpm包安裝:
配置文件目錄:/etc/tomcat
webapps存放位置:/var/lib/tomcat/webapps
環境配置文件:/etc/sysconfig/tomcat
3、tomcat的主要配置文件;
serverxml.xml:主要配置文件
web.xml每個webapp只有"部署"后才能被訪問,它的部署方式通常由web.xml進行定義,其存放位置為WEB-INF/目錄中,此文件為所有的webapp提供默認配置;
context.xml:每個web都可以專用的配置文件,它通常由專用的配置文件context.xml來定義,其存放位置為WEB-INF/目錄中,此文件為所有的webapp提供默認配置;
tomcat-users.xml:用戶認證的賬號和密碼文件;
catalina.policy:當使用-security選項啟動tomcat時,會附加加載該安全配置文件,用于為tomcat設置安全策略;
catalima.properties:Java屬性的定義文件,由于設定類加載器路徑,以及一些與JVM調優相關參數;
logging.properties:日志系統相關的配置;
4、catalina.sh腳本參數詳解;
WebAPP結構及簡單部署catalina.sh –help
1、JSP WebAPP的組織結構
/:webapps的根目錄 index.jsp:主頁; WEB-INF/:當前webapp的私有資源路徑,通常用于存儲當前的webapp的web.xml和context.xml配置文件; META-INF/:類似于WEB-INF/; classes/:類文件,當前webapp所提供的類; lib/:庫文件,當前webapp所提供的庫文件,被打包為jar;
2、webapp歸檔格式:
常用的歸檔格式有4種:*.war(webapp)、*.jar(EJB的類打包文件)、*.rar(資源適配器類打包文件)、*.ear(企業級webapp);如果使用的是*.war時,默認會自動展開;
3、部署(deploy)webapp的相關操作
eploy:將webapp的源文件放置于目標目錄(網頁程序文件存放目錄),配置tomcat服務器能夠基于web.xml和context.xml文件中定義的路徑來訪問此webapp,將其特有的類和依賴的類通過class loader裝載至JVM; 部署方式分為自動部署(auto deploy)和手動部署兩種方式: 自動部署只需將webapp展開到tomcat/下的webapps/目錄即可; 手動部署又分為冷部署和熱部署:冷部署,及把webapp復制到指定的位置,而后才啟動tomcat;熱部署,則是在不停止tomcat的前提下進行部署,需要借助于manager、ant腳本、tcd(tomcat client deployer)等部署工具,tcd可用于遠程部署; undeploy:反部署,停止webapp,并將webapp從tomcat實例上卸載; start:啟動處于停止狀態的webapp; stop:停止webapp,不再向用戶提供服務,其類依然在jvm上; redeploy:重新部署;
4、簡單冷部署一測試類應用:
mkdir -pv /usr/local/tomcat/webapps/test/{classes,lib,WEB-INF}
創建文件/usr/local/tomcat/webapps/test/index.jsp內容如下:
<%@ page language="java" %> <%@ page import="java.util.*" %>Test Page <% out.println("hello world"); %>
調試測試頁面:
curl 127.0.0.1:8080/test/index.jsp
可以看出,響應內容為編譯后的頁面代碼;
tomcat常用組件配置1、頂層組件Server
Server代表tomcat instance(實例),即表現出的一個Java進程;監聽在8005端口上,只接收"SHUTDOWN"。各server監聽的端口不能相同,因此,在一物理主機啟動多個實例時,需要修改其監聽端口為不同的端口; 【常用屬性】 Adderss:監聽shutdown命令的地址,默認為localhost; port:監聽shutdown命令的端口,默認為8005。設置為-1,則禁止通過端口關閉Tomcat; shutdown:設置基于端口關閉Tomcat所需的字符串參數,默認為"SHUTDOWN"
2、服務類組件Service
Service用于建一個或多個Connector(連接器組件)關聯至一個Engine組件;
3、連接器組件Connector
Connector負責接收請求,常見的有三種類http、https、ajp; 進入tomcat的請求可以分為兩類: (1)、standalone:請求來自于客戶端瀏覽器; (2)、由其他的web server反代:來自前端的反代服務器: nginx –> http connector –> tomcat httpd(proxy_http_module) –> http connector –> tomcat httpd(proxy_ajp_module) –> ajp connector –> tomcat
【常用屬性】:
port:接收http請求的端口,默認8080; protocol:使用協議,默認HTTP/1.1 redirectPort:接收https請求的端口,默認8443; connectionTimeout:每個請求最長連接時間,單位毫秒,默認20000; address:監聽的IP地址;默認為本機所有可用地址; maxThreads:最大并發連接數,默認為150; enableLookups:是否啟用DNS查詢功能; acceptCount:等待隊列的最大長度; secure:安全設置 sslProtocol:SSL協議
4、容器類組件Engine
Engine組件:Servlet實例,即servlet引擎,每個Servlet只能包含一個Engine,其內部可以一個或多個host組件來定義站點;通常需要通過defaultHost來定義默認的虛擬主機; 【常用屬性】: name:Engine名稱 defaultHost:默認Host jvmRoute:Tomcat集群節點路由標示,用于區分不同tomcat;
5、容器類組件Host
Host組件位于engine內部用于接收請求并進行相應處理的主機或虛擬主機,示例:【常用屬性】: appBase:此Host的webapps的默認存放目錄,指存放非歸檔的web應用程序的目錄或歸檔的WAR文件目錄路徑;可以使用基于$CATALINA_BASE變量所定義的路徑的相對路徑; autoDeploy:在Tomcat處于運行狀態時,將某webapp放置于appBase所定義的目錄中時,是否自動將其部署至tomcat; startStopThreads:線程池內的線程數量 示例: 簡單示例:
# mkdir -pv /appdata/webapps # mkdir -pv /appdata/webapps/ROOT/{lib,classes,WEB-INF} # vim /usr/local/tomcat/webapps/ROOT/index.jsp 創建一個測試頁測試即可(參照第四章節,第4小節);
6、容器類組件Context
每個Context代表一個運行在虛擬主機上的Web應用,一個Host上可以有多個Context; 【常用屬性】 path:該Web項目的URL入口;path設置為"",輸入http://localhost:8080即可訪問Webapp;path設置為"/test",輸入http://localhost:8080/test才能訪問Webapp docBas:webapps的路徑,相對或絕對路徑都可以; reloadable:自動部署配置,設置為true時,當Web項目的/WEB-INF/classes/和/WEB-INF/lib發生變化時,tomcat會自動重新部署Web項目。reloadable默認值為false。 示例:
7、嵌套類組件Valve
Valve組件常用于Tomcat的日志、權限等控制,可嵌在Engine、Host、Context內; 【常用屬性】 className: 定義訪問日志:org.apache.catalina.valves.AccessLogValve 定義訪問控制:org.apache.catalina.valves.RemoteAddrValve、org.apache.catalina.valves.RemoteHostValve 【日志配置】 className:必須為org.apache.catalina.valves.AccessLogValve directory:日志文件目錄,默認為logs(相對于$CATALINA_HOME); prefix:日志前綴,默認為localhost_access_log; suffix:日志后綴,默認為.txt; pattern:日志記錄格式;具體見后面附表; 示例:
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
【基于IP訪問控制】
className:必須為org.apache.catalina.valves.RemoteAddrValve
allow:允許名單;匹配模式:可以基于IP、IP段,IP分隔符"."需要加""轉義,可用".*"通配
deny:拒絕名單;匹配模式同allow;
示例:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40565.html
摘要:安裝配置在阿里云控制臺購買并啟動之前說過,我們選擇阿里云作為云提供商。重要目錄及文件默認的安裝目錄默認全局配置文件默認子配置文件目錄默認根目錄總結本文詳細介紹了如何在阿里云上購買并啟動一個的新實例,以及如何安裝配置和測試和。 本文是鋼哥的Oracle APEX系列文章中的其中一篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX...
摘要:使用解決多集群時同步問題所需包安裝過程下載將二進制安裝文件,賦予可執行權限可不必為整個環境設置,在中指定即可。啟動兩個節點,端口分別為如果開啟了防火墻,需要加入端口的允許規則。再次配置加入包將這些包加入下。 注意本文不討論原理,只講述具體的搭建過程,而且步驟都經過了整理,否則過程可能會出現其他異常,請自行google。apache與tomcat整合的方式除了jk之外,使用apache自...
閱讀 992·2021-11-15 18:06
閱讀 2361·2021-10-08 10:04
閱讀 2647·2019-08-28 18:03
閱讀 891·2019-08-26 13:42
閱讀 1913·2019-08-26 11:31
閱讀 2416·2019-08-23 17:13
閱讀 915·2019-08-23 16:45
閱讀 2048·2019-08-23 14:11