Ubuntu系统安装Tomcat7教程

2018年02月02日 99 字 教程整理


本文详细介绍Ubuntu 系统以 .tar.gz安装包解压 / apt-get 两种方法安装Tomcat7服务器的步骤。

因Tomcat可用版本较多,且通常以集群方式工作。所以相对推荐.tar.gz安装包解压方式安装。这样有助于用户选择不同的版本,并能够支持自定义端口/参数改动,以及多个tomcat程序安装及集群配置。

在安装Tomcat之前,需先确保系统已正确安装JDK。

0.1. .tar.gz安装包解压方式 (需手动配置启动脚本;方便自定义端口/集群等特殊配置。推荐)

0.1.1. 获取Tomcat程序压缩包

进入Tomcat官网: https://tomcat.apache.org/ , 选择下载适用的版本至选定目录。

下载完成后,直接解压安装包至选定的路径 。

0.1.2. 配置Tomcat启动脚本

进入上一步解压的tomcat程序bin目录,编辑启动脚本,即 catalina.sh 文件。

sudo vi ./bin/catalina.sh 命令打开上述文件,在文件最后一行之前添加如下代码:

#set java environment
export JAVA_HOME=<本机Java安装路径>
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#tomcat
export TOMCAT_HOME=<当前Tomcat程序路径>
export CATALINA_HOME=<当前Tomcat程序路径>
export CATALINA_BASE=<当前Tomcat程序路径>

如:

#set java environment
export JAVA_HOME=/usr/local/Java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#tomcat
export TOMCAT_HOME=/usr/local/Tomcat_Server/apache-tomcat-7.0.91
export CATALINA_HOME=/usr/local/Tomcat_Server/apache-tomcat-7.0.91
export CATALINA_BASE=/usr/local/Tomcat_Server/apache-tomcat-7.0.91

0.1.3. Tomcat的启动、停止和重启

配置好环境变量后,Tomcat即可直接运行。进入 Tomcat bin 目录下,分别执行 startup.sh 和 shutdown.sh 文件即可分别执行Tomcat的启动和关闭。

命令指令
启动./bin/startup.sh
停止./bin/shutdown.sh

0.2. apt-get 方式在线安装 (程序自动配置好环境变量和服务,但配置文件相对分散,难以整理和自定义编辑。不推荐)

0.2.1. 安装Tomcat7

sudo apt-get install tomcat7

0.2.2. 修改Tomcat配置文件,设置JAVA_HOME

这一步如安装顺利,则会自动启动Tomcat。而有些系统则会提示tomcat7,no JDK found - please set JAVA_HOME错误,这种情况下应先配置tomcat的JAVA_HOME,再重启程序即可。

  1. 打开tomcat7配置文件,开始编辑: sudo vi /etc/default/tomcat7 ;
  2. 取消JAVA_HOME=…..的注释,并正确配置JAVA_HOME,保存并退出。

0.2.3. Tomcat的启动、停止和重启

至此,Tomcat已安装成功。以apt-get方法安装Tomcat,可以通过service命令直接控制tomcat程序。具体如下:

命令指令
启动sudo service tomcat7 start 或 /etc/init.d/tomcat7 start
停止sudo service tomcat7 stop 或 /etc/init.d/tomcat7 stop
重启sudo service tomcat7 restart 或 /etc/init.d/tomcat7 restart

0.3. * Ubuntu部署多个Tomcat服务器 (.tar.gz安装包解压方式)

同一台机器部署多个Tomcat-Server仅需注意以下两点即可:
1. 不同的tomcat启动和关闭监听不同的端口(conf/server.xml);
2. 不同的tomcat的启动文件bin/catalina.sh 中要指定各自的CATALINA_HOME和CATALINA_BASE这两个环境变量。

以上两点均在配置环节完成,程序包的获取和解压同 ## 1 ## 。
这里以同服务器安装两套Tomcat容器为例,介绍多个tomcat的部署方式:

0.3.1. 解压安装包至多个不同名路径

解压压缩包至即将部署两个tomcat容器的两个目标路径,如: /home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_0//home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_1/
如:

tar xzf apache-tomcat-7.0.90.tar.gz -C /home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_0/
tar xzf apache-tomcat-7.0.90.tar.gz -C /home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_1/

0.3.2. 修改tomcat启动脚本 catalina.sh

分别打开上一步解压好的tomcat程序路径,进入bin文件夹,分别按照实际程序路径添加如下代码至 catalina.sh 脚本。

#set java environment
export JAVA_HOME=<本机Java安装路径>
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#tomcat
export TOMCAT_HOME=<当前Tomcat程序路径>
export CATALINA_HOME=<当前Tomcat程序路径>
export CATALINA_BASE=<当前Tomcat程序路径>

如:

#配置 /home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_0/
    
#set java environment
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#tomcat
export TOMCAT_HOME=/home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_0
export CATALINA_HOME=/home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_0
export CATALINA_BASE=/home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_0
#配置 /home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_1/

#set java environment
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#tomcat
export TOMCAT_HOME=/home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_1
export CATALINA_HOME=/home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_1
export CATALINA_BASE=/home/Tomcat7_Server/tomcat_server_spare/apache-tomcat-7.0.90_1

0.3.3. 配置tomcat默认工作端口

这里要注意,配置多个tomcat容器,各容器使用的端口不能互相重合。

分别进入tomcat程序路径,编辑 conf/server.xml 文件,修改其各自的响应端口( Server port / Connector port )。

如:

apache-tomcat-7.0.90_0 选用 8090/8015/8019 三个端口; apache-tomcat-7.0.90_1 选用 8091/8016/8020 三个端口。(默认情况下三个端口分别为 : 8080/8005/8009

0.3.4. 启动tomcat

至此,多个Tomcat已分别部署成功。分别进入对应的tomcat程序路径,以 ./bin/startup.sh./bin/startup.sh 命令即可启动或关闭相应的tomcat服务。

0.4. * nginx+memcache+tomcat 实现多个Tomcat服务器session共享 (.tar.gz安装包解压方式)

0.4.1. 修改tomcat-server配置文件,添加cluster配置

进入tomcat程序路径,向 conf/server.xml 文件中,找到 <Engine name="Catalina" defaultHost="localhost"> 这一行代码,在这行代码下面追加如下配置:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
   <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>   
   <Channel className="org.apache.catalina.tribes.group.GroupChannel">
        <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4"  port="45564" frequency="500"  dropTime="3000"/>
        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
            <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
        </Sender>
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    </Channel> 
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
    <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

完成这一步之后,分别重启各个tomcat容器即可。

0.4.2. 配置nginx upstream

进入nginx服务器路径下,编辑conf/nginx.conf文件,将设为session共享的tomcat集群添加至upstream中:

配置完成后,设置对应的 proxy_pass ,重启nginx服务即可。

0.5. * nginx+redis+tomcat 实现多个Tomcat服务器session共享 (.tar.gz安装包解压方式)

0.5.1. 获取tomcat-redis-session依赖jar包

获取如下工具包,添加至共享session的tomcat容器各自的lib目录下:

工具包版本下载链接
tomcat-redis-session-manager-1.2-tomcat-7.jar1.2https://github.com/jcoleman/tomcat-redis-session-manager/archive/1.2-tomcat-7.tar.gz
jedis-2.2.0.jar2.2.0http://central.maven.org/maven2/redis/clients/jedis/2.2.0/jedis-2.2.0.jar
commons-pool-1.3.jar1.3http://central.maven.org/maven2/commons-pool/commons-pool/1.3/commons-pool-1.3.jar
commons-pool2-2.2.jar2.2http://central.maven.org/maven2/org/apache/commons/commons-pool2/2.2/commons-pool2-2.2.jar
tomcat-juli.jar7.0https://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.92/bin/extras/tomcat-juli.jar
tomcat-juli-adapters.jar7.0https://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.92/bin/extras/tomcat-juli-adapters.jar

这里需注意,上述jar包需要同步版本。否则可能会出现版本不一致造成的启动失败。

0.5.2. 修改tomcat-context配置文件,添加RedisSession配置

进入集群各自的tomcat程序路径,向 conf/context.xml 文件中,找到 <Context ......> 代码段,在其中追加如下设置:

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
<Manager className="com.radiadesign.catalina.session.RedisSessionManager" maxInactiveInterval="设定redis-session过期时间" password="redis访问密码" database="作为session储存仓库的redis数据库" port="redis端口" host="redis-server的ip地址"/>

如:

<?xml version="1.0" encoding="UTF-8"?>

<!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License. You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. -->

<!-- The contents of this file will be loaded for each web application -->

<Context allowLinking="true">
    <!-- Default set of monitored resources -->


    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->


    <!--<Manager pathname="" /> -->


    <!-- Uncomment this to enable Comet connection tacking (provides eventson session expiration as well as webapp lifecycle) -->


    <!--<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> -->


    <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
    <Manager className="com.radiadesign.catalina.session.RedisSessionManager" maxInactiveInterval="60" password="redis@remote106150" database="15" port="6300" host="106.15.226.150"/>

</Context>

【注】与memcache-session配置不同,这里无需再对tomcat-server进行Cluster相关配置。

0.5.3. 配置nginx upstream

0.5.4. 重启nginx及tomcat服务,完成配置