Tomcat系統文檔
文檔描述
主要了解Tomcat概念、作用、安裝、啓動及配置和部署應用程序。
二、Tomcat概念和作用
1、概念
Tomcat是Apache 軟件基金會(ApacheSoftware Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器。
Tomcat部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作爲一個與Apache獨立的進程單獨運行的,
當配置正確時,Apache 爲HTML頁面服務,而Tomcat實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本爲8.0。
2、特性
開源,
免費
技術先進,支持最新的jsp和servlet技術
3、應用
在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。
4、版本
Tomcat 目前最新版本爲8.0,7.0和6.0 也在常用中
Tomcat和servlet/JSP版本對應如下
Servlet/JSP____Apache Tomcat 版本。
---------------------------------------------
3.1/2.3____ 8.0.X[1]
3.0/2.2____ 7.0.X
2.5/2.1____ 6.0.X
三、安裝
3.1、windows安裝
3.1.1、工具準備
官網下載JDK,和tomcat,這個參考3.2.1節點,選擇window版本 zip下載
3.1.2、工具準備
Tomcat解壓即可使用
JDK解壓即可使用,需要配置環境變量 JAVA_HOME 和PATH路徑
3.2、linux安裝
3.2.1、工具準備
需要JDK和tomcat安裝包 ,這裏都是使用最新安裝包
1、下載JDK
參考文檔:http://jingyan.baidu.com/article/e4511cf3e112ac2b845eaf8f.html
jdk-8u45-linux-x64.tar.gz
2、tomcat 8
apache-tomcat-8.0.23.tar.gz
3.2.2、上傳JDK和Tomcat
在/usr/local目錄下,新增java和tomcat目錄。
/usr/local/java
/usr/local/tomcat
將安裝包分別上傳java和tomcat目錄下。
3.2.3、安裝JDK
來到JDK安裝包所在的目錄:
#cd /usr/local/java
1、解壓
#tar –zxvf jdk-8u45-linux-x64.tar.gz
生成JDK目錄:/usr/local/java/jdk1.8.0_45
# ./java –version
顯示jdk版本表示安裝成功
2、配置環境變量
# vi /etc/profile
在最後添加變量設置
export JAVA_HOME=/usr/local/java/jdk1.7
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:
$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
如圖:
立即生效:
# source /etc/profile
3.2.4、安裝Tomcat
來到安裝包所在的目錄:
#cd /usr/local/tomcat
#tar –zxvf apache-tomcat-8.0.23.tar.gz
生成目錄:apache-tomcat-8.0.23
3.2.5、啓動時指定JDK
若環境變量已經配置了JAVA_HOME並且在PATH路徑添加了JAVA_HOME則,tomcat啓動時默認調用這個。
若想指定的JDK來運行,需要如下配置
配置/usr/local/tomcat/bin/catalina.sh文件
#vi /usr/local/tomcat/apache-tomcat-8.0.23/bin/catalina.sh
編輯文件
添加 JAVA_HOME 和JRE_HOME
命令如下:
exportJAVA_HOME=/usr/local/java/jdk1.8.0_45
exportJRE_HOME=/usr/local/java/jdk1.8.0_45/jre
還推薦在setclasspath.sh文件開頭也添加上面配置
3.2.6、配置內置端口
本機安裝多個tomcat或者多個web容器時,則出現默認端口號被佔用,則需修改內置端口。
#cd /usr/local/tomcat/apache-tomcat-8.0.23/conf
編輯:server.xml文件,修改8080端口爲9090端口
重新服務
四、管理
1、啓動服務
進入目錄:
#cd /usr/local/tomcat/apache-tomcat-8.0.23/bin
啓動服務
# nohup ./startup.sh &
查看啓動進程如下:
打開網頁,輸入:http://192.168.188.26:9090/
表明tomat安裝成功。
2、停止服務
查找tomcat進程
# ps aux|grep tomcat
殺進程
Kill-9 17166
3、查看版本
#./version
4、設置管理密碼
管理頁面訪問:
http://192.168.188.26:9090/manager
初始使用時,提示輸入用戶和密碼
修改/conf/tomcat_users.xml文件
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat"roles="tomcat"/>
<user username="both" password="tomcat"roles="tomcat,role1"/>
<user username="role1" password="tomcat"roles="role1"/>
</tomcat-users>
修改/conf/tomcat_users.xml文件
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="role1"/>
<user username="zhenyun.su" password="daphne"roles="manager-gui"/>
<user username="both" password="tomcat"roles="manager-gui,role1"/>
<user username="role1" password="tomcat"roles="role1"/>
</tomcat-users>
重啓服務後,重新登入
管理員詳細介紹,請查看第五章節。
五、控制檯
http://192.168.188.26:9090/manager
如果需要輸入用戶密碼,請詳細看4節的設置管理密碼
5.1、功能
1、應用程序列表
2、部署應用程序
界面可以選擇上傳War file 文件,點擊deploy
2、服務狀態(server status)
六、配置
配置前先了解下tomcat的目錄結構。
6.1、目錄結構
5.1.4、目錄結構
目錄說明:
bin :各種執行命令,比如啓動腳本 startup.sh
conf:配置文件,比如server.xml 配置監聽端口,web.xml
lib : 存放Tomcat運行需要的jar包
logs : Tomcat運行的相關日誌文件,比如啓動時的日誌 catalina.log
temp : Tomcat運行的臨時文件。
webapps: Web應用的發佈目錄,默認情況下把Web應用文件放於此目錄。
work: Tomcat的工作目錄,默認情況下把編譯JSP文件生成的servlet類文件放於此目錄下
6.2、配置
http://blog.csdn.net/gyming/article/details/36060843
1、JVM內存配置
編輯腳本:/bin/catalina.sh
新增配置如下:
JAVA_OPTS="-server -Xms256m -Xmx512m-XX:PermSize=64M -XX:MaxPermSize=128m
Windows下也是這樣來配置的。
參數解釋:
-server:一定要作爲第一個參數,在多個CPU時性能佳
-Xms:java Heap初始大小。 默認是物理內存的1/64。
-Xmx:java heap最大值。建議均設爲物理內存的一半。不可超過物理內存。
-XX:PermSize:設定內存的永久保存區初始大小,缺省值爲64M。(我用visualvm.exe查看的)
-XX:MaxPermSize:設定內存的永久保存區最大 大小,缺省值爲64M。(我用visualvm.exe查看的)
-XX:SurvivorRatio=2 :生還者池的大小,默認是2,如果垃圾回收變成了瓶頸,您可以嘗試定製生成池設置
-XX:NewSize: 新生成的池的初始大小。 缺省值爲2M。
-XX:MaxNewSize: 新生成的池的最大大小。 缺省值爲32M。
如果 JVM 的堆大小大於 1GB,則應該使用值:-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16,或者將堆的總大小的 50% 到 60% 分配給新生成的池。調大新對象區,減少Full GC次數。
2、線程數配置
在tomcat配置文檔server.xml中的配置中,和連接數相關的參數有:
maxThreads:
Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。默認值200。
acceptCount:
指定當任何能夠使用的處理請求的線程數都被使用時,能夠放到處理隊列中的請求數,超過這個數的請求將不予處理。默認值10。
minSpareThreads:
Tomcat初始化時創建的線程數。默認值4。
maxSpareThreads:
一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。默認值50。
enableLookups:
是否反查域名,默認值爲true。爲了提高處理能力,應配置爲false
connnectionTimeout:
網絡連接超時,默認值60000,單位:毫秒。配置爲0表示永不超時,這樣配置有隱患的。通常可配置爲30000毫秒。
maxKeepAliveRequests:
保持請求數量,默認值100。
bufferSize:
輸入流緩衝大小,默認值2048 bytes。
compression:
壓縮傳輸,取值on/off/force,默認值off。
其中和最大連接數相關的參數爲maxThreads和acceptCount。假如要加大併發連接數,應同時加大這兩個參數。web server允許的最大連接數還受制於操作系統的內核
參數配置,通常Windows是2000個左右,Linux是1000個左右。
3、tomcat中如何禁止和允許列目錄下的文檔
在{tomcat_home}/conf/web.xml中,把listings參數配置成false即可,如下:
<servlet>
...
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
...
</servlet>
4、tomcat中如何禁止和允許主機或IP地址訪問
<Host ...>
...
<ValveclassName="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<ValveclassName="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
...
</Host>
七、部署應用程序
部署的應用程序,請查看我的博文並下載項目源代碼:
http://blog.csdn.net/big2008bone/article/details/46723325
7.1、部署到本地安裝的tomcat
7.1.1、使用eclipse來自動部署
參考這邊文章即可:http://blog.csdn.net/lucklq/article/details/7621807
提示:
1、配置過程,需要單獨啓動Tomcat的服務。
2、web項目中指定tomcat 的lib必須和tomcat版本一致
3、重新run as 即可發佈程序到本地安裝目錄
部署後,產生的文件如下:
會自動備份conf下的配置文件,生成到新的目錄。
通過比較部署前和部署後的配置文件(server.xml,web.xml, context.xml),只有server.xml 發生變化。
多一個context節點。
docBase: 表示項目的跟目錄
path:表示項目的名稱,訪問路徑:http://localhost:8080/JSP_JavaBean_servlet
reloadable = true: 表示這個站點可以自動加載,代碼重新部署無需重啓服務。
source : 表示指定服務的名稱。
通過參考這些,我們也可以進行手工部署。
7.1.2、拷貝代碼手工部署
1、修改配置文件 server.xml
新增如下context節點
Workdir: 表示tomcat運行jsp或servlet後產生的java或class文件。
2、將JSP_JavaBean_servlet代碼拷貝到
E:\6_Java\6_webcontainer\apache-tomcat\apache-tomcat-8.0.21\webapps\目錄下
重新啓動服務。訪問:http://localhost:8080/JSP_JavaBean_servlet1/
7.1.3、使用war手工部署
將JSP_JavaBean_servlet.war拷貝到
apache-tomcat\apache-tomcat-8.0.21\webapps目錄下,若tomcat服務已經開了,war文件自動解壓,即可使用http://localhost:8080/JSP_JavaBean_servlet
若拷貝到其他目錄,則需要配置server.xml下,新增context節點,來指定目錄,請參考7.1.2,手工配置。
7.2、部署到遠程的tomcat
環境說明:
linux= centos 5.10 64 位
JDK = jdk1.8
Tomcat = tomcat 8.0v
Mysql = mysql5
提示:mysql和tomcat同一臺服務器
數據庫代碼部署:
(連接到mysql創建數據庫demo,及表user)
Createdatabase demo;
DROPTABLE IF EXISTS `user`;
CREATETABLE `user` (
`id` int(10) unsigned NOT NULLAUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`iphone` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;
在部署代碼前,需要確認數據庫連接是否正常
7.2.1、拷貝代碼手工部署
1、配置server.xml
2、將代碼手工通過ftp上傳linux的tomcat安裝目錄的webapps路徑下
7.2.2、拷貝war手工部署
將JSP_JavaBean_servlet.war上傳到webapps目錄下
自動解壓
7.2.3、通過控制檯部署
登錄後臺:http://192.168.188.26:9090/manager
選擇文件,上傳本地war文件,然後點擊deploy即可部署
八、性能監控
以後再補上
九、變更記錄&常見問題&參考資料
9.1、變更記錄
9.2、常見問題
1、訪問網頁報錯如下
[Fiddler] The connection to '192.168.188.26' failed.
Error: ConnectionRefused (0x274d).
System.Net.Sockets.SocketException 由於目標機器積極拒絕,無法連接
後天tomcat 服務訪問不通,可能原因tomcat服務掛掉
9.3、參考資料
參考博文:
http://blog.sina.com.cn/s/blog_6dae5a690100xgh3.html