tomcat
php
Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其餘一些公司及我的共同開發而成。因爲有了Sun 的參與和支持,最新的Servlet 和JSP規範老是能在Tomcat 中獲得體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規範。由於Tomcat 技術先進、性能穩定,並且免費,於是深受Java愛好者的喜好並獲得了部分軟件開發商的承認,成爲目前比較流行的Web 應用服務器。 Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選。對於一個初學者來講,能夠這樣認爲,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,因此當你運行tomcat 時,它實際上做爲一個與Apache 獨立的進程單獨運行的。 訣竅是,當配置正確時,Apache 爲HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器同樣,具備處理HTML頁面的功能,另外它仍是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本爲9.0。
Apache軟件基金會:http://apache.org/index.html#projects-listhtml
TOMCAT版本的區別主要反映在兩個方面:java
1. Tomcat自己的技術演進,包括性能的不斷提升,功能的增長加強,甚至於重構 2. 由於Tomcat自己是塊Servlet容器的試驗田,因此他的版本是跟Servlet和JSP的規範一塊兒發展
能夠參考官方文檔: 此處是連接
linux
tomcat 6.x
tomcat 7.x
tomcat 8.x
tomcat 9.xdocker
環境準備apache
[root@abcdocker ~]# /etc/init.d/iptables stop
[root@abcdocker ~]# getenforce
Disabled
#提示:由於tomcat是主要跑程序的,內存是須要比較大的。若是咱們本地測試能夠設置低一點
安裝JDK
tomcat運行須要JDK支持vim
下載安裝http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
配置Java環境
# tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/local/
# ln –s /usr/local/jdk1.8.0_91 /usr/local/jdk
# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
看到以下信息,java環境配置成功
# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
舒適提示: JDK版本最好對應tomcat版本(可能會出現不兼容現學)tomcat
安裝Tomcatbash
[root@abcdocker ~]# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.13/bin/apache-tomcat-8.5.13.tar.gz
[root@abcdocker ~]# tar xf apache-tomcat-8.5.13.tar.gz -C /usr/local/
[root@abcdocker ~]# mv /usr/local/apache-tomcat-8.5.13.tar.gz/ /usr/local/tomcat
啓動
[root@abcdocker ~]# /usr/local/tomcat/bin/startup.sh && tailf /usr/local/tomcat/logs/catalina.out
#這樣啓動是爲了方便看日誌
tomcat啓動中止腳本
# 啓動startup.sh
# 中止shutdown.sh
訪問路徑:http://ip:8080 (默認8080端口)
服務器
提示: 更詳細的tomcat配置能夠參考http://www.zyops.com/java-tomcat
本文只是對幾個比較重要的配置文件進行講解
tomcat配置文件路徑/tomcat/bin/server.xml
# shutdown指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性必須設置
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
service服務配置
<Connector port="8221" protocol="HTTP/1.1" #port 端口配置
connectionTimeout="20000" #connectionTimeout指定超時的時間數(以毫秒爲單位)
maxThreads="3000" #tomcat起動的最大線程數,即同時處理的任務個數,默認值爲200
minSpareThreads="100" #初始化時建立的線程數
acceptCount="800" #指定當全部可使用的處理請求的線程數都被使用時,能夠放處處理隊列中的請求數,超過這個數的請求將不予處理
maxKeepAliveRequests="200" #表示該鏈接最大支持的請求數。超過該請求數的鏈接也將被關閉(此時就會返回一個Connection: close頭給客戶端)。
redirectPort="8443" /> #指定服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號
優化catalina.sh配置文件。在catalina.sh配置文件中添加如下代碼:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
server:必定要做爲第一個參數,在多個CPU時性能佳
-Xms:初始堆內存Heap大小,使用的最小內存,cpu性能高時此值應設的大一些
-Xmx:初始堆內存heap最大值,使用的最大內存
上面兩個值是分配JVM的最小和最大內存,取決於硬件物理內存的大小,建議均設爲物理內存的一半。
-XX:PermSize:設定內存的永久保存區域
-XX:MaxPermSize:設定最大內存的永久保存區域
-XX:MaxNewSize:
-Xss 15120 這使得JBoss每增長一個線程(thread)就會當即消耗15M內存,而最佳值應該是128K,默認值好像是512k.
+XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。
-Xss:每一個線程的Stack大小
-verbose:gc 現實垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日誌文件
-Xmn:young generation的heap大小,通常設置爲Xmx的3、4分之一
-XX:+UseParNewGC :縮短minor收集的時間
-XX:+UseConcMarkSweepGC :縮短major收集的時間
例子:我公司服務器Tomcat內存設置以下
服務器硬件:2核8G
tomcat實例:3個tomcat實例
JAVA_OPTS="-server -Xms2048m -Xmx4096m"
在tomcat配置文件/conf/server.xml
下配置
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t %r %s %b" />
前面有負載均衡的時候,獲取真實IP可使用下面的配置
<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" />
考慮到Tomcat啓動每次須要手動比較麻煩,咱們這有寫好的啓動腳本
#!/bin/bash
# chkconfig: 2345 74 44
# description: Tomcat is a Java Servlet Container
. /etc/profile
TOMCAT_HOME=/usr/local/tomcat
start () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
/bin/bash $TOMCAT_HOME/bin/startup.sh
else
echo "$0 is running"
fi
}
stop () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
echo "$0 is not running"
else
echo "shutting down $0"
kill -9 "$TOMCAT_PID" && echo "PID $TOMCAT_PID killed."
fi
}
status () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
echo "$0 is not running"
else
echo "$0 is running PID is $TOMCAT_PID"
fi
}
case $1 in
start)
start
#tail -f $TOMCAT_HOME/logs/catalina.out
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
#tail -f $TOMCAT_HOME/logs/catalina.out
;;
*)
echo "Usage:$0 {start|stop|status|restart}."
;;
esac
提示: 本腳本不提供log,還須要在腳本後面加上&& tailf logs/catalina.out
jar包種類介紹 http://blog.csdn.net/helloxiaoliang/article/details/39030909
不少時候開發會給咱們一個jar包,讓咱們進行運行.啓動命令以下:
jar 包啓動
[root@tomcat univ-public]# nohup java -jar jar包名稱.jar > user.out &
#具體不介紹了,百度去吧