阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下Tomcat 安装配置详解

432次阅读
没有评论

共计 5394 个字符,预计需要花费 14 分钟才能阅读完成。

Linux 下 Tomcat 安装配置详解

  • Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应 HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上 Tomcat 是 Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。
  • 诀窍是,当配置正确时,Apache 为 HTML 页面服务,而 Tomcat 实际上运行 JSP 页面和 Servlet。另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。目前 Tomcat 最新版本为9.0。

一、Tomcat 体系架构

Linux 下 Tomcat 安装配置详解

核心组件

server:相当于一个 tomcat 实例。接收并解析请求信息;完成相关动作后把响应结果返回给计算机。
service:每个 server 包含多个 service,相互独立,仅共享 JVM 以及类库。用于把连接器 (connector) 与引擎 (engine) 关连起来, 且一个 service 只能有一个 engine,但是可以有多个 connector。因为 engine 无法直接接受连接器发来的数据。
connector:负责开启 socket 并监听客户端请求、返回响应数据。多个 connector 监听多个端口
engine:负责具体的处理请求,connector 仅仅负责监听,收到数据后交给 engine 运行。
host:在 ngine 中可以包含多个 host,每个 host 定义了虚拟主机
context:每个 context 可以部署一个 web 应用。一个 host 可以存在多个 context。如果部署多个应用需要分别对每个应用装载所依赖的库,这个步骤可以自动可以手动。

二、Tomcat 的安装

tomcat 其实就是一个 JAVA 程序,所以要运行在 JAVA 虚拟机中。要运行虚拟机就要先安装 JDK。

1.JDK 的安装

1. 通过 YUM 安装
yum install java-1.8.0-openjdk-devel
2.配置环境变量
vim /etc/profile.d/java.sh
 export JAVA_HOME=/usr/java/latest                  # 首先定义 JAVA_HOME 的环境变量
 export PATH=$JAVA_HOME/bin:$PATH                   # 然后向后追加即可

###2.Tomcat 的安装
首先要从 Tomcat 的官网下载 Tomcat,然后上传至服务器解压。https://tomcat.apache.org

1. 将下载的软件包解压
tar xf apache-tomcat-VERSION.tar.gz  -C /usr/local/
cd /usr/local

2. 创建软连接,或者将解压的 tomcat 直接改名为 tomcat 也能达到同样的效果
ln -sv apache-tomcat-VERSION  tomcat

3. 添加环境变量
vim /etc/profile.d/tomcat.sh 
    export CATALINA_BASE=/usr/local/tomcat
    export PATH=$CATALINA_BASE/bin:$PATH    

4. 创建 tomcat 需要的用户
useradd tomcat

5. 将安装包的路径下的所有属组都改为 tomcat
chown -R root.tomcat /usr/local/tomcat                      # 设定所有者为 root,所属组为 tomcat
chown -R tomcat /usr/local/tomcat/{logs,temp,work,webapps}  # 仅将需要有写权限文件所有者改为 tomcat
chmod g+r /usr/local/tomcat/conf                            # 默认没有权限,会导致启动失败

5. 切换到 tomcat 用户最后启动服务即可
su - tomcat 
catalina.sh start                                   # 启动 tomcat。catalina.sh 命令需要先添加环境变量

三、Tomcat 服务的配置文件结构

bin:脚本、以及 Tomcat 自身所携带的工具包
conf:Tomcat 服务的配置文件目录;lib:库文件,Java 类库,jar;logs:日志文件目录;temp:临时文件目录;webapps:webapp 的默认目录;相当于页面的根目录。部署的应用都应该在 IC 目录下
work:工作目录,存放编译后的字节码文件;

四、部署测试页面

创建一个测试页面,将下面的步骤全部做完后,通过浏览器访问 http://IP:8080/test 即可访问到测试的页面

1.创建文件夹,classes、lib、WEB-INF 为一个标准应用应该有的目录,这里创建仅仅为了与标准看齐
mkidr  -pv  /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF}    

2.创建一个测试页面用于检验 Tomcat 服务是否能正常提供服务
vim /usr/local/tomcat/webapps/test/index.jsp                        # 创建 jsp 测试页面
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
    <head>
        <title>Test Page,www.linuxidc.com</title>
    /head>
<body>
    <% out.println("hello world");
    %>
</body>
</html

3.重启服务
systemctl restart tomcat                        

4.部署完成后在 webapp 目录自动生成一些目录
cd  /usr/share/tomcat/work/Catalina             # 部署完成后自动生成的 test 目录下的文件
[root@localhost Catalina]# tree .
.
└── localhost                                   # 默认主机站点
    ├── _
    ├── docs
    ├── examples
    ├── host-manager
    ├── manager
    ├── sample
    └── test                                    # webpp 应用名称。自动生成以下目录
        └── org
            └── apache
                └── jsp
                    ├── index_jsp.class
                    └── index_jsp.java

五、Tomcat 的配置文件

1.service 组件

前面讲到 connecotr 负责接收用户请求,而 engine 负责接处理用户请求。但是 connecotr 并不能与 engine 直接通信。所以 service 就是负责将 connector 与 engine 连接起来的组件

<Service name="Catalina">

2.connector 组件

connector 负责接收客户端发来的请求,常见的连接有三种:http、https、ajp
进入 tomcat 的请求可分为两类:

(1) standalone : 请求来自于客户端浏览器;

(2) 由其它的 web server 反代:来自前端的反代服务器,通过反带服务器发来的又有以下几种;

  • nginx –> http connector –> tomcat
  • httpd(proxy_http_module) –> http connector –> tomcat
  • httpd(proxy_ajp_module) –> ajp connector –> tomcat
  • httpd(mod_jk) –> ajp connector –> tomcat
    示例

    <Connector port="8080"              # 默认有两个 connector 一个监听 http 一个监听 ajp
    protocol="HTTP/1.1"             # 如果是 http 可以无需指明协议。AJP 的话 Protocol="AJP/1.3"
    connectionTimeout="20000"       # 超时时长,毫秒即 20s
    redirectPort="8443"             # 如果请求的为 SSL 请求就将请求转发至 8443 端口
    address:# 监听的 IP 地址;默认为本机所有可用地址;不写就监听本地所有 IP
    maxThreads:# 最大并发连接数,默认为 200;
    enableLookups:# 是否启用 DNS 查询功能;将 IP 地址解析为域名。关闭提升性能
    acceptCount:# 等待队列的最大长度;
    secure:# =true 的表示使用 SSL 通信
    sslProtocol:# 设定使用哪个 SSL 协议,通常在 tomcat 上不建议使用 SSL,速度太慢
    />

3.Engine 组件

Engine 组件负责处理发来的请求。
Engine 是 Servlet 实例,即 servlet 引擎,其内部可以一个或多个 host 组件来定义站点;通常需要通过 defaultHost 来定义默认的虚拟主机。
示例

<Engine name="Catalina" defaultHost="localhost">
name=Catalina                   # 引擎的名称
defaultHost="localhost"         # 默认的响应主机站点。如果找不到合适,或者域名不匹配选择默认 host
jvmRoute=                       # Tomcat 做集群时的调度标志,类似于 HAproxy 的会话标识。
                                # 在基于 cookie 绑定时会用到
...
<Engine>

4.Host 组件

Host 组件位于 engine 内部用于接收请求并进行相应处理的主机或虚拟主机

 <Host    name="localhost"          # 设定为主机名即可
          appBase="webapps"         # webapps 的默认存放路径(相对路径, 可以用绝对路径)。相当站点根
          unpackWARs="true"         # true 为自动展开 WAR 文件
          autoDeploy="true">        # 是否开启自动部署功能。
                                    #unpackWARS、autoDeploy 定义了 WebAPP 为 WAR 格式且在根下时自动部署
</Host>

5.Context 组件

包含在 Host 标签里。
如果在一个主机上部署多个 app 的话,Context 就可以用来定义不同 app 对应的路径。

<Context path="/PATH"                   # 网页的 RUL
docBase="/PATH/TO/SOMEDIR"              # 真实路径。
reloadable=""/>                         # 如果为 true 说明可以重新装载

6.valve 组件

Valve 存在多种类型:
定义访问日志:org.apache.catalina.valves.AccessLogValve
定义访问控制:org.apache.catalina.valves.RemoteAddrValve

<Valve className="org.apache.catalina.valves.AccessLogValve"       # 定义记录日志要访问的类
                    directory="logs"                               # 日志文件的目录路径,默认在 /var/log/tomcat 下
                    prefix="node1_test_access_"                    # 日志文件的前缀
                    suffix=".log"                                  # 日志文件的后缀
                    pattern="%h %l %u %t &quot;%r&quot; %s %b" />  # 记录日志的格式
                pattern="%h %l %u %t &quot;%r&quot; %s %b" />

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04 下安装 Tomcat 8.5.9  http://www.linuxidc.com/Linux/2017-06/144809.htm

Ubuntu 16.04 安装 Tomcat 8 图解  http://www.linuxidc.com/Linux/2017-10/147773.htm

Tomcat 配置文件 server.xml 详解  http://www.linuxidc.com/Linux/2017-10/148003.htm

Tomcat 单机多实例部署 - 多项目部署  http://www.linuxidc.com/Linux/2017-10/147259.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148541.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5394字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992127
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...