tomcat的安裝和優化

tomcat的安裝html

jdk版本安裝java

#!/bin/bash
# desc: jdk安裝腳本1.6 1.7 1.8
download_url='http://**************'
jdk_env='/etc/profile.d/java-env.sh'

# apr模式
yum install -y epel-release tomcat-native apr*
# 熵池底包
yum -y install rng-tools
echo 'EXTRAOPTIONS="--rng-device /dev/urandom"' >/etc/sysconfig/rngd
service rngd start
chkconfig rngd on

function jdk6() {
jdk_tar='jdk-6u45-linux-x64.bin'
jdk_dir='jdk1.6.0_45'

[ -d /usr/java ] || mkdir /usr/java
[ -f ${jdk_tar} ] || wget $download_url/${jdk_tar}
chmod  +x $jdk_tar
[ -d ${jdk_dir} ] || ./$jdk_tar
[ -d /usr/java/${jdk_dir} ] || mv $jdk_dir /usr/java

[ -f ${jdk_env} ] || echo 'export JAVA_HOME=/usr/java/jdk1.6.0_45
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib' > $jdk_env
}

function jdk7() {
jdk_tar='jdk-7u79-linux-x64.tar.gz'
jdk_dir='jdk1.7.0_79'

[ -d /usr/java ] || mkdir /usr/java
[ -f ${jdk_tar} ] || wget $download_url/${jdk_tar}
[ -d /usr/java/$jdk_dir ] || tar -xvf ${jdk_tar} -C /usr/java

[ -f ${jdk_env} ] || echo 'export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib'>$jdk_env
}

function jdk8() {
jdk_tar='jdk-8u144-linux-x64.tar.gz'
jdk_dir='jdk1.8.0_144'

[ -d /usr/java ] || mkdir /usr/java
[ -f ${jdk_tar} ] || wget $download_url/${jdk_tar}
[ -d /usr/java/$jdk_dir ] || tar -xvf ${jdk_tar} -C /usr/java

[ -f ${jdk_env} ] || echo 'export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib' >$jdk_env
}

case $1 in
6)
jdk6
;;
7)
jdk7
;;
8)
jdk8
;;
*)
echo "you must select jdk version!!"
echo "bash $0 6|7|8"
exit
;;
esac

另外一個腳本:linux

#!/bin/bash

# JDK6
wget http://69.172.86.99:98/jdk-6u45-linux-x64.bin
# JDK7
wget http://某個ip/jdk-7u79-linux-x64.tar.gz
# JDK8
wget http://某個ip/jdk-8u144-linux-x64.tar.gz

---
# 此處以jdk7舉例
tar -zxvf jdk-7u79-linux-x64.tar.gz 
mkdir /usr/java
mv jdk1.7.0_79/ /usr/java/

# java-env配置
vim /etc/profile.d/java-env.sh
************************************
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib
************************************

# catalina.sh
************************************
JAVA_HOME=/usr/java/jdk1.7.0_79
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib

JAVA_OPTS="-server -Xms2G -Xmx8G  -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+AggressiveOpts -XX:MaxDirectMemorySize=4G"
************************************
# 熵池底包
yum -y install rng-tools
echo 'EXTRAOPTIONS="--rng-device /dev/urandom"' >/etc/sysconfig/rngd
service rngd start
chkconfig rngd on

# apr模式
yum install -y epel-release apr*
yum install -y tomcat-native

# jdk1.6(安裝與jdk7和jdk8不一樣)
chmod  +x jdk-6u45-linux-x64.bin
./jdk-6u45-linux-x64.bin 
mv jdk1.6.0_45 /usr/java/

 


下載包web

jkd官網下載包頁面(jdk1.8):
wget http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

tomcat官網下載包頁面:
wget https://tomcat.apache.org/download-80.cgi
下載安裝包:
wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz
wget http://apache.communilink.net/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz [root@localhost ~]# mkdir -p /usr/local/src [root@localhost ~]# cd /usr/local/src [root@localhost src]# ll total 195752 -rw-r--r--. 1 root root 9552281 Jun 5 06:52 apache-tomcat-8.5.31.tar.gz -rw-r--r--. 1 root root 190890122 Jun 5 06:52 jdk-8u171-linux-x64.tar.gz [root@localhost src]# mkdir /usr/local/jdk [root@localhost src]# mkdir /usr/local/tomcat8 建立密碼和用戶,爲了安全。 [root@localhost src]# useradd -u 601 tomcat [root@localhost src]# passwd tomcat cd /usr/local/src tar zxvf jdk-8u171-linux-x64.tar.gz 這裏tar包能夠作個md5值,防止解密,安全。 mv jdk1.8.0_171/ /usr/local/ ln -s /usr/local/jdk1.8.0_171/ /usr/local/jdk tar zxvf apache-tomcat-8.5.31.tar.gz mv apache-tomcat-8.5.31 /usr/local/ ln -s /usr/local/apache-tomcat-8.5.31/ /usr/local/tomcat vi /etc/profile export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin source /etc/profile

啓動tomcat
/usr/local/tomcat/bin/start.sh
/usr/local/tomcat8/logs/catalina.out是啓動的日誌文件。若是啓動不起來能夠查看該日誌。
    在tomcat-users.xml中能夠設定角色:
在倒數第二行配置
<role rolename="manager-gui" />
<role rolename="admin-gui" />
<user username="tomcat" password="123456" roles="manager-gui,admin-gui" />
重啓tomcat,啓動時候會將一些文件放到temp和work目錄下,生產下重啓是最好清空該目錄下內容。
能夠啓動http://IP:8080/host-manager
寫個啓動腳本apache

vim tomcat.sh
#!/bin/bash

TOMCAT_PATH=/usr/local/tomcat
usage(){
    echo "Usage: $0 [start|stop|status|restart]"
    } status_tomcat(){ ps aux | grep java | grep tomcat | grep -v 'grep' } start_tomcat(){ /usr/local/tomcat/bin/start.sh } stop_tomcat(){ TPID=$(ps aux | grep java | grep tomcat | grep -v 'grep'|awk '{print $2}') kill -9 $TPID sleep 5; TSTAT=$(ps aux | grep java | grep tomcat | grep -v 'grep'|awk '{print $2}') if [ -z $TSTAT];then echo "tomcat stop" else kill -9 $TSTAT } fi cd $TOMCAT_PATH rm -rf temp/* rm -rf work/* } main(){ case $1 in:    start) start_tomcat;; stop) stop_tomcat;; status) status_tomcat;; restart) stop_tomcat && start_tomcat;; *) usage;

http://ip:8080/manager/status    
能夠查看JVM詳情(heap memory,堆內存)。
調優調堆內存的狀況。

tomcat安全規範:
tomcat用戶
安裝包下載下來,作個md5
md5sum -c jdk-8u171-linux-x64.tgz.md5

1 telent管理端口(強制)
關閉8005端口
telnet 127.0.0.1 8005而後輸入SHUTDOWN
類別:telnet管理端口保護
配置內容和說明:1)修改默認的8005管理端口爲不易猜想的端口(大於1024)2)修改shutdown爲其餘字符串,進行配置端口配置8000-8999
標準配置:<Server port="8527" shutdown="dangerous">
備註:上面是建議配置,實際配置按服務器實際狀況。


2 ajp鏈接端口的保護

類別:telnet管理端口保護
配置內容和說明:1)修改默認的ajp8009管理端口爲不易衝突的端口(大於1024)
                2)修改iptables規則限制ajp端口訪問的權限僅爲線上機器
標註配置:<Connector port="8528" protocol="AJP/1.3" redirectPort="8443" />
備註:上面是建議配置,實際配置按服務器實際狀況,端口配置在8000-8999之間
        保護此端口的目的是防止線下的測試流量被mod_jk轉發只線上tomcat服務器。
(通常使用的http的,全部能夠直接註釋掉)
<--   -->

3 禁用管理端(強制)

類別:禁用管理端(強制)
配置內容和說明:1)第一次安裝刪除默認的tomcat安裝目錄下的tomcat-user.xml,重啓後還會生成新的文件。
                2)刪除tomcat/webapps下的默認的全部目錄和文件,manager除外。
                3)將tomcat應用根目錄配置爲tomcat安裝目錄之外的目錄;
標註配置:
備註:

4


5文件列表訪問控制
conf/web.xml文件中default部分listings配置必須爲false,默認是false。true爲容許列出。
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>

6版本信息隱藏

配置內容和說明:1)修改conf/web.xml重定向到403,404,500等錯誤到指定的錯誤頁面
                2)也能夠修改應用程序目錄下的web-inf/web.xml下的配置進行錯誤頁面的重定向
標準配置:<error-page>
<error-code>403</error-code>
<location>/forbidden.jsp</location>
           </error-page>

            <error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
            </error-page>
          
            <error-page>
<error-code>500</error-code>
<location>/systembusy.jsp</location>
           </error-page>

備註:在配置中對一些常見錯誤進行重定向,避免當出現錯誤時,tomcat默認顯示的錯誤頁面暴露服務器和版本信息。
      必須確保根目錄下錯誤頁面已經存在,其中的forbidden.jsp notfound.jsp systembusy.jsp生產中的頁面,路徑。


7 server header重寫

配置內容和說明:1在http connector配置中加入server的配置
標準配置:server="webserver或者jdws"
備註:當tomcat http端口直接提供web服務時,此配置生效,將會替換http響應 server header部分的默認配置
      默認是Apache-Coyote/1.1

curl --head http://ip:8080/



8 訪問ip限制(省略)

 <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">

unpackWARs:解壓war包
autoDeploy:自動部署,改成false,從新加載。很差用。直接重啓。

9 啓停腳本權限回收

配置內容和說明: 去除其餘用戶對tomcat的bin目錄下shutdown.sh startup.sh catalina.sh的可執行權限
標準配置:                chmod -R 744 tomcat/bin/*
                
10 訪問日誌格式規範
配置內容和說明:開啓tomcat默認訪問日誌中的Referer和User-Agent記錄
標準配置:     vim

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
            prefix="localhost_access_log" suffix=".txt"
            pattern="%h %l %u %t &quot;%r&quot; %s %b" %{Referer}i %{User-Agent}i%D" resolveHosts="false"/>

備註:開啓Referer和User-Agent是爲了一旦出現安全問題能更好的根據日誌進行排查。


tomcat內部調優:
https://blog.csdn.net/u012562943/article/details/51441157

tomcat

相關文章
相關標籤/搜索