web应用服务器tomcat

tomcat功能介绍

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和 并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和 JSP容器起始于SUN 公司的一个Servlet的参考实现项目 Java Web Server,开发者是 James Duncan Davidson, 在1999年,将项目贡献给了apache软件基金会(ASF),和ASF现有的项目 JServ 合并,并开源成为顶级 项目

Tomcat 仅仅实现了Java EE规范中与Servlet、JSP相关的类库,是JavaEE不完整实现。 1999年发布初始版本是Tomcat 3.0,实现了Servlet 2.2 和 JSP 1.1规范。 Tomcat 4.x发布时,内建了Catalina(Servlet容器)和 Jasper(JSP engine)等 当前 Tomcat 的正式版本已经更新到 9.0.x 版本,但当前企业中主流版本为 8.x

安装tomcat

1.安装java环境
bash 复制代码
#安装java环境
[root@tomcat ~]# yum install java-1.8.0-openjdk.x86_64 -y
#查看java版本
[root@tomcatA ~]# java -version
openjdk version "1.8.0_402"
OpenJDK Runtime Environment (build 1.8.0_402-b06)
OpenJDK 64-Bit Server VM (build 25.402-b06, mixed mode)
#查看java的环境目录
[root@tomcatA ~]# which java
/usr/bin/java
[root@tomcatA ~]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Jul 30 10:41 /usr/bin/java -> /etc/alternatives/java
#java的运行环境
[root@tomcatA ~]# cd /etc/alternatives/jre
[root@tomcatA jre]# ls
ASSEMBLY_EXCEPTION bin lib LICENSE THIRD_PARTY_README
2.解压并重命名

启动后查看端口

测试:

tomcat文件组成

bash 复制代码
目录   说明
-------------------------------------------------------
bin 服务启动、停止等相关程序和文件
conf 配置文件
lib   库目录
logs 日志目录
webapps 应用程序,应用部署目录,相当于nginx的默认发布目录
work jsp 编译后的结果文件,建议提前预热访问

生成tomcat启动文件

1.生成tomcat的主配置文件

bash 复制代码
[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre

2.生成启动文件

bash 复制代码
[root@tomcat ~]# 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

3.生成tomcat用户并设定软件安装目录权限

bash 复制代码
[root@tomcatB bin]# useradd -s /sbin/nologin -M tomcat
[root@tomcatB bin]# chown tomcat.tomcat /usr/local/tomcat/

4.用启动脚本开启服务

systemctl enable tomcat --now

结合反向代理tomcat部署

给默认发布页面一个测试目录

dnf install nginx -y #安装nginx

在主配置里导入所有子配置文件

vim /var/local/nginx/nginx.conf

在子配置文件写入

vim /var/local/nginx/conf.d/vhosts.conf

测试:

tomcat负载均衡实现

bash 复制代码
[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
upstream tomcat {
   #ip_bash;
   #hash $cookie_JSESSIONID;
   server 172.25.254.10:8080;
   server 172.25.254.20:8080;
}
server {
   listen 80;
   server_name lee.timinglee.org;
   root /webdataw/nginx/timinglee.org/lee;
   access_log /var/log/nginx/access.log;
   error_log /var/log/nginx/error.log;
   try_files $uri $uri.html $uri/index.html /error/default.html;
   location ~ \.jsp$ {
       proxy_pass http://tomcat;
   }
}

测试:

Memcached

Memcached 只支持能序列化的数据类型,不支持持久化,基于Key-Value的内存缓存系统memcached 虽然没有像redis所具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群同步的方式, 让各memcached服务器的数据进行同步,从而实现数据的一致性,即保证各memcached的数据是一样 的,即使有任何一台 memcached 发生故障,只要集群中有一台 memcached 可用就不会出现数据丢 失,当其他memcached 重新加入到集群的时候,可以自动从有数据的memcached 当中自动获取数据并 提供服务。 Memcached 借助了操作系统的 libevent 工具做高效的读写。libevent是个程序库,它将Linux的epoll、 BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高 性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能 Memcached 支持最大的内存存储对象为1M,超过1M的数据可以使用客户端压缩或拆分报包放到多个 key中,比较大的数据在进行读取的时候需要消耗的时间比较长,memcached 最适合保存用户的 session实现session共享 Memcached存储数据时, Memcached会去申请1MB的内存, 把该块内存称为一个slab, 也称为一个page Memcached 支持多种开发语言,包括:JAVA,C,Python,PHP,C#,Ruby,Perl等

memcached的安装与启动
bash 复制代码
[root@tomcat ~]# yum install memcached -y
[root@tomcat ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0,::1"
[root@tomcat ~]# systemctl enable --now memcached
[root@tomcat ~]# netstat -antlupe | grep memcache
tcp       0     0 0.0.0.0:11211           0.0.0.0:*               LISTEN     
980       97815     34711/memcached
memcached操作命令

五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:

  • set
  • add
  • replace
  • get
  • delete
bash 复制代码
#参数说明如下:
command set/add/replace
key     key 用于查找缓存值
flags     可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time     在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes     在缓存中存储的字节数
value     存储的值(始终位于第二行)
#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes  
bash 复制代码
[root@tomcat ~]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
#增加
add leekey 0 60 4 #0 是否压缩 60 过期时间 4 字长
test
STORED
add leekey1 0 60 3
lee
STORED
#查看
get leekey
VALUE leekey 0 4
test
get leekey1
VALUE leekey1 0 3
lee
#改
set leekey 0 60 5
test1
STORED
get leekey
VALUE leekey 0 5
test1
END
add leekey1 0 60 4
test
#删除
delete leekey
DELETED
get leekey
END


get leekey1
VALUE leekey1 0 3
lee
#清空
flush_all
OK
get leekey1
END

msm

msm(memcached session manager)提供将Tomcat的session保持到memcached可以实现高可用。 项目早期托管在google code,目前在Github

rpm -qa | grep memcached

查看tomcat插件存储位置

systemctl restart tomcat # 重启tomcat

failoverNodes:当一个服务器的tomcat出故障时,另一台会要找自己的memcached的,因为自己的里面也是有对端的数据的

再重启服务

systemctl restart tomcat

20主机的tomcat挂了

systemctl stop tomcat.service

这里会有之前数据的原因是,20往10的memcached里存的数据,20挂了,10会在memcached里读取数据

相关推荐
芥子沫1 小时前
VSCode添加Python、Java注释技巧、模板
开发语言·前端·javascript
cos2 小时前
FE Bits 前端周周谈 Vol.2|V8 提速 JSON.stringify 2x,Vite 周下载首超 Webpack
前端·javascript·css
yuezhilangniao2 小时前
关于开发语言的一些效率 从堆栈角度理解一部分c java go python
java·c语言·开发语言
码luffyliu2 小时前
Java NIO 核心原理与秋招高频面试题解析
java·nio
一只叫煤球的猫2 小时前
⚠️ 不是危言耸听,SpringBoot正在毁掉Java工程师
java·spring boot·spring
vvilkim2 小时前
深入理解Java访问修饰符:封装的艺术
java·开发语言
wfsm2 小时前
pdf预览Vue-PDF-Embed
前端
wangbing11252 小时前
界面规范的其他框架实现-列表-layui实现
前端·javascript·layui
張萠飛3 小时前
生产环境Tomcat运行一段时间后,如何测试其性能是否满足后续使用
java·tomcat