CentOS下tomcat安装配置

一、所需软件包下载

Tomcat:https://archive.apache.org/dist/tomcat/
JDK:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html#javasejdk

Tomcat jdk
9.0.0.M17 (alpha) 8 and later
8.5.11 7 and later
8.0.41 (superseded) 7 and later
7.0.75 6 and later(7 and later for WebSocket)

版本对照:

Tomcat jdk
9.0.0.M17 (alpha) 8 and later
8.5.11 7 and later
8.0.41 (superseded) 7 and later
7.0.75 6 and later(7 and later for WebSocket)

二、JDK和Tomcat安装

  • JDK安装
    为了方便维护下载到/usr/local/java目录并解压
    解压:tar -zxvf jdk-8u91-linux-x64.tar.gz
    解压后JDK目录为:/usr/local/java/jdk1.8.0_91

    设置环境变量(根据具体版本修改配置):
    编辑/etc/profile文件在最末尾加入以下内容:

    export JAVA_HOME=/usr/local/java/jdk1.8.0_91
    export JRE_HOME=/usr/local/java/jdk1.8.0_91/jre
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    export PATH=$PATH:$JAVA_HOME/bin
    

    注:路径根据你的JAVA解压后路径修改即可。
    保存后执行source /etc/profile使环境变量配置生效。
    然后执行java –version可以看到当前的JDK版本。

  • Tomcat安装
    JAVA运行环境正确安装配置后开始下载安装tomcat。
    这里下载到home目录,解压后为/home/apache-tomcat-8.5.3,可根据需要修改即可。
    为了后续的权限控制,添加tomcat组和用户并设置tomcat目录为tomcat用户所属:

    groupadd tomcat
    useradd -g tomcat -s /sbin/nologin tomcat
    chown -R tomcat:tomcat /home/apache-tomcat-8.5.3
    

    启动tomcat: 直接使用tomcat目录下bin目录中startup.sh进行启动。
    停止tomcat: 直接使用tomcat目录下bin目录中shutdown.sh进行停止。
    开机自启动:
    在/etc/rc.local文件中添加对应启动命令,如:/home/apache-tomcat-8.5.3/bin/startup.sh
    或注册为服务启动:
    /etc/init.d/目录新建一个tomcat文件并写入下面内容(这里安装的tomcat8所以设置文件名为tomcat8):

    #!/bin/bash
    # tomcat8
    # chkconfig: - 80 20
    ### BEGIN INIT INFO
    # Provides: tomcat8
    # Required-Start: $network $syslog
    # Required-Stop: $network $syslog
    # Default-Start:
    # Default-Stop:
    # Description: Tomcat 8
    # Short-Description: start and stop tomcat
    ### END INIT INFO
    
    ## Source function library.
    #. /etc/rc.d/init.d/functions
    export JAVA_OPTS="-Dfile.encoding=UTF-8 \
      -Dnet.sf.ehcache.skipUpdateCheck=true \
      -XX:+UseConcMarkSweepGC \
      -XX:+CMSClassUnloadingEnabled \
      -XX:+UseParNewGC \
      -XX:MaxPermSize=128m \
      -Xms512m -Xmx512m"
    TOMCAT_HOME=/opt/tomcat8
    TOMCAT_USER=tomcat
    SHUTDOWN_WAIT=20
    
    tomcat_pid() {
      echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
    }
    
    start() {
      pid=$(tomcat_pid)
      if [ -n "$pid" ] 
      then
        echo "Tomcat is already running (pid: $pid)"
      else
        # Start tomcat
        echo "Starting tomcat"
        ulimit -n 100000
        umask 007
        /bin/su -p -s /bin/sh $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
      fi
    
    
      return 0
    }
    
    stop() {
      pid=$(tomcat_pid)
      if [ -n "$pid" ]
      then
        echo "Stoping Tomcat"
        /bin/su -p -s /bin/sh $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
    
        let kwait=$SHUTDOWN_WAIT
        count=0;
        until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
        do
          echo -n -e "\nwaiting for processes to exit";
          sleep 1
          let count=$count+1;
        done
    
        if [ $count -gt $kwait ]; then
          echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
          kill -9 $pid
        fi
      else
        echo "Tomcat is not running"
      fi
     
      return 0
    }
    
    case $1 in
    start)
      start
    ;; 
    stop)   
      stop
    ;; 
    restart)
      stop
      start
    ;;
    status)
      pid=$(tomcat_pid)
      if [ -n "$pid" ]
      then
        echo "Tomcat is running with pid: $pid"
      else
        echo "Tomcat is not running"
      fi
    ;; 
    esac    
    exit 0
    

    赋予该文件执行权限:chmod +x /etc/init.d/tomcat8
    添加自动启动:chkconfig tomcat8 on

三、Tomcat配置

  • tomcat增加多站点
    配置文件:
    tomcat安装目录下conf目录中server.xml,
    /home/apache-tomcat-8.5.3/conf/server.xml

  • 相同端口配置:
    找到Host字段并在</host>下面新增即可host配置字段:

    <Host name="wwww.abc.com" appBase="/wwwroot/abc/"
    unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="/wwwroot/abc/" reloadable="true" deubg="0" />
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="antisec_access_log" suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    <Alias>www.域名1.com</Alias>
    <Alias>www.域名2.com</Alias>
    <Alias>www.域名3.com</Alias>
    </Host>
    

    把name、appBase、docBase的内容改为实际的域名和项目路径。
    <Alias>xxx</Alias>为绑定多个域名,如果不需要在绑定其他域名则不用配置。

    同端口配置

  • 不同端口配置:
    在默认</Service>后面新增以下内容:
    <!--services1-start-->
    <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000" redirectPort="8443" />
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
    <Engine name="Catalina" defaultHost="www.abc.com">
    <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
    </Realm>
      
    <Host name="www.abc.cn" appBase="/wwwroot/abc/"
      unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="D:\wwwroot\tomcat" reloadable="true" deubg="0" />
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
      prefix="antisec_access_log" suffix=".txt"
      pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
      </Engine>
      </Service>
      <!--services1-end-->
    
    其中Connector port、defaultHost、Hostname、appBase、docBase、日志prefix为你实际的即可。
    例如下图中8090端口为http协议端口、8010端口为AJP协议端口。这两个端口不要和已有的services配置字节中端口冲突。(默认的配置中http协议端口为8080、AJP端口为8009)
    新增站点:
    新增站点

    默认站点:
    默认站点
  • 多tomcat运行
    假设:
    第一个tomcat文件夹为tomcat8-1,路径为/home/tomcat8-1/
    第二个tomcat文件夹为tomcat8-2,路径为/home/tomcat8-2/
    分别修改tomcat文件夹/conf目录下server.xml的监听端口为不同端口。
    分别启动tomcat文件夹/bin目录下的startup.sh启动tomcat,停止同上文。
    即可运行多个tomcat。

四、Tomcat绑定SSL证书

注:根据官方文档tomcat8.5且JAVA7及其以上才支持SNI。如果tomcat版本较低且需要绑定多个域名情况下,建议使用反向代理方式部署HTTPS。
<Connector port="8080"配置字段下新增443端口监听设置即可。

配置如下:

<Connector port="443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="pfx证书路径"
keystoreType="PKCS12"
keystorePass="证书导入密码"
clientAuth="false"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>

保存后重启tomcat服务。
测试效果:

测试效果

从上面探针可以看到我这里使用tomcat版本为8.5.23,支持SNI,即可以绑定多个域名和对应证书。
tomcat中多域名SSL绑定使用SSLHostConfig配置字节来分别制定每个域名对应证书文件和设置。
这里使用apache格式证书文件绑定,增加内容如下:

<Connector port="443"
     protocol="org.apache.coyote.http11.Http11Nio2Protocol"
     maxThreads="150"
     SSLEnabled="true"
     defaultSSLHostConfigName="milworm.cn" >
     <!--第一个域名证书设置-->
      <SSLHostConfig hostName="milworm.cn" >
       <Certificate certificateKeyFile="D:/server/Apache2.2/conf/cert/milwrom/private.key"
         certificateFile="D:/server/Apache2.2/conf/cert/milwrom/certificate.crt"
         certificateChainFile="D:/server/Apache2.2/conf/cert/milwrom/ca_bundle.crt"
         type="RSA" />
      </SSLHostConfig>    
     <!--第二个域名证书设置--> 
     <SSLHostConfig hostName="www.pentester.cn" >
        <Certificate certificateKeyFile="D:/server/Apache2.2/conf/cert/pentester/private.key"
         certificateFile="D:/server/Apache2.2/conf/cert/pentester/certificate.crt"
         certificateChainFile="D:/server/Apache2.2/conf/cert/pentester/ca_bundle.crt"
         type="RSA" />
      </SSLHostConfig>     
  </Connector>

如图:

配置文件

如上,分别指定了milworm和pentester域名的证书路径。

使用host配置字节方式新增两个站点,分别绑定不同域名指向不同目录:


新增站点

注:若IIS反向代理tomcat绑定https时,选择上启用SSL卸载。以免tomcat未配置HTTPS访问的情况下请求得不到正常响应。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容