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

Linux下Tomcat 安装配置详解

148次阅读
没有评论

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