Linux 6 下安装 tomcat 8

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。通过适当的配置,Apache 为HTML页面服务,Tomcat运行JSP 页面和Servlet,从而实现web服务器与应用服务的分离。本文主要描述了在Linux 6下安装Tomcat 8。

1、本文环境介绍:

os版本:centos6.5 64bit
jdk版本:1.7.0_80
tomcat版本:8.0.29
apache版本:2.4.9
apache服务器IP:192.168.21.10/24
所有安装文件可到apache以及oracle官网下载

2、安装java jdk

# cd /usr/local/src
# chmod u+x jdk-7u80-linux-x64.rpm 
# rpm -Uvh jdk-7u80-linux-x64.rpm

# java -version
    java version "1.7.0_80"
    Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
    Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

# vi /etc/profile.d/java.sh
    export JAVA_HOME=/usr/java/latest
    export PATH=$PATH:$JAVA_HOME/bin

# source /etc/profile.d/java.sh 
# env|grep JAVA
JAVA_HOME=/usr/java/latest

# ls -hltr /usr/java/
    total 4.0K
    drwxr-xr-x. 8 root root 4.0K Nov 30 16:56 jdk1.7.0_80
    lrwxrwxrwx. 1 root root   21 Nov 30 16:56 latest -> /usr/java/jdk1.7.0_80
    lrwxrwxrwx. 1 root root   16 Nov 30 16:56 default -> /usr/java/latest

3、安装及测试tomcat

# tar -xvf apache-tomcat-8.0.29.tar.gz -C /usr/local
# ln -sv /usr/local/apache-tomcat-8.0.29 /usr/local/tomcat 
`/usr/local/tomcat' -> `/usr/local/apache-tomcat-8.0.29'

# vi /etc/profile.d/tomcat.sh 
    export CATALINA_HOME=/usr/local/tomcat
    export PATH=$PATH:$CATALINA_HOME/bin

# source /etc/profile.d/tomcat.sh

# $CATALINA_HOME/bin/startup.sh  ###也可以使用catalina.sh脚本启动
    Using CATALINA_BASE:   /usr/local/tomcat       --Auhtor : Leshami
    Using CATALINA_HOME:   /usr/local/tomcat       --Blog   : http://blog.csdn.net/leshami
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/java/latest
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

# netstat -nltp|grep 80         ###tomcat缺省端口为8080,ajp为8089,shutdown端口为8005
    tcp        0      0 :::8080                     :::*          LISTEN      2150/java           
    tcp        0      0 ::ffff:127.0.0.1:8005       :::*          LISTEN      2150/java           
    tcp        0      0 :::8009                     :::*          LISTEN      2150/java  

# catalina.sh version
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Server version: Apache Tomcat/8.0.29
    Server built:   Nov 20 2015 09:18:00 UTC
    Server number:  8.0.29.0
    OS Name:        Linux
    OS Version:     2.6.32-431.el6.x86_64
    Architecture:   amd64
    JVM Version:    1.7.0_80-b15
    JVM Vendor:     Oracle Corporation

# curl http://localhost:8080/

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8" />
            <title>Apache Tomcat/8.0.29</title>
            <link href="favicon.ico" rel="icon" type="image/x-icon" />
            <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
            <link href="tomcat.css" rel="stylesheet" type="text/css" />
        </head>
         ...........

# catalina.sh stop

4、配置tomcat为系统服务

# vi /etc/init.d/tomcat 
    #!/bin/sh
    # Tomcat init script for Linux.
    #
    # chkconfig: 2345 96 14
    # description: The Apache Tomcat servlet/JSP container.
    JAVA_HOME=/usr/java/latest
    CATALINA_HOME=/usr/local/tomcat
    export JAVA_HOME CATALINA_HOME
    exec $CATALINA_HOME/bin/catalina.sh $*

# service tomcat start
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/java/latest
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

# service tomcat stop
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/java/latest
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

# chkconfig --add tomcat
# chkconfig tomcat on

5、tomcat相关配置文件

server.xml:
    核心配置文件
context.xml:
    每个webapp都有其配置文件,这些配置文件通常位于webapp应用程序目录下的WEB-INF目录中,
    用于定义会话管理器、JDBC;此配置文件用于为所有的webapp提供默认配置;
web.xml:
    每个webapp部署之后才能被访问; 此文件则用于为所有webapp提供默认部署方式的配置;
tomcat-users.xml:
    用户认证账号配置文件;
catalina.policy:
    当使用-security启动tomcat实例时会读取此配置文件来其安全运行策略;
catalina.properties:
    Java属性的定义文件,用于设定类加载器路径,以及一些JVM性能调整的相关参数;
logging.properties:
    日志相关的配置信息;

6、tomcat架构图

tomcat组件由java类实现;有些组件的实现方式不止一种;有些组件还要嵌套别的组件;
    每个组件在通过指定的类型实现时需要传递一些属性;

    顶级类组件:server(代表一个tomcat实例);位于配置层次的顶级,并且彼此间有着严格的对应关系;
    服务类组件:service (将连接器关联至内部的engine)
    容器类组件:engine (代表一个web container),host,context
    连接器组件:connector http, https, ajp(apache jserv procotol)连接客户端(可以是浏览器或Web服务器)请求至Servlet容器
    被嵌套类组件:valve, logger, realm, ...位于一个容器当中,但不能包含其它组件;
    主配置文件按以下结构组成:
    <Server>
        <Service>
            <Connector />
            ...
            <Engine> 
                <Host>
                    <Context> </Context>
                    ...
                </Host>
                ...
            </Engine>
        </Service>
        ...         
    </server>

    context定义示例:
      <Host name="www.ycdata.net"  appBase="/website"
           unpackWARs="true" autoDeploy="true">
         <Context path="" docBase="webapps" reloadable="true" /> 
      </Host> 

7、各常见组件描述:

服务器(server):
    Tomcat的一个实例,这是一个顶级组件,通常一个JVM只能包含一个Tomcat实例;
    一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。

服务(service):
    一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器;
    给服务命名可以方便管理员在日志文件中识别不同服务产生的日志;
    一个server可以包含多个service组件,但通常情下只为一个service指派一个server。

连接器(connectors):
    连接器类组件,负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序;
    通常指的是接收客户发来请求的位置及服务器端分配的端口;
    默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口;
    一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。
    同时,Tomcat也支持AJP、JServ和JK2连接器。

引擎(Engine):
    容器类组件,引擎通是指处理请求的Servlet引擎组件,即Catalina Servlet引擎; 它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。
    严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。
    如果Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。
    而如果Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,因为Web服务器自身就能确定将用户请求发往何处。
    一个引擎可以包含多个host组件。

主机(Host):
    主机组件类似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN的“虚拟主机”。一个引擎至少要包含一个主机组件。

上下文(Context):
    Context组件是最内层次的组件,它表示Web应用程序本身。
    配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。
    Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。

被嵌套类(nested)组件:
    这类组件通常包含于容器类组件中以提供具有管理功能的服务,它们不能包含其它组件,但有些却可以由不同层次的容器各自配置。

阀门(Valve):
    用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。
    Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,
    这种处理技术通常被称作请求转储(requestdumping)。
    请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,
    响应转储valve则记录响应数据包首部信息和cookie信息至文件中。

日志记录器(Logger):
    用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。
    日志记录的功能可被继承,因此,一个引擎级别的Logger将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的Logger组件。

领域(Realm):
    用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。
    Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。
    Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。
    同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。

8、Tomcat目录结构

* bin  - Only the following files:

     * setenv.sh (*nix) or setenv.bat (Windows),
     * tomcat-juli.jar

    The setenv scripts were described above. The tomcat-juli library
    is documented in the Logging chapter in the User Guide.

 * conf - Server configuration files (including server.xml)
 * lib  - Libraries and classes, as explained below
 * logs - Log and output files
 * webapps - Automatically loaded web applications
 * work - Temporary working directories for web applications
 * temp - Directory used by the JVM for temporary files (java.io.tmpdir)
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
Linux
手把手教会你安装Linux系统
手把手教会你安装Linux系统
|
2月前
|
安全 关系型数据库 MySQL
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
948 67
|
21天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
46 4
|
2月前
|
Linux 测试技术 网络安全
Linux系统之安装OneNav个人书签管理器
【10月更文挑战第19天】Linux系统之安装OneNav个人书签管理器
114 5
Linux系统之安装OneNav个人书签管理器
|
2月前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
61 5
Linux系统之安装Ward服务器监控工具
|
28天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
38 5
|
2月前
|
JSON JavaScript Linux
Linux系统之安装cook菜谱工具
【10月更文挑战第15天】Linux系统之安装cook菜谱工具
39 2
Linux系统之安装cook菜谱工具
|
2月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
169 4
Linux系统之Ubuntu安装cockpit管理工具
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
98 1
Linux系统之Centos7安装cockpit图形管理界面
|
2月前
|
存储 Oracle 关系型数据库