云计算百科
云计算领域专业知识百科平台

企业级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规范中与ServletJSP相关的类库,是JavaEE不完整实现。

1999年发布初始版本是Tomcat 3.0,实现了Servlet 2.2 JSP 1.1规范。

Tomcat 4.x发布时,内建了CatalinaServlet容器)和 JasperJSP engine)等

当前 Tomcat 的正式版本已经更新到 9.0.x 版本,但当前企业中主流版本为 8.x 和 7.x

官网:http://tomcat.apache.org/

官网文档: https://tomcat.apache.org/tomcat-8.5-doc/index.html

帮助文档:https://cwiki.apache.org/confluence/display/tomcat/

               https://cwiki.apache.org/confluence/display/tomcat/FAQ

安装tomcat

安装Java环境

[root@tomcata ~]# dnf install java-1.8.0-openjdk.x86_64 -y

查看Java版本:

[root@tomcata ~]# java -version
openjdk version "1.8.0_462"
OpenJDK Runtime Environment (build 1.8.0_462-b08)
OpenJDK 64-Bit Server VM (build 25.462-b08, mixed mode)

查看java环境目录:

[root@tomcata ~]# which java
/usr/bin/java
[root@tomcata ~]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 8月 11 21:12 /usr/bin/java -> /etc/alternatives/j
ava

Java运行环境:

[root@tomcata ~]# cd /etc/alternatives/jre
[root@tomcata jre]# ls
ASSEMBLY_EXCEPTION bin lib LICENSE THIRD_PARTY_README

安装并启动tomcat

解压并生成tomcat程序目录:

[root@tomcata ~]# tar zxf apache-tomcat-9.0.107.tar.gz -C /usr/local/
[root@tomcata ~]# cd /usr/local/
[root@tomcata local]# ls
apache-tomcat-9.0.107 etc include lib64 sbin src
bin games lib libexec share
[root@tomcata local]# mv apache-tomcat-9.0.107/ tomcat
[root@tomcata local]# ls
bin etc games include lib lib64 libexec sbin share src tomcat
[root@tomcata local]#

用网络复制到第二台上

[root@tomcata local]# cd tomcat/
[root@tomcata tomcat]# cd bin/
[root@tomcata bin]# ./startup.sh

启动tomcat:

[root@tomcata local]# cd tomcat/
[root@tomcata tomcat]# cd bin/
[root@tomcata bin]# ./startup.sh

tomcat的文件结构和组成

目录结构

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

查看端口

[root@tomcata ~]# netstat -antlupe | grep java
tcp6 0 0 :::8080 :::* LISTEN
0 61384 30180/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN
0 62627 30180/java

访问tomcat

生成tomcat启动文件

生成主配置文件:

[root@tomcata ~]# vim /usr/local/tomcat/conf/tomcat.conf

JAVA_HOME=/etc/alternatives/jre
~

生成启动文件:

[root@tomcata ~]# 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

[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

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

[root@tomcatb ~]# useradd -s /sbin/nologin -M tomcat
[root@tomcatb ~]# chown tomcat.tomcat /usr/local/tomcat/ -R

用启动脚本开启服务:

[root@tomcat-]# systemctl enable –now tomcat

[root@tomcatb ~]# systemctl start tomcat

实现tomcat中的负载均衡

前端主机配置nginx:

[root@nginx ~]# systemctl enable –now nginx.service

vim /etc/nginx/conf.d/vhosts.conf

upstream tomcat {
hash $$cookie_JSESSIONID;
server 192.168.88.12:8080;
server 192.168.88.13:8080;
}
server{
listen 80;
server_name www.zk.org;
location ~\\.jsp$ {
proxy_pass http://tomcat;
}
}

Memcached
Memcached 只支持能序列化的数据类型,不支持持久化,基于Key-Value的内存缓存系统memcached 虽然没有像redis所具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群同步的方式, 让各memcached服务器的数据进行同步,从而实现数据的一致性,即保证各memcached的数据是一样 的,即使有任何一台 memcached 发生故障,只要集群中有一台 memcached 可用就不会出现数据丢 失,当其他memcached 重新加入到集群的时候,可以自动从有数据的memcached 当中自动获取数据并 提供服务。

memcached的安装与启动

[root@tomcat8 ~]# dnf install memcached -y

[root@tomcatA ~]# vim /etc/sysconfig/memcached

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-1 0.0.0.1,:1"

[root@tomcata ~]# systemctl enable –now memcached
Created symlink
/etc/systemd/system/multi-user.target.wants/memcached.service
→ /usr/lib/systemd/system/memcached.service.
[root@tomcata ~]# netstat -antlupe | grep memcache

memcached 操作命令

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

           set        add         replace         get        delete

#前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>
<value>

#参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)

#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes

[root@tomcatb ~]# dnf install telnet -y

[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

示例session 共享服务器

msm(memcached session manager)提供将Tomcat的session保持到memcached可以实现高可用。 项目早期托管在google code,目前在Github github网站链接: https://github.com/magro/memcached-session-manager

安装

参考链接: https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

将spymemcached.jar、memcached-session-manage、kyro相关的jar文件都放到Tomcat的lib目录 中,这个目录是 $CATALINA_HOME/lib/ ,对应本次安装就是/usr/local/tomcat/lib/。

/usr/local/tomcat/lib/中加入这些👇

t1和m1部署可以在一台主机上,t2和m2部署也可以在同一台。

当新用户发请求到Tomcat1时, Tomcat1生成session返回给用户的同时,也会同时发给memcached2备份。即Tomcat1 session为主session,memcached2 session为备用session,使用memcached相当于 备份了一份Session

如果Tomcat1发现memcached2 失败,无法备份Session到memcached2,则将Sessoin备份存放在 memcached1中

两后端服务器配置:

[root@tomcata ~]# vim /usr/local/tomcat/conf/context.xml

limitations under the License.
–>
<!– The contents of this file will be loaded for each web application –>
<Context>
<!– Default set of monitored resources. If one of these changes, the
–>
–>
<!– web application will be reloaded.
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>$${catalina.base}/conf/web.xml</WatchedResource>
<!– Uncomment this to disable session persistence across Tomcat restarts
->
<!–
<Manager pathname="" />
–>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager
memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\\.(ico|png|gif|jpg|css|js)$$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTransc
oderFactory"
/>
</Context>
~
~
~

[root@tomcata ~]# dnf install memcached -y

赞(0)
未经允许不得转载:网硕互联帮助中心 » 企业级WEB应用服务器TOMCAT
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!