一般在開發環境中,咱們使用$CATALINA_HOME/bin/startup.sh來啓動tomcat, 使用$CATALINA_HOME/bin/shutdown.sh來關閉tomcat。 而在生產環境中,咱們要配置tomcat使其以daemon方式運行,這是由於:javascript
將tomcat配置成守護進程須要藉助apache-commons-daemon項目的jsvc工具, 該工具一般包含在tomcat包中(bin/commons-daemon-native.tar.gz)php
1. 配置JAVA_HOME, CATALINA_HOME兩個環境變量css
export JAVA_HOME=/opt/jdk export CATALINA_HOME=/opt/tomcat
2. 編譯安裝jsvchtml
cd $CATALINA_HOME/bin tar -xvf commons-daemon-native.tar.gz cd commons-daemon-1.0.x-native-src/unix ./configure make cp jsvc ../..
3. 建立運行tomcat的普通用戶tomcat前端
useradd -s /sbin/nologin tomcat
4. 修改$CATALINA_HOME的所屬用戶戶和用戶組,使tomcat能夠用tomcat這個普通用戶運行java
chown -R $CATALINA_HOME tomcat chgrp -R $CATALINA_HOME tomcat
5. 修改製做tomcat啓動腳本linux
$CATALINA_HOME/bin/daemon.sh是tomcat官方爲咱們提供的啓動腳本,咱們只須要修改便可。nginx
將該腳本複製到/etc/init.d中程序員
cp $CATALINA_HOME/bin/daemon.sh /etc/init.d/tomcat
有註釋位置加入chkconfig配置,使得該腳本能夠被chkconfig識別,從而配置成開機啓動web
#chkconfig: 2345 85 15
因爲service命令會去除系統環境變量,所以在腳本開始位置加入如下內容:
JAVA_HOME=/opt/jdk CATALINA_HOME=/opt/tomcat TOMCAT_USER=tomcat
6. 設置tomcat開機啓動
chkconfig tomcat on
通過上面的配置,tomcat就可以以守護進程方式運行了,並且會隨開機啓動而啓動。
7. 使用service方式啓動關閉tomcat
service tomcat start service tomcat stop
1. 版本安全
升級當前tomcat版本爲最新穩定版本。
在升級版本中,須要注意兩點:
儘可能避免跨大版本的升級
將當前老版本的server.xml , catalina.sh, web.xml和tomcat-users.xml進行備份,而後部署完新的tomcat後,將這些配置文件覆蓋過去。
2. 隱藏版本信息
當tomcat出現404或其它錯誤時,就會顯示當前版本信息,爲避免針對某一版本的攻擊,咱們應該將其隱藏或假裝
版本信息的顯示是由一個jar包控制的,該jar包存放在tomcat安裝目錄下的lib目錄下,名稱爲catalina.jar.
經過jar xf命令解壓這個jar包會獲得兩個目錄META-INF和org, 經過修改org/apache/catalina/util/ServerInfo.properties文件中的serverinfo字段來實現更改tomcat版本信息:
[root@localhost ~]# cat org/apache/catalina/util/SererInfo.properties | grep -v '^$|#' server.info=Apache Tomcat/7.0.53 server.number=7.0.53.0 serer.built=Mar 25 2014 06:20:16
固然還有另一種方法來隱藏或假裝版本信息,這兩種方法本質是同樣的:
[root@localhost ~]# cd /usr/local/apache-tomcat-7.0.53/lib [root@localhost lib]# mkdir -p org/apache/catalina/util [root@localhost lib]# cd org/apache/catalina/util [root@localhost util]# vim ServerInfo.properties server.info=nolinux # 若是想修改爲其它版本號,把這個地方的值改爲其它值就好了
修改完成以後,重啓tomcat便可看到效果!
1. 優化web.xml
servlet與其它適用於整個Web應用程序設置的配置文件,必須符合servlet規範的標準格式。經過它能夠配置你web應用的相關選項,tomcat在啓動的時候會讀取這個文件,完成你開發的系統的一些初始化操做。
它能夠作以下事情:
因爲在生產環境中,tomcat不會直接對公網提供服務,前端確定有apache或nginx,所以,默認主頁或自定義錯誤頁,咱們都在前端的apache或nginx中完成;另外也有多是由程序員在項目內的WEB-INF/web.xml中去作定義。
在tomcat新版本中,默認已經禁止列目錄功能。
下面是幾種覺的功能,在web.xml中的表現形式:
站點默認主頁:
自定義錯誤頁:
定義會話超時時間:
禁止列目錄:
2. tomcat-user.xml的優化
該文件中包含用戶名,角色及密碼。 負責提供webapps下manager項目的登陸認證管理。
在生產環境中,咱們須要將該文件所有註釋。
3. 優化server.xml
maxThreads鏈接數限制:
maxThreads是tomcat所能接受的最大鏈接數。 通常設置不要超過8000, 若是你的網站訪問量很是大可以使用多個tomcat實例的方法,即在一個服務器上啓動多個tomcat,而後作負載均衡。
tomcat和php不一樣,php能夠按照cpu和內存的狀況去配置鏈接數,因此上萬很正常。 但java還須要注意jvm的參數配置。若是不注意就會由於jvm參數太小而崩潰。
多個虛擬主機:
強烈建議不要使用tomcat的虛擬主機功能,推薦一個tomcat實例啓動一個站點。即,能夠啓動多個tomcat,而不是一個tomcat裏包含多個虛擬主機。 由於tomcat是多線程,共享內存,任何一個虛擬主機中的應用崩潰,都會影響到全部的應用程序。
壓縮傳輸:
tomcat也支持gzip壓縮功能。 能夠在server.xml配置文件中的Connector節點中配置以下參數,來實現對指定資源類型進行壓縮。
compression="on" # 打開壓縮功能 compressionMinSize="50" # 啓用壓縮的輸出內容大小,默認爲2KB noCompressionUserAgents="gozilla, traviata" # 對於如下的瀏覽器,不啓用壓縮 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" # 哪些資源類型須要壓縮
要注意的是,對於文本信息好比txt, html, css,javascript進行壓縮,效果很是好。而對文件,圖片,視頻不要壓縮。
4. 管理AJP端口:
AJP是爲tomcat與HTTP服務器之間通訊而定製的協議,能提供較高的通訊速度和效率。若是前端是apache的話,會使用到AJP這個鏈接器,若是是nginx,就用不上了,所以須要註銷掉:
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
5. 更改關閉tomcat實例的指令
server.xml中定義了能夠直接關閉tomcat實例的管理端口。 咱們經過 telnet鏈接上該端口以後,輸入shutdown便可關閉。值得注意的是,雖然實例關閉了,可是進程仍是存在的。因爲默認的端口和指令都很簡單,默認端口是8005, 指令爲SHUTDOWN. 所以咱們要改得複雜一點(固然,新版本的tomcat管理端口監聽在127.0.0.1):
<Server port="8005" shutdown="9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd">
6. 更改tomcat服務監聽端口:
<Connector port="8080" address="172.16.100.1" />
7.關閉war自動部署:
<Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">
8. 禁用tomcat管理頁面:
刪除webapps目錄下的全部文件,還涉及到管理頁面的2個配置文件host-manager.xml和manager.xml也要刪除,這兩個文件在tomcat安裝 目錄下的conf/Catalina/localhost目錄下。
9. 使用普通用戶啓動tomcat
在啓動以前須要將tomcat安裝目錄下全部文件的屬主和屬組都設置爲指定的用戶。
1. tomcat內存優化
tomcat內存優化主要是對tomcat啓動參數優化,咱們能夠在tomcat啓動腳本catalina.sh中設置JAVA——OPTS參數。
JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
參數說明:
-server 啓用jdk 的 server 版; -Xms java虛擬機初始化時的最小內存; -Xmx java虛擬機可以使用的最大內存; -XX:PermSize 內存永久保留區域 -XX:MaxPermSize 內存最大永久保留區域
-Xmx 默認爲物理內存的1/4, 實際建議不大於4GB;通常建議設置-Xms = -Xmx
-server 必定要做爲第一個參數,在多個cpu時性能 佳
-Xms 初始heap大小,使用的最小內存,cpu性能 高時能夠設置的大一些