TOMCAT实验

TOMCAT

一、TOMCAT功能介绍

1.1 安装TOMCAT

配置Java环境

复制代码
[root@tomcat1 ~]#  yum install java-1.8.0-openjdk.x86_64 -y
[root@tomcat2 ~]#  dnf install java-1.8.0-openjdk.x86_64 -y

Java环境被存放在 /etc/alternatives/目录下

复制代码
[root@tomcat1 ~]# ls /etc/alternatives/jre_openjdk

解压tomcat安装包到/usr/local/目录下,并制作软连接tomcat

复制代码
[root@tomcat1 ~]# tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat1 ~]# cd /usr/local/
[root@tomcat1 local]# ls
apache-tomcat-9.0.93  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@tomcat1 local]# ln -s apache-tomcat-9.0.93 tomcat
[root@tomcat1 local]# ls
apache-tomcat-9.0.93  bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat
[root@tomcat1 local]# cd tomcat/
[root@tomcat1 tomcat]# ls
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

[root@tomcat1 tomcat]# ls
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
bin->执行命令 conf->配置文件 lib->库 logs->日志 temps->临时文件 webapps->默认发布目录 work->工作目录

启动tomcat,查看端口

复制代码
[root@tomcat1 bin]# ./startup.sh
[root@tomcat1 bin]# netstat -anltupe | grep java

浏览器访问

1.2 生成TOMCAT的启动文件

先进入conf文件中,看有没有相关编辑文件

没有,新建conf配置文件

复制代码
[root@tomcat1 conf]# vim tomcat.conf
JAVA_HOME=/etc/alternatives/jre_openjdk

内容注释:JAVA配置环境

复制代码
[root@tomcat1 conf]# 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@tomcat1 conf]# vim/lib/systemd/system/tomcat.service
#!/bin/bash
case $1 in
  start)
  /usr/local/tomcat/bin/startup.sh
  ;;
  stop)
  /usr/local/tomcat/bin/shutdown.sh
  ;;
esac

添加可执行权限
[root@tomcat1 conf]# chmod +x /usr/bin/tomcat

编写完脚本后,也可将原先配置文件变为如下内容

建立tomcat用户

启动tomcat却出现报错,分析报错原因

journalctl -xe查看

报错信息中发现Permission denied 应该是拒绝访问,也就是没有权限

需要去做文件生成,但是并没有权限

加权后再重启就成功了

配置完成后,将node1的配置文件内容发送到node2

node2进行下列编辑

然后启动后查询

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

2.1 常见部署方式

2.2 负载均衡的实现

将test.jsp拷贝,同时发送给tomcat2主机

root@tomcat1 \~\]# cp test.jsp /usr/local/tomcat/webapps/ROOT/ \[root@tomcat1 \~\]# scp test.jsp [email protected]:/usr/local/tomcat/webapps/ROOT/ 拷贝后浏览器访问 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3cc642f0c76241f2b4e3643eeee15a17.png) session作用 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f01f878acbb94b36b3203422a46eee60.png) cookie保存客户端,session保存服务器 浏览器关闭,cookie消失 默认下,tomcat可以对session进行复制,可以使用两个tomcat从而实现session的稳定性 编辑内容完成代理,浏览器访问查询 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e953b992ec244da98bdea94bb7d984cd.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e2b7280787b9492ba2dae6aad2deaa32.png) 负载均衡 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e5558ed7980e48edba3290a7511d0b1b.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/711aed26bc734484b4cd59743bf838cc.png) 随着刷新,实现在10与20不断变换 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c7b104c58cd749c090211b0da755ae05.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/99707dd3f5b54c8e9636a760d3930e3f.png) 但是,由于是两台机器进行tomcat配置,提交内容无法进行保存。 接下来将针对该问题进行会话保持 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a07da9b7afe2477391b35dada75b2f7e.png) 此时再刷新,会话也不会发生变化 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c904a2ec6e314944866735bfa9679af3.png) 此时提交数据,数据会得到保存 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5f95d309faf24b78a8d0aaf7ff69e654.png) 但是现在还有一个问题,如果我新开一个界面,他并没有完成负载均衡,还是10地址进行hash算法(原因是我们是同一个浏览器,原地址hash,会自动跳转到10端) 通俗来讲就是,原先是ip_hash,同一台电脑肯定访问同一个服务器,但是我们要对不同的name,即test1与test2不同来实现负载均衡,方法:对cookie进行hash算法。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/206c887307964d4cb2547439de8a870d.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/521ce9aaf2014c40bfde6c56cd1aa9e7.png) 负载均衡完毕 #### 2.3 Session的会话保持 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7521018c51d0411ea7a5f2dbf96181a2.png) 此刻如果把10挂了那么数据也将丢失 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/93ea82f9c3eb4bd4b63a8358b1095860.png) 接下来将使用memcache进行数据保存 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/65e497259bda4a2e8b9611485d302679.png) 下载memcache软件包 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a4a6e19eb9704dbe968674d6c64d0dd5.png) 因为需要tomcat去连接,所以需要去配置文件中编辑 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/47974467b2a848a1a7ae9396623efc85.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9a1233c329f44e49b5d590c590c477dc.png) 改完重启 含义:在所有网络上都可将11211端口连接 20机同理 重启后进行端口查询 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1b5f2f84306445e4b9046504ee30c3cc.png) 下载telnet安装包实现连接 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fe67599f9b9f4b00a2624d5d910908fd.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/974833a8519a486db0214e1533a374c6.png) 连接后可以实现编辑,报错原因:限制2个字节。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eee9626db5a44e8b9d293f10b0e9c023.png) add添加 get查询 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/811614e57ba94d77acbb5d34e48b6e9f.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/aec59c14e8cb43a4bbc0ef6ea924e3a7.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/86933545f5d140d4abfb025f7555a3bc.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/70c053c887584d5da317c94446d9c54a.png) 配置完浏览器访问,确认无误 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cc52ab4e0d25468a920468a00b74cba8.png) 现在在20上,把20关闭重新尝试 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5f05604b8a1244abb994b7cdcddeca92.png) 说明交叉存储成功

相关推荐
麻芝汤圆11 分钟前
MapReduce 的广泛应用:从数据处理到智能决策
java·开发语言·前端·hadoop·后端·servlet·mapreduce
努力的搬砖人.11 分钟前
java如何实现一个秒杀系统(原理)
java·经验分享·后端·面试
哈哈哈哈哈哈哈哈哈...........17 分钟前
【java】在 Java 中,获取一个类的`Class`对象有多种方式
java·开发语言·python
fallwind_of_july22 分钟前
java项目分享-分布式电商项目附软件链接
java·redis·分布式·mongodb·elasticsearch·微服务·rabbitmq
武昌库里写JAVA38 分钟前
Golang的消息中间件选型
java·开发语言·spring boot·学习·课程设计
工一木子41 分钟前
大厂算法面试 7 天冲刺:第6天-树与图深度剖析——高频算法面试题 & Java 实战
java·算法·面试
振鹏Dong1 小时前
字符串——面试考察高频算法题
java·数据结构·算法
小小鸭程序员2 小时前
Spring Boot项目连接MySQL数据库及CRUD操作示例
java·spring boot·python·mysql·spring
forestsea2 小时前
Java虚拟机面试题:内存管理(中)
java·开发语言
茶本无香2 小时前
Java异步编程中的CompletableFuture介绍、常见错误及最佳实践
java·future·异步·常见错误