【tomcat】超级详细,包含基本的安装+结构+配置+反向代理+负载均衡+memecached+session

理论部分:

Tomcat是一个开源的Java Servlet容器,也是Apache软件基金会(Apache Software Foundation)的一个项目。它主要用于实现Java Servlet和JavaServer Pages(JSP)技术,是一个轻量级的、高性能的Web服务器和应用服务器。Tomcat不仅支持Java EE规范,还能作为一个完整的应用服务器来运行企业级的Java应用程序。

功能

  1. Servlet和JSP支持:Tomcat能够处理动态网页的生成和交互,支持Java Servlet和JSP技术的实现。

  2. HTTP协议支持:提供对HTTP协议的支持,处理HTTP请求和响应,支持静态页面和动态页面的访问。

  3. Java EE规范支持:支持Java Persistence API (JPA)、Java Transaction API (JTA)、Java Message Service (JMS)等Java EE规范,可以运行企业级应用程序。

  4. 跨平台性:基于Java开发,因此可以在多种操作系统上运行,如Windows、Linux、Unix等。

  5. 灵活和可扩展:支持插件和扩展,可以通过添加额外的组件和功能来满足不同的需求,如连接池、安全认证、负载均衡等。

  6. 配置和管理:提供简单的架构和丰富的管理和监控工具,便于管理员配置和管理应用程序。

特点

  1. 轻量级:相对于其他企业级应用服务器,Tomcat具有较小的内存占用和快速的启动速度。

  2. 高性能:能够处理大量的并发请求,并具有优秀的响应速度。

  3. 易于使用:配置简单,易于上手,适合初学者和快速开发需求。

  4. 开源免费:作为开源项目,Tomcat可以免费下载和使用,降低了开发成本。

优点

  1. 丰富的功能:支持Servlet和JSP技术,能够构建功能强大的Web应用程序。

  2. 高性能:在处理大量并发请求时表现出色,适合高负载场景。

  3. 跨平台:支持多种操作系统,便于在不同环境下部署和应用。

  4. 可扩展性:通过插件和扩展支持更多功能,满足企业级应用的需求。

  5. 丰富的社区支持:作为开源项目,Tomcat拥有庞大的开发者社区,便于获取技术支持和分享经验。

缺点

  1. 处理静态文件能力较弱:与Nginx、Apache等服务器相比,Tomcat在处理静态文件(如HTML、图片等)时性能稍逊。

  2. 配置相对复杂:虽然Tomcat的配置相对简单,但对于初学者来说,仍需要一定的学习和实践才能熟练掌握。

  3. 安全性问题:由于Tomcat的广泛使用,它也成为了黑客攻击的目标之一,因此需要加强安全配置和防护。

适合场合

Tomcat适合用于开发和部署较小规模的Web应用程序,如个人网站、简单的企业应用程序和中小型的电子商务网站等。它对于初学者和快速开发需求非常友好,同时也能够满足企业级应用的基本需求。然而,在需要处理大量静态文件或需要更高性能的场景下,可能需要结合其他Web服务器(如Nginx)来共同使用。

实验部分:

、WEB框架

1、 tomcat功能介绍

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和JSP容器。

2、安装tomcat

推荐从Apache官网下载源码包直接安装启动

三台主机
tomcat 172.25.254.100
tomcat-node1.timinglee.org 172.25.254.10
tomcat-node2.timinglee.org 172.25.254.20
#在node1、node2
1.安装java环境
[root@tomcat-node1 ~]# yum install java-1.8.0-openjdk.x86_64 -y
2.安装并启动tomcat
[root@tomcat-node1 ~]# tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat-node1 ~]# ln -s /usr/local/apache-tomcat-9.0.93/ /usr/local/tomcat
[root@tomcat-node1 ~]#  /usr/local/tomcat/bin/startup.sh
3.查看端口
[root@tomcat-node1 ~]# netstat -antlupe | grep java
tcp6 0 0 :::8080 :::* LISTEN 0
68636 32887/java
4.访问tomcat
172.25.254.10:8080
3、tomcat的文件结构和组成
目录结构
目录 说明
-------------------------------------------------------
bin 服务启动、停止等相关程序和文件
conf 配置文件
lib 库目录
logs 日志目录
webapps 应用程序,应用部署目录,相当于nginx的默认发布目录
work jsp 编译后的结果文件,建议提前预热访问
查看tomcat相关目录和文件
[root@tomcat-node1 ~]#  ls /usr/local/tomcat/
bin conf lib logs README.md RUNNING.txt
webapps
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
4、生成tomcat的启动文件
4.1 生成tomcat的主配置文件
[root@tomcat-node1 ~]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre_openjdk
4.2 生成启动文件
[root@tomcat-node1 ~]# useradd -s /sbin/nologin -M tomcat
[root@tomcat-node1 ~]# ls /usr/local/tomcat/ -ld
drwxr-xr-x 9 root root 220 Aug 21 11:50 /usr/local/tomcat/
[root@tomcat-node1 ~]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat-node1 ~]# ls /usr/local/tomcat/ -ld
drwxr-xr-x 9 tomcat tomcat 220 Aug 21 11:50 /usr/local/tomcat/
​
[root@tomcat-node1 ~]#  vim /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
[root@tomcat-node1 ~]# systemctl daemon-reload
[root@tomcat-node1 ~]# systemctl enable --now tomcat

20

二、结合反向代理实现tomcat部署

1、常见部署方式
  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。

  • 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat

LNMT:Linux + Nginx + MySQL + Tomcat

LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat

  • 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更适合

LNMT:Linux + Nginx + MySQL + Tomcat

  • 多级代理

LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

2、利用nginx实现反向代理

  • 利用nginx反向代理功能,实现图中的代理功能,将用户请求全部转发至指定的同一个tomcat主机

  • 利用nginx指令proxy_pass 可以向后端服务器转发请求报文,并且在转发时会保留客户端的请求报文中的host首部

# node1、node2
[root@tomcat-node1 ~]# cp test.jsp /usr/local/tomcat/webapps/ROOT/  
​
访问172.25.254.10:8080/test.jsp出现以下内容
3、负载均衡
[root@nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf
upstream memcache {
    server 127.0.0.1:11211;
    keepalive 512;
}
upstream tomcat {
    hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}
server {
    listen *:80;
    server_name www.timinglee.org;
    root /data/web/html;
    index index.html;
​
    location ~ \.jsp$ {
        proxy_pass http://tomcat;
    }
}
​
[root@nginx ~]# nginx -s reload

三、memcached

1、memcached安装和启动
# node1、node2
[root@tomcat-node1 ~]# dnf install memcached -y
[root@tomcat-node1 ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0,::1"
[root@tomcat-node1 ~]# systemctl start memcached
[root@tomcat-node1 ~]# netstat -antlupe | grep memcache
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN
980 97815 34711/memcached
​
# 测试
[root@tomcat-node2 ~]# dnf install telnet -y
[root@tomcat-node2 ~]# telnet 172.254.20 11211

四、session共享服务器

1、msm介绍
  • Tomcat的Session管理类,Tomcat版本不同

memcached-session-manager-2.3.2.jar

memcached-session-manager-tc9-2.3.2.jar

  • Session数据的序列化、反序列化类

官方推荐kyro

在webapp中WEB-INF/lib/下

  • 驱动类

memcached(spymemcached.jar)

Redis(jedis.jar)

2、安装和配置过程
# node1\node2
[root@tomcat-node1 ~]# cd jar/
[root@tomcat-node1 jar]# ls
asm-5.2.jar                              minlog-1.3.1.jar
kryo-3.0.3.jar                           msm-kryo-serializer-2.3.2.jar
kryo-serializers-0.45.jar                objenesis-2.6.jar
memcached-session-manager-2.3.2.jar      reflectasm-1.11.9.jar
memcached-session-manager-tc9-2.3.2.jar  spymemcached-2.12.3.jar
[root@tomcat-node1 jar]# cp *.jar /usr/local/tomcat/lib/
[root@tomcat-node1 jar]# vim /usr/local/tomcat/conf/context.xml
    <Manager pathname="" />
    -->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
        failoverNodes="n1"  #在node2写n2
        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>
​
[root@tomcat-node1 jar]# systemctl stop tomcat.service 
[root@tomcat-node1 jar]# systemctl start tomcat
​
#测试
在浏览器访问www.timinglee.org/test.jsp  出现20
关闭20 
[root@tomcat-node2 jar]# systemctl stop tomcat.service 
之前添加的数据还在,并且和新加的数据一起转到node1上
  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值