tomcat学习笔记1
tomcat是一個開源軟件,是由java語言編寫的,它工作的話需要運行在jvm虛擬機中,說到jvm不得不說下java這個大名鼎鼎的編程
語言了
java這個編程語言最優秀的特點要數write once , run anywhere ?額!怎么聽起來有點流氓的感覺 ?沒錯,而這全是依賴于jvm這個
虛擬機,使得java可以在任何平臺運行,這恐怕也是java為什么這么流行的原因吧
簡單的說jvm虛擬機既是個編譯環境為程序員提供許多的庫,又是個運行環境java語言寫的程序都需要在jvm上運行,而jvm自己卻是
使用c語言開發的,使得性能沒的說 “好”
有一個非常重要的工具jdk(java development kit)是為java程序員寫程序用的,而jdk中就包含了jvm
1998年 sun公司把java技術分為三個方向
J2SE:Standard Edition
J2EE:Enterprise Edition(比J2SE 提供更多工具和庫)
J2ME:Mobile Edition 很遺憾這個版本到現在搞得不成功
后來sun把java技術賣給Oracle這個大公司,不過2006 sun公司開源了java技術并有一個叫openjdk的組織來維護,從此java 2 SE
?java 2 EE出現了
tomcat 就是使用了java 2 SE 和java 2 EE中的一些組件 ?更形象的說是一個web container,作用是使得java程序員寫的.jsp網頁能
都通過tomcat發給客戶端
tomcat的組件:
<Server>
<Service>
<connector/>
<connector/>
<Engine>
<Host />
<Host>
<Context/>
...
</Host>
</Engine>
</Service>
</Server>
htpp的請求通過cgi或者java支持的其他協議被發送到server(一個server中可以有多個service)server通過connector(一個
service可以有多個connector)發送給Engine(一個service只能包含一個engine)
所有工作就在Engine中的Host和Context中完成一個(一個engine可以包含多個host,host下又可包含多個context)
既然tomcat依賴jvm那就先得在centos下安裝jdk?
現在主流版本是1.7 ? yum -y install java-1.7.0-openjdk-devel (openjdk這個包會被作為依賴關系也給裝上)
?
查看版本
?
可以看到這是個鏈接文件
?
這又是個鏈接,如果主機上有多個java版本可以使用alternatives命令來決定使用哪個版本
openjdk的許多命令的運行依賴$JAVA_HOME這個環境變量
?
vim /etc/profile.d/java.sh
exec bash 重啟bash進程
?
注意tomcat在epel源中,首先得安裝epel源,我這事先已經安裝了
yum -y install tomcat tomcat-admin-webapps tomcat-webapps安裝這幾個必要組件(后面兩個可以不用裝,它們是提供一個
web管理頁,和一個普通web頁面目的用于測試tomcat安裝是否成功)
這些組件具體什么作用使用yum -info 命令查看
rpm -ql tomcat?
/etc/tomcat/server.xml是tomcat的主配置文件 service tomcat start ?ss -tnl查看監聽的端口
8009和8080兩個端口都被監聽了 ?去查看配置文件vim /etc/tomcat/server.xml
?
原來是這兩個地方定義的 ? Connector是連接器
去訪問一下
?
ss -tnl
發現多了一個8005端口, vim /etc/tomcat/server.xml
?
可以通過telnet命令關掉此端口,yum -y install telnet
?
service tomcat start
8005端口沒有了,這樣看著就更簡潔了
webapp的文件根目錄默認放置在/usr/share/tomcat/webapps目錄下,現在去此目錄建個自己的webapp
Java Webapp?有特定的組織形式、層次型的目錄結構
/:webapps的根目錄
index.jsp:jsp的主頁面文件
WEB-INF/:當前webapp的私有資源目錄,通常存放當前webapp自用的web.xml
classes/: 當前webapp的私有類
lib/:當前webapp的私有類,被打包成jar格式
cd /usr/share/tomcat/webapps(這是個軟鏈接) ? mkdir myapp ? mkdir {classes, WEB-INF,lib}
?
?vim index.jsp
去瀏覽器中查看一下
?
回到默認虛擬主機
點擊Manager App
點擊取消
vim /usr/share/tomcat/conf/tomcat-user.xml 添加如下幾行
service tomcat restart ? Manager App和Host Manager都能訪問了
?
vim /etc/tomcat/server.xml ?
Engine:Server的一個實例,即引擎,其內部可以有一個或多個Host組件來定義站點;通常需要通過defaultHost的屬性定義默認虛
擬主機
?
Host組件:位于Engine容器中用于接收請求并進行相應處理的主機或虛擬主機
appBase:存放webapp頁面資源的目錄,可以使用絕對路徑也可使用相對路徑,此處使用的是相對路徑webapps--
>/usr/share/tomcat/webapps
unpackWars:在啟用此webapps時是否對WAR格式的歸檔文件先進行展開;默認為true
autoDeploy:在Tomcat處于運行狀態時放置于appBase目錄中的應用程序文件是否自動進行deploy;默認為true
?
自己手動創建一臺虛擬主機
mkdir -pv /data/myapps/ROOT ROOT(這個目錄是存放webapp網頁資源文件的默認目錄) cd /data/myapps/ROOT? mkdir
{classes,lib,WEB-INF}? service tomcat restart
vim index.jsp ?將前面的 .jsp復制過來
?
繼續在該虛擬主機下定義一<Context/>
?
上面這圖有一點錯誤在此更正,fine的前面應該有根/,即path=“/fine”
path指的是hello.com/fine ? ? testapp相對于/data/myapps的路徑-->/data/myapps/testapp,也可以使用絕對路徑 ?
reloadable是否支持自動裝載文件每當文件改變時
cd /data/myapps ? ?mkdir -pv testapp/{lib,classes,WEB-INF} ? cd testapp ?
vim index.jsp ?
?
tomcat的Realm ?這個組件平時不用,不用管了
?
Valve 類似于過濾器 ?工作于Engine和Host/Context之間,Host和Context之間以及Context和Web應用程序的某資源之間,一個
server內可以建立多個Valve,而且Valve定義的次序也決定了它們生效的次序
vim /etc/tomcat/server.xml
className 定義這個Valve的名字 ? AccesslogValve訪問日志(Valve可以定義在Host,如果定義在Host中則對所有Context生效,
也可以單獨定義在Context中指對一個Context生效),前面的一大堆只是為了這個className的名字保持唯一(不用去管它) ?
directory="logs" ?相對于/usr/share/tomcat而言的-->/usr/share/tomcat/logs,也可使用絕對路徑
prefix指定日志文件前綴
suffix指定日志文件后綴
pattern指定日志的記錄格式
每個虛擬主機都可定義自己的AccessLogValve,格式就是上面圖的格式一樣,不過此日志格式跟apache的httpd日志記錄格式不一樣
?
很多時候為為了做日志分析需要將tomcat的日志格式更改為htppd的日志格式,很簡單把pattern更改為combined就行:
pattern="combined"
?
繼續使用Valve 基于ip地址做訪問控制,在新定義的虛擬主機中做測試
?
補充:建議使用普通用戶運行tomcat,在生產環境下webapp很少進行熱部署,一般使用冷部署
?
轉載于:https://www.cnblogs.com/linuxboke/p/5427792.html
總結
以上是生活随笔為你收集整理的tomcat学习笔记1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图的存储结构-十字链表
- 下一篇: 使用arm混合汇编计算两个64位的和_混