zoukankan      html  css  js  c++  java
  • Tomcat 部署及配置

     下载,解压tomcat、jdk

    1、解压,链接tomcat、jdk

    tar xf jdk-8u161-linux-x64.tar.gz 
    tar xf apache-tomcat-8.5.27.tar.gz 
    mv jdk1.8.0_161/ /usr/local/
    ln -s /usr/local/jdk1.8.0_161 /usr/local/jdk
    mv apache-tomcat-8.5.27 /usr/local/
    ln -s /usr/local/apache-tomcat-8.5.27 /usr/local/tomcat

    2、配置环境变量并使其生效

    # tail -4 /etc/profile
    export JAVA_HOME=/usr/local/jdk
    export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export TOMCAT_HOME=/usr/local/tomcat
    
    # source /etc/profile

    3、赋予权限、修改ulimit

    chown -R tomcat.tomcat /usr/local/{jdk/,tomcat/}
    echo '*      -     nofile    65535'  >> /etc/security/limits.conf

     4、启动tomcat

    su tomcat
    
    /usr/local/tomcat/bin/startup.sh 
    #备注:一定要切换到对应的tomcat用户里边启动,权限最小化

    #查看启动结果
    $ netstat  -lnpt
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                  
    tcp6       0      0 :::8080                 :::*                    LISTEN      4088/java          
    tcp6       0      0 :::22                   :::*                    LISTEN      -                  
    tcp6       0      0 :::8009                 :::*                    LISTEN      4088/java

    5、tomcat配置文件的简单介绍

        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    #连接器:首先这个8080是服务端口,后边http/1.1 是http的长连接,连接超时时间,毫秒。8443重定向端口
    
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    #连接器:AJP的连接器,由于文档不多,不建议使用。

    /usr/local/tomcat/webapps/ROOT
    #默认的tomcat的根文件位置。如果放到这个里边解压,默认是不需要添加url路径的:http://IP:端口
    #如果放到/usr/local/tomcat/webapps/ceshi  访问:http://IP:端口/ceshi

    6、tomcat的重启

    ll /usr/local/tomcat/
    bin
    conf
    lib
    LICENSE
    logs
    NOTICE
    RELEASE-NOTES
    RUNNING.txt
    temp
    webapps
    work
    
    #备注:生产环境下,如果重启tomcat建议清空 temp 和 work目录下的东西,
    #tomcat启动时会吧临时文件和工作文件放到temp和work文件夹下。建议清空再重启,否则可能发生非常奇怪的问题。
    
    #重启tomcat
    /usr/local/tomcat/bin/shutdown.sh 
    rm -rf /usr/local/tomcat/{temp/*,work/*}
    /usr/local/tomcat/bin/startup.sh

    7、配置tomcat的gui

    $ tail -5 tomcat-users.xml 
    
      <<role rolename="manager-gui" />
      <role rolename="admin-gui" />
      <user username="tomcat" password="<password>" roles="manager-gui,admin-gui"/>
    </tomcat-users>
    #备注:密码一定要复杂。另外建议开启tomcat的状态页面,其余全部删除。状态页面可以很直观的看到tomcat的状态。zabbix比较慢
    #修改完之后重启tomcat

     8、tomcat 安全管理规范

    每个公司都有每个公司的管理制度以及对应的软件的安全规范条款。这里就引用网上同僚们的一些东西吧。

    注意:可以参考原文链接地址

    Tomcat的安全
    生产环境tomcat规范
    
    1.更改服务监听端口
    若 Tomcat 都是放在内网的,则针对 Tomcat 服务的监听地址都是内网地址
    
    标准配置:<Connector port="10000" server="webserver"/>
    
    2.telnet管理端口保护
    修改默认的 8005 管理端口不易猜测(大于1024),但要求端口配置在8000~8999之间
    
    修改SHUTDOWN命令为其他字符串 
    标准配置:<Server port="8578" shutdown="dangerous">
    
    3.AJP连接端口的保护
    修改默认的ajp 8009端口为不易冲突(大于1024),但要求端口配置在8000~8999之间
    
    通过iptables规则限制ajp端口访问的权限仅为线上机器,目的在于防止线下测试流量被apache的mod_jk转发至线上tomcat服务器
    
    标准配置:<Connector port="8349" protocol="AJP/1.3"/>
    
    4.禁用管理端
    删除默认$CATALINA_HOME/conf/tomcat-users.xml文件,重启tomcat将会自动生成新的文件
    
    删除$CATALINA_HOME/webapps下载默认的所有目录和文件
    
    将tomcat应用根目录配置为tomcat安装目录以外的目录
    
    标准配置:
    
    a.server.xml配置 
    一种直接修改Host节点信息,表示全局配置
    
    <Host name="localhost"  appBase="/data/www/tomcat_webapps" unpackWARs="true" autoDeploy="false"></Host>
    
    另一种直接在Host节点中新增Context节点,指定具体的项目
    
    <Context path="" docBase="/usr/local/tomcat/webapps/jenkins" debug="0" reloadable="false" crossContext="true">
    </Context>
    
    b.在$CATALINA_HOME/conf/Catalina/locathost目录下新增文件 test##20160506172651.xml
    
    <Context displayName="test" docBase="/data/www/tomcat_webapps/test##20160506172651.war" reloadable="false" />
    
    5.隐藏Tomcat的版本信息
    针对该信息的显示是由一个jar包控制的,该jar包存放在$CATALINA_HOME/lib目录下,名称为 catalina.jar,通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息
    
    $ cd $CATALINA_HOME/lib
    $ jar xf catalina.jar
    $ cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'
    $ mkdir -p org/apache/catalina/util
    $ vim ServerInfo.properties
    server.info=nolinux        # 把这个值改成其它值就行了
    
    自定义错误页面:修改$CATALINA_HOME/conf/web.xml重定向 403/404/500等错误到指定的错误页面
    
    6.降权启动
    Tomcat启动用户权限必须非root权限,尽量降低tomcat启动用户的目录访问权限,如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发,为了防止 Tomcat 被植入 web shell 程序后,可以修改项目文件。要将 Tomcat 和项目的属主做分离,即便被破坏也无法创建和编辑项目文件
    
    7.文件列表访问控制
    $CATALINA_HOME/conf/web.xml文件中的default部分的listings的配置必须为false(默认),表示不列出文件列表
    
    8.访问限制
    通过配置,限定访问的IP来源
    
    全局设置限定IP和域名访问:
    
    <Host name="localhost"  appBase="/data/www/tomcat_webapps"   unpackWARs="true" autoDeploy="false">
       <Valve className="org.apache.catalina.valves.RemoteAddrValve"  allow="192.168.1.10,192.168.1.30,192.168.2.*" deny=""/>  
       <Valve className="org.apache.catalina.valves.RemoteHostValve"  allow="www.test.com,*.test.com" deny=""/>
    </Host>
    
    9.脚本权限回收
    控制CATALINAHOME/bin目录下的start.sh、catalina.sh、shutdown.sh的可执行权限;
    chmod −R 744 CATALINA_HOME/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" />
    
    11.Server header重写
    在HTTP Connector配置中加入server的配置,server="chuck-server"
        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" 
                   server="lltest" />
    
    
    # curl --head http://localhost:8080 
    
    
    
    Tomcat 安全管理规范
    Tomcat 安全管理规范

    未完待续!!!!!!!

  • 相关阅读:
    Linux异步IO
    基本数据类型总结--
    总结
    字典魔法二
    字典及其魔法
    元祖的魔法
    列表的特点
    运算符
    while ……else……和while……continue……和 while…………break…………
    作业---写一个程序,用户名 、密码输入错误3次 错误
  • 原文地址:https://www.cnblogs.com/Star-Haitian/p/8424278.html
Copyright © 2011-2022 走看看