zoukankan      html  css  js  c++  java
  • tomcat的安装和优化

    tomcat的安装

    jdk版本安装

    #!/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

    另一个脚本:

    #!/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/


    下载包

    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
    写个启动脚本

    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记录
    标准配置:    

    <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

  • 相关阅读:
    CentOS中的中文乱码问题的解决
    xml2config not found. Please check your libxml2 installation.
    yii数据库存储对象DAO
    linux常用svn命令
    通过rpm包安装、配置及卸载mysql的详细过程.
    php Undefined index和Undefined variable的解决方法
    【30篇突击 android】源码统计四
    【30篇突击 android】源码统计三
    Android 新手入门指导
    android 问题汇总系列之三
  • 原文地址:https://www.cnblogs.com/fengzhongzhuzu/p/9140192.html
Copyright © 2011-2022 走看看