Tomcat服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP程序的首選。html
======== 完美的分割線 ========java
1)Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其餘一些公司及我的共同開發而成。因爲有了Sun 的參與和支持,最新的Servlet 和JSP規範老是能在Tomcat 中獲得體現,Tomcat 5支持最新的Servlet 2.4 和JSP2.0 規範。
2)由於Tomcat 技術先進、性能穩定,並且免費,於是深受Java愛好者的喜好並獲得了部分軟件開發商的承認,成爲目前比較流行的Web 應用服務器。
3)Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選。
4)應用:
對於一個初學者來講,能夠這樣認爲,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,因此當你運行tomcat 時,它實際上做爲一個與Apache 獨立的進程單獨運行的。當配置正確時,Apache爲HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。
5)Tomcat和IIS等Web服務器同樣,具備處理HTML頁面的功能,另外它仍是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本爲9.0。
6)Apache軟件基金會:http://apache.org/index.html#projects-listnode
TOMCAT版本的區別主要反映在兩個方面:
1)Tomcat自己的技術演進,包括性能的不斷提升,功能的增長加強,甚至於重構
2)由於Tomcat自己是塊Servlet容器的試驗田,因此他的版本是跟Servlet和JSP的規範一塊兒發展
3)參考文檔:http://tomcat.apache.org/whichversion.htmllinux
1)關閉防火牆和selinux等軟件web
/etc/init.d/iptables stop
getenforce
# tomcat運行須要jdk的Java環境,且版本最好對應,防止不兼容apache
# jdk下載地址:vim
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html瀏覽器
1)進入安裝目錄,下載jdk包到服務器(jdk-8u181-linux-x64.rpm)tomcat
mkdir -p /server/tools
cd /server/tools/
2)查看已安裝的jdk,卸載已安裝的jdk服務器
rpm -qa | grep jdk
rpm -e --nodeps jdk
3)安裝新下載的jdk
rpm -ivh jdk-8u181-linux-x64.rpm
java -version
4)配置環境變量腳本
echo '#!/bin/sh' >>/etc/profile.d/java.sh echo "# This is JAVA profile by zhaoshuai in $(date +%F)." >>/etc/profile.d/java.sh echo 'export JAVA_HOME=/usr/java/latest' >>/etc/profile.d/java.sh echo 'export PATH=$JAVA_HOME/bin:$PATH' >>/etc/profile.d/java.sh cat /etc/profile.d/java.sh
# 應用變量
source /etc/profile.d/java.sh
echo $JAVA_HOME
echo $PATH
# 檢查確認安裝結果
[root@tomcat-srv ~]# java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
# jdk1.8對應tomcat能夠選擇tomcat8的版本,如下爲下載地址:
http://mirrors.hust.edu.cn/apache/tomcat/
# 目前tomcat8有兩個在維護的最新版本:8.0和8.5,我這裏使用8.5的
1)下載解壓安裝tomcat8
wget http://124.202.164.6/files/404800000C94EC02/mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz tar xf apache-tomcat-8.5.34.tar.gz mv apache-tomcat-8.5.34 /usr/local/tomcat1
2)啓動tomcat8
/usr/local/tomcat1/bin/startup.sh # 啓動tomcat tail -f /usr/local/tomcat1/logs/catalina.out # 查看tomcat日誌
3)檢查啓動是否成功
[root@tomcat-srv tools]# netstat -anptl |grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 21798/java
# 也能夠經過瀏覽器訪問:http://ip:8080,能夠看到如下頁面
# tomcat自帶的啓動和中止腳本
/usr/local/tomcat1/bin/ # 腳本目錄 startup.sh # 啓動tomcat shutdown.sh # 中止tomcat
# 查看tomcat啓動日誌
# 出現「Server startup in 1128 ms」等字眼表示啓動成功 ---------------------------------------- [root@tomcat-srv tools]# tail -f /usr/local/tomcat1/logs/catalina.out 14-Sep-2018 03:41:01.727 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat1/webapps/docs] 14-Sep-2018 03:41:01.751 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat1/webapps/docs] has finished in [23] ms 14-Sep-2018 03:41:01.751 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat1/webapps/examples] 14-Sep-2018 03:41:02.107 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat1/webapps/examples] has finished in [356] ms 14-Sep-2018 03:41:02.107 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat1/webapps/host-manager] 14-Sep-2018 03:41:02.136 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat1/webapps/host-manager] has finished in [29] ms 14-Sep-2018 03:41:02.136 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat1/webapps/manager] 14-Sep-2018 03:41:02.193 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat1/webapps/manager] has finished in [57] ms 14-Sep-2018 03:41:02.213 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 14-Sep-2018 03:41:02.278 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 1128 ms
# 實際測試生產環境中shutdown.是腳本可能沒法正常停掉tomcat進程,能夠本身定義一些腳本用於啓動中止和更新tomcat項目
# tomcat主配置文件/usr/local/tomcat1/conf/server.xml
# 默認的項目根目錄爲tomcat目錄下的"webapps/ROOT",爲了使用方便通常會修改成其餘目錄
# 在150行左右,Host標籤裏
vim /usr/local/tomcat1/conf/server.xml -------------------------------------- <Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false"> </Host> --------------------------------------
# 在後面添加如下內容,修改成須要的目錄
<Context path="" docBase="/usr/local/tomcat1/www.web.com" workDir="/usr/local/tomcat1/work/" reloadable="false"/>
# 以後將Java項目放到/usr/local/tomcat1/www.web.com裏面啓動tomcat便可
# 若是但願在同一臺服務器運行多個項目且不但願各個tomcat互相影響,就須要修改tomcat的默認端口,防止複製後的tomcat出現端口衝突的問題
# 在Service標籤裏,大約69行的Connector標籤裏
vim /usr/local/tomcat1/conf/server.xml -------------------------------------- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" # connectionTimeout指定超時的時間數(單位毫秒) redirectPort="8443" /> --------------------------------------
# 將8080修改成須要的端口,例如:
tomcat1:8081 tomcat2:8082 tomcat3:8083 ......
# 該Connector字段可使用的其餘的一些配置參數
maxThreads="3000" # tomcat起動的最大線程數,即同時處理的任務個數,默認值爲200 minSpareThreads="100" # 初始化時建立的線程數 acceptCount="800" # 當全部可使用的線程數都被使用時,能夠放處處理隊列中的請求數,超過這個數的請求將不予處理 maxKeepAliveRequests="200" # 表示該鏈接最大支持的請求數。超過該請求數的鏈接將被關閉(此時就會返回一個Connection: close頭給客戶端)。 URIEncoding="UTF-8" # 指定字符集 redirectPort="8443" # 服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號
# 其餘可能引發衝突的端口8005和8009:
8005端口:tomcat1能夠修改成8071
shutdown.sh在終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性必須設置,
8009端口:tomcat1能夠修改成8091
# 編輯catalina.sh文件,在第98行,增長配置開啓調試端口(注意端口不要大於65535,不然沒法啓動)
vim /usr/local/tomcat1/bin/catalina.sh ----------------------------------- # made for debug port by zhaoshuai declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081" -----------------------------------
# tomcat性能調試能夠用到
vim /usr/local/tomcat1/bin/catalina.sh ----------------------------------- JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=60001" # 遠程監控端口 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" -----------------------------------
vim /usr/local/tomcat1/bin/catalina.sh ----------------------------------- # made for memory by zhaoshuai JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m" # 初始化調用內存 -----------------------------------
# 經常使用內存分配參數簡介:
-server:必定要做爲第一個參數,在多個CPU時性能佳 -Xms:初始堆內存Heap大小,tomcat啓動時使用的最小內存,cpu性能高時此值應設的大一些 -Xmx:初始堆內存heap最大值,tomcat啓動時可使用的最大內存 # 上面兩個值是分配JVM的最小和最大內存,取決於硬件物理內存的大小 -XX:PermSize:設定內存的永久保存區域,全稱爲permanent size(持久化內存) -XX:MaxPermSize:設定最大內存的永久保存區域 -XX:newSize:表示新生代初始內存的大小,應該小於-Xms的值; -XX:MaxnewSize:表示新生代可被分配的內存的最大上限;固然這個值應該小於-Xmx的值; -Xmn:這個參數是對 -XX:newSize、-XX:MaxnewSize兩個參數的同時配置,也就是說若是經過-Xmn來配置新生代的內存大小,那麼-XX:newSize = -XX:MaxnewSize = -Xmn,很方便,可是這個參數是在JDK1.4版本之後才使用的。 -Xss:每一個線程的Stack大小 -Xss 15120 這使得JBoss每增長一個線程(thread)就會當即消耗15M內存,而最佳值應該是128K,默認512k +XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。 -verbose:gc 現實垃圾收集信息 -Xloggc:gc.log 指定垃圾收集日誌文件 -Xmn:young generation的heap大小,通常設置爲Xmx的三、4分之一 -XX:+UseParNewGC :縮短minor收集的時間 -XX:+UseConcMarkSweepGC :縮短major收集的時間
# 能夠與上面的調試端口,性能監控端口一塊兒使用,會消耗必定的系統資源
vim /usr/local/tomcat1/bin/catalina.sh ----------------------------------- declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=80811 -XX:+PrintFlagsFinal -XX:+PrintConcurrentLocks -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat1/logs/heap.bin -Xloggc:/usr/local/tomcat1/logs/gc.log -XX:ErrorFile=/usr/local/tomcat1/logs/error.log -Dcom.sun.management.jmxremote.port=60001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" -----------------------------------
# 160行左右,Host標籤,前面有負載均衡的時候,獲取真實IP能夠修改成下面的配置
vim /usr/local/tomcat1/conf/server.xml ----------------------------------- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%{X-Forwarded-For}i %h %l %u %t %r %s %b" /> -----------------------------------
======== 完畢,呵呵呵呵 ========