生產環境中tomcat的配置

生產環境中要以daemon方式運行tomcat

一般在開發環境中,咱們使用$CATALINA_HOME/bin/startup.sh來啓動tomcat, 使用$CATALINA_HOME/bin/shutdown.sh來關閉tomcat。 而在生產環境中,咱們要配置tomcat使其以daemon方式運行,這是由於:javascript

  • 以daemon運行不受終端影響,不會由於退出終端而中止運行
  • 可讓tomcat以普通用戶身份運行,可讓tomcat隨linux啓動而啓動

 

如何將tomcat配置成守護進程

將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

 

tomcat安全配置

1. 版本安全

升級當前tomcat版本爲最新穩定版本。

在升級版本中,須要注意兩點:

儘可能避免跨大版本的升級

將當前老版本的server.xml , catalina.sh, web.xml和tomcat-users.xml進行備份,而後部署完新的tomcat後,將這些配置文件覆蓋過去。

2. 隱藏版本信息

當tomcat出現404或其它錯誤時,就會顯示當前版本信息,爲避免針對某一版本的攻擊,咱們應該將其隱藏或假裝

image

版本信息的顯示是由一個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便可看到效果!

 

tomcat的配置優化

1. 優化web.xml

servlet與其它適用於整個Web應用程序設置的配置文件,必須符合servlet規範的標準格式。經過它能夠配置你web應用的相關選項,tomcat在啓動的時候會讀取這個文件,完成你開發的系統的一些初始化操做。

它能夠作以下事情:

  • 提供基於servlet的相關配置
  • 增長監聽器,監控session或在tomcat啓動時,加載一些你但願加載的資源。好比建立數據庫鏈接池等
  • 設置session過時時間,tomcat默認是30分鐘
  • 更改應用的默認頁面,一般爲index.html/index.jsp等
  • 增長過濾器, 作一些你但願的過濾操做,好比敏感詞彙的過濾
  • 增長一些jstl(標準標籤庫)的定義,方便在jsp中直接include進來
  • struts, spring或hibernate的一些配置等

因爲在生產環境中,tomcat不會直接對公網提供服務,前端確定有apache或nginx,所以,默認主頁或自定義錯誤頁,咱們都在前端的apache或nginx中完成;另外也有多是由程序員在項目內的WEB-INF/web.xml中去作定義。

在tomcat新版本中,默認已經禁止列目錄功能。

下面是幾種覺的功能,在web.xml中的表現形式:

站點默認主頁:

image

自定義錯誤頁:

image

定義會話超時時間:

image

禁止列目錄:

image

 

2. tomcat-user.xml的優化

該文件中包含用戶名,角色及密碼。 負責提供webapps下manager項目的登陸認證管理。

在生產環境中,咱們須要將該文件所有註釋。

image

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安裝目錄下全部文件的屬主和屬組都設置爲指定的用戶。

 

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性能 高時能夠設置的大一些

相關文章
相關標籤/搜索