当前位置: 代码网 > 服务器>服务器>Tomcat > tomcat服务安装步骤及详细配置实战教程

tomcat服务安装步骤及详细配置实战教程

2024年05月14日 Tomcat 我要评论
1.简介tomcat是一个开源的java servlet容器,可以作为java web应用程序的运行环境。它是apache软件基金会的一个重要项目,具有高性能、稳定可靠以及跨平台等特点。它实现了jav

1.简介

tomcat是一个开源的java servlet容器,可以作为java web应用程序的运行环境。它是apache软件基金会的一个重要项目,具有高性能、稳定可靠以及跨平台等特点。它实现了java servlet和javaserver pages(jsp)规范,并提供了一个运行环境,使得java代码可以在web服务器上执行。

tomcat就是传说中的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。

2.优缺点

优点:

  • 开源免费:tomcat是一个开源项目,可以免费使用,这使得它成为了一个广受欢迎的java web应用服务器。
  • 跨平台:tomcat可以在各种操作系统上运行,包括windows、linux、macos等。
  • 轻量级:相比于其他一些java应用服务器(如weblogic、websphere等),tomcat相对轻量级,资源占用较少,启动速度也相对较快。
  • 灵活性:tomcat可以作为一个独立的web服务器使用,也可以与其他web服务器(如apache)配合使用,形成一个强大的web服务器架构。

缺点:

  • 功能相对有限:相对于一些商业的java应用服务器,tomcat在一些高级特性和功能方面可能有所欠缺,比如分布式事务、集群等方面的支持。
  • 管理界面相对简陋:tomcat的管理界面相对简单,对于一些高级的管理需求可能不够满足。

3.工作原理

  • omcat的工作原理基于java servlet和javaserver pages(jsp)规范,它充当了一个java web应用程序的运行环境和web服务器。以下是tomcat的工作原理的详细说明:

    启动tomcat:tomcat作为一个独立的java应用程序运行。通常,你会使用命令行或启动脚本来启动tomcat。一旦tomcat启动,它开始监听http请求的到达。

    连接器(connectors):tomcat通过连接器来监听http请求。连接器是tomcat的组件,负责处理网络连接和接收http请求。常见的连接器包括http连接器(用于处理http请求)和ajp连接器(用于与其他web服务器如apache连接)。每个连接器通常监听一个特定的端口,比如http连接器默认监听8080端口。

    容器(containers):tomcat包含了两种主要的容器:引擎(engine)和主机(host)。引擎负责处理多个主机,每个主机代表一个独立的域名或虚拟主机。主机包含一个或多个上下文(context),每个上下文对应一个web应用程序。容器负责处理servlet和jsp的生命周期管理、请求分发和响应收集。

    servlet容器:当一个http请求到达tomcat后,tomcat会根据请求的url来确定将请求交给哪个servlet进行处理。servlet容器是tomcat的一部分,它负责管理servlet的生命周期,包括实例化、初始化、调用和销毁。servlet容器还负责将请求传递给适当的servlet,并将servlet生成的响应返回给客户端。

    jsp引擎:tomcat还包含了一个jsp引擎,用于处理jsp页面。当一个jsp页面被请求时,jsp引擎将jsp编译成servlet,并交给servlet容器来处理。生成的servlet负责处理jsp页面的动态内容生成。

    部署描述符(deployment descriptors):每个web应用程序通常包括一个部署描述符(通常是一个web.xml文件),它包含了关于应用程序的配置信息,包括servlet映射、过滤器配置、监听器配置等。tomcat会读取这些描述符以了解如何处理请求。

    请求处理流程
    • tomcat接收到http请求后,连接器将请求传递给适当的主机和上下文。
    • 主机和上下文确定哪个servlet应该处理请求,并将请求传递给servlet容器。
    • servlet容器实例化和初始化servlet,调用其service()方法来处理请求。
    • servlet生成响应并将其返回给servlet容器。
    • servlet容器将响应返回给主机和连接器,最终发送给客户端。

    关闭tomcat:当不再需要tomcat服务时,你可以通过命令行或脚本来关闭tomcat。tomcat会执行关闭过程,释放资源并停止监听http请求。

    总之,tomcat的工作原理涉及连接器、容器、servlet容器、jsp引擎以及部署描述符等多个组件,它们协同工作来处理http请求,将请求传递给适当的servlet或jsp,生成响应并将其返回给客户端。这个过程使得tomcat成为一个强大的java web应用服务器,用于部署和运行java web应用程序。

4.工作流程

tomcat的工作原理基于java servlet和jsp规范。它充当一个web服务器,接收http请求并将其传递给合适的servlet或jsp进行处理。以下是tomcat的基本工作流程:

  • 接收请求:tomcat作为一个web服务器监听指定的端口(默认为80或8080)。当一个http请求到达时,tomcat会接收并解析它。
  • 请求分发:根据url和部署在tomcat中的应用程序配置,tomcat会决定将请求交给哪个servlet或jsp进行处理。
  • servlet处理:如果请求是一个servlet请求,tomcat会将请求信息传递给相应的servlet。servlet会处理请求并生成响应,然后将其发送回tomcat。
  • jsp处理:如果请求是一个jsp请求,tomcat会将jsp文件编译成一个servlet,然后将请求信息传递给这个servlet进行处理。servlet再生成响应并将其返回给tomcat。
  • 响应传递:tomcat接收到servlet或jsp生成的响应后,将其传递回客户端。

5.实战(tomcat项目部署)

服务器ip地址系统版本tomcat版本
tomcat192.168.195.137centos 8apache-tomcat-9.0.80.tar.gz

首先关闭防火墙和selinux

[root@tomcat ~]# systemctl disable --now firewalld.service 
removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
removed /etc/systemd/system/dbus-org.fedoraproject.firewalld1.service.
[root@tomcat ~]# setenforce 0
[root@tomcat ~]# vim /etc/selinux/config 
[root@tomcat ~]# grep '^selinux=' /etc/selinux/config
selinux=disabled

5.1.java环境安装

jdk(java development kit)和jre(java runtime environment)是java开发和运行环境的两个重要组成部分,它们之间有以下区别:

jdk:

  • 功能:jdk是java开发工具包,提供了开发java应用程序所需的工具和资源,包括编译器、调试器、开发文档、示例代码等。
  • 面向开发者:jdk主要面向java开发者,用于编写、编译和调试java代码。
  • 包含内容:jdk包含jre的所有内容,并且还包含了用于开发java应用程序的额外工具和库。

jre:

  • 功能:jre是java运行环境,提供了java应用程序运行所需的运行时环境和必要的库文件。
  • 面向用户:jre主要面向普通用户,用于执行和运行java应用程序。
  • 包含内容:jre包含java虚拟机(jvm)和java类库,可以执行java程序,但不包含用于开发java应用程序的工具和资源。

简而言之,jdk适用于开发者,提供了编译、调试和开发所需的工具和库。而jre适用于用户,用于运行java应用程序,不包含开发工具。如果你只是要运行java程序,只需要安装jre即可。如果你要进行java应用程序的开发,需要安装jdk。

//安装jdk环境
[root@tomcat ~]# rm -rf /etc/yum.repos.d/*
[root@tomcat ~]# curl -o /etc/yum.repos.d/centos-base.repo https://mirrors.aliyun.com/repo/centos-vault-8.5.2111.repo
[root@tomcat ~]# yum makecache
[root@tomcat ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel wget vim
省略 . . .

//查看安装的版本,能够查看到版本则说明安装成功
[root@tomcat ~]# java -version
openjdk version "1.8.0_312"
openjdk runtime environment (build 1.8.0_312-b07)
openjdk 64-bit server vm (build 25.312-b07, mixed mode)

5.2.拉取tomcat软件包

进入tomcat官网

apache tomcat® - welcome!

//拉取tomcat软件包
[root@tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
--2023-10-10 13:41:29--  https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
resolving archive.apache.org (archive.apache.org)... 65.108.204.189, 2a01:4f9:1a:a084::2
connecting to archive.apache.org (archive.apache.org)|65.108.204.189|:443... connected.
http request sent, awaiting response... 200 ok
length: 11692853 (11m) [application/x-gzip]
saving to: ‘apache-tomcat-9.0.80.tar.gz'

apache-tomcat-9.0.80.tar.gz   100%[===============================================>]  11.15m  25.2kb/s    in 5m 55s  

2023-10-10 13:47:25 (32.1 kb/s) - ‘apache-tomcat-9.0.80.tar.gz' saved [11692853/11692853]

[root@tomcat ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.80.tar.gz

5.3.解压部署

//解压至指定目录
[root@tomcat ~]# tar xf apache-tomcat-9.0.80.tar.gz -c /usr/local/
[root@tomcat ~]# ls /usr/local/
apache-tomcat-9.0.80  bin  etc  games  include  lib  lib64  libexec  sbin  share  src

//设置tomcat软链接,方便后续如果更换tomcat版本后也能直接使用
[root@tomcat ~]# cd //usr/local/
[root@tomcat local]# ll
total 0
drwxr-xr-x  9 root root 220 oct 10 13:49 apache-tomcat-9.0.80
drwxr-xr-x. 2 root root   6 aug 12  2018 bin
drwxr-xr-x. 2 root root   6 aug 12  2018 etc
drwxr-xr-x. 2 root root   6 aug 12  2018 games
drwxr-xr-x. 2 root root   6 aug 12  2018 include
drwxr-xr-x. 2 root root   6 aug 12  2018 lib
drwxr-xr-x. 2 root root   6 aug 12  2018 lib64
drwxr-xr-x. 2 root root   6 aug 12  2018 libexec
drwxr-xr-x. 2 root root   6 aug 12  2018 sbin
drwxr-xr-x. 5 root root  49 jul 20 11:24 share
drwxr-xr-x. 2 root root   6 aug 12  2018 src
[root@tomcat local]# ln -s apache-tomcat-9.0.80 tomcat
[root@tomcat local]# ll
total 0
drwxr-xr-x  9 root root 220 oct 10 13:49 apache-tomcat-9.0.80
drwxr-xr-x. 2 root root   6 aug 12  2018 bin
drwxr-xr-x. 2 root root   6 aug 12  2018 etc
drwxr-xr-x. 2 root root   6 aug 12  2018 games
drwxr-xr-x. 2 root root   6 aug 12  2018 include
drwxr-xr-x. 2 root root   6 aug 12  2018 lib
drwxr-xr-x. 2 root root   6 aug 12  2018 lib64
drwxr-xr-x. 2 root root   6 aug 12  2018 libexec
drwxr-xr-x. 2 root root   6 aug 12  2018 sbin
drwxr-xr-x. 5 root root  49 jul 20 11:24 share
drwxr-xr-x. 2 root root   6 aug 12  2018 src
lrwxrwxrwx  1 root root  20 oct 10 13:51 tomcat -> apache-tomcat-9.0.80
[root@tomcat local]# cd tomcat/
[root@tomcat tomcat]# pwd
//usr/local/tomcat
[root@tomcat tomcat]# ls
bin           conf             lib      logs    readme.md      running.txt  webapps
building.txt  contributing.md  license  notice  release-notes  temp         work
[root@tomcat tomcat]# ls bin/
bootstrap.jar       ciphers.sh                    daemon.sh     setclasspath.bat  startup.sh            version.bat
catalina.bat        commons-daemon.jar            digest.bat    setclasspath.sh   tomcat-juli.jar       version.sh
catalina.sh         commons-daemon-native.tar.gz  digest.sh     shutdown.bat      tomcat-native.tar.gz
catalina-tasks.xml  configtest.bat                makebase.bat  shutdown.sh       tool-wrapper.bat
ciphers.bat         configtest.sh                 makebase.sh   startup.bat       tool-wrapper.sh

上述的bin目录中我们能够用到的catalina.sh、shutdown.sh、version.sh、startup.sh、configtest.sh
这几个执行文件,用途分别是:
catalina.sh 能够关闭和开启服务(常用)
shutdown.sh 只能关闭服务(不是关闭主机)
startup.sh 只能开启服务
version.sh 查看tomcat版本
configtest.sh 测试配置文件是否存在错误,检查配置文件

//将tomcat的lib位置存放在/etc/ld.so.conf/d/下面,命名一个自身名字的文件,方便查找
[root@tomcat tomcat]# ls
bin           conf             lib      logs    readme.md      running.txt  webapps
building.txt  contributing.md  license  notice  release-notes  temp         work
[root@tomcat tomcat]# vim /etc/ld.so.conf.d/tomcat.conf
[root@tomcat tomcat]# cat /etc/ld.so.conf.d/tomcat.conf
/usr/local/tomcat/lib
[root@tomcat tomcat]# ldconfig -v
ldconfig: can't stat /libx32: no such file or directory
ldconfig: path `/usr/lib' given more than once
ldconfig: path `/usr/lib64' given more than once
ldconfig: can't stat /usr/libx32: no such file or directory
/usr/lib64//bind9-export:
	libisccfg-export.so.163 -> libisccfg-export.so.163.0.4
	libisc-export.so.1104 -> libisc-export.so.1104.0.0
	libirs-export.so.161 -> libirs-export.so.161.0.0
	libdns-export.so.1107 -> libdns-export.so.1107.1.0
/usr/local/tomcat/lib:
/lib:
/lib64:

5.4.启动tomcat服务

//使用绝对路径执行/usr/local/tomcat/bin/下面的脚本,tomcat不能写进环境变量,放置后续更改tomcat版本后环境变量仍是之前的tomcat版本
[root@tomcat tomcat]# pwd
//usr/local/tomcat
[root@tomcat tomcat]# cd bin
[root@tomcat bin]# pwd
//usr/local/tomcat/bin
[root@tomcat bin]# ./catalina.sh start
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
using catalina_opts:   
tomcat started.
[root@tomcat bin]# ss -antl
state          recv-q         send-q                      local address:port                 peer address:port        
listen         0              128                               0.0.0.0:22                        0.0.0.0:*           
listen         0              1                      [::ffff:127.0.0.1]:8005                            *:*           
listen         0              100                                     *:8080                            *:*           
listen         0              128                                  [::]:22                           [::]:*
[root@tomcat test]# ps -ef | grep tomcat       //查看tomcat进程
root        1585       1  0 14:02 pts/0    00:00:06 /usr/bin/java -djava.util.logging.config.file=//usr/local/tomcat/conf/logging.properties -djava.util.logging.manager=org.apache.juli.classloaderlogmanager -djdk.tls.ephemeraldhkeysize=2048 -djava.protocol.handler.pkgs=org.apache.catalina.webresources -dorg.apache.catalina.security.securitylistener.umask=0027 -dignore.endorsed.dirs= -classpath //usr/local/tomcat/bin/bootstrap.jar://usr/local/tomcat/bin/tomcat-juli.jar -dcatalina.base=//usr/local/tomcat -dcatalina.home=//usr/local/tomcat -djava.io.tmpdir=//usr/local/tomcat/temp org.apache.catalina.startup.bootstrap start
root        1640    1455  0 14:22 pts/0    00:00:00 grep --color=auto tomcat

服务启动成功

5.5.访问tomcat的web页面

在部署tomcat过程中,网页存放目录在/usr/local/tomcat/webapps中,里面可以存放我们的网页,也可以放置app软件,而我们上述所访问到的页面则来自webapp目录中的root目录中的项目

[root@tomcat tomcat]# ls
bin           conf             lib      logs    readme.md      running.txt  webapps
building.txt  contributing.md  license  notice  release-notes  temp         work
[root@tomcat tomcat]# cd webapps/
[root@tomcat webapps]# ls
docs  examples  host-manager  manager  root

我们新建一个项目目录进行测试

[root@tomcat webapps]# mkdir test && cd test
[root@tomcat test]# vim index.jsp
[root@tomcat test]# cat index.jsp 
<html>
<head>
        <title>test page</title>
</head>
<body>
        <%
            out.println("hellow world");
        %>
</body>
</html>
[root@tomcat test]# 

访问test项目

访问那个项目就在端口后加哪个项目名,不加则默认是root

5.6.尝试访问webapps目录中其他项目

解决方法:

进入tomcat的conf目录中修改tomcat-user.xml文件
[root@tomcat tomcat]# cd conf/
[root@tomcat conf]# ls
catalina         catalina.properties  jaspic-providers.xml  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          jaspic-providers.xsd  server.xml          tomcat-users.xsd
[root@tomcat conf]# vim tomcat-users.xml
[root@tomcat conf]# tail -3 tomcat-users.xml
<role rolename="manager-gui"/>              //设置角色
<user username="tomcat" password="tomcat123" roles="manager-gui"/>  //设置用户,密码,并指定角色
</tomcat-users>

进入tomcat的项目文件(webapps)中任选一个项目
[root@tomcat conf]# cd ../webapps/
[root@tomcat webapps]# ls
docs  examples  host-manager  manager  root  test
[root@tomcat webapps]# cd manager/
[root@tomcat manager]# ls
css  images  index.jsp  meta-inf  status.xsd  web-inf  xform.xsl
[root@tomcat manager]# cd meta-inf/
[root@tomcat meta-inf]# ls
context.xml
[root@tomcat meta-inf]# vim context.xml   //在allow中加入本机的ip网段
[root@tomcat meta-inf]# grep -a1 '<valve classname=' context.xml
  <valve classname="org.apache.catalina.valves.remoteaddrvalve"
         allow="192\.168\.195\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

//修改配置文件后重启服务
[root@tomcat meta-inf]# /usr/local/tomcat/bin/catalina.sh stop
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
using catalina_opts:   
[root@tomcat meta-inf]# ss -antl
state          recv-q         send-q                   local address:port                   peer address:port         
listen         0              128                            0.0.0.0:22                          0.0.0.0:*            
listen         0              128                               [::]:22                             [::]:*            
[root@tomcat meta-inf]# ps -ef | grep tomcat
ps -ef | grep tomcat
root        1839    1455  0 15:06 pts/0    00:00:00 grep --color=auto tomcat
[root@tomcat meta-inf]# /usr/local/tomcat/bin/catalina.sh start
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
using catalina_opts:   
tomcat started.
[root@tomcat meta-inf]# ss -antl
state          recv-q         send-q                      local address:port                 peer address:port        
listen         0              128                               0.0.0.0:22                        0.0.0.0:*           
listen         0              1                      [::ffff:127.0.0.1]:8005                            *:*           
listen         0              100                                     *:8080                            *:*           
listen         0              128                                  [::]:22                           [::]:*           
[root@tomcat meta-inf]# ps -ef | grep tomcat
ps -ef | grep tomcat
root        1852       1 11 15:06 pts/0    00:00:01 /usr/bin/java -djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -djava.util.logging.manager=org.apache.juli.classloaderlogmanager -djdk.tls.ephemeraldhkeysize=2048 -djava.protocol.handler.pkgs=org.apache.catalina.webresources -dorg.apache.catalina.security.securitylistener.umask=0027 -dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -dcatalina.base=/usr/local/tomcat -dcatalina.home=/usr/local/tomcat -djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.bootstrap start
root        1883    1455  0 15:06 pts/0    00:00:00 grep --color=auto tomcat

再次访问

其他项目目录亦是如此,找到项目文件中的context.xml文件添加本机ip网段即可

总结:

tomcat是一个可靠、轻量级、跨平台的java web应用服务器,适用于许多中小型应用程序。它的工作原理基于java servlet和jsp规范,通过将请求分发给相应的servlet或jsp来处理http请求。虽然tomcat在一些高级功能方面可能相对有限,但它作为一个开源项目,提供了一个可靠的基础,使得java web应用程序可以在其中运行。

到此这篇关于tomcat服务安装步骤及详细配置的文章就介绍到这了,更多相关tomcat服务安装及配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com