企业级WEB应用服务器TOMCAT---相关部署

发布于:2025-08-14 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

1.tomcat的功能介绍

3.1 安装Tomcat(两台主机)

3.2 tomcat的文件结构和组成

3.3 生成tomcat的启动文件

2.结合反向代理实现tomcat部署

2.1 常见部署方式介绍

2.2 利用 nginx 反向代理实现

3.Memcached

3.1 memcached的安装与启动

3.2 memcached操作命令

4.session 共享服务器

4.1 msm介绍

4.2 安装与配置


1.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

3.1 安装Tomcat(两台主机)

(1)安装java环境

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

# 查看java版本
[root@tomcatb ~]# java -version
openjdk version "1.8.0_345"
OpenJDK Runtime Environment (build 1.8.0_345-b01)
OpenJDK 64-Bit Server VM (build 25.345-b01, mixed mode)

# 查看java的环境目录
[root@tomcatb ~]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Aug 13 01:44 /usr/bin/java -> /etc/alternatives/java
(2)安装并启动tomcat
# 解压并生成tomcat的程序目录
[root@tomcata ~]# cd /mnt/
[root@tomcata mnt]# tar zxf apache-tomcat-9.0.107.tar.gz -C /usr/local/
[root@tomcata mnt]# cd /usr/local/
[root@tomcata local]# ls
apache-tomcat-9.0.107  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@tomcata local]# mv apache-tomcat-9.0.107/ tomcat

# 启动tomcat
[root@tomcata local]# cd tomcat
[root@tomcata tomcat]# cd bin/
[root@tomcata bin]# ./startup.sh
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.

(3)查看端口

[root@tomcata bin]#  netstat -antlupe | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      0          55005      28559/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      0          55633      28559/java

访问测试(记得关火墙)

3.2 tomcat的文件结构和组成

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

查看tomcat相关目录和文件

3.3 生成tomcat的启动文件

(1)生成tomcat的主配置文件

[root@tomcatb bin]# vim /usr/local/tomcat/conf/tomcat.conf

JAVA_HOME=/etc/alternatives/jre

(2)生成启动文件

[root@tomcatb bin]# 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用户并设定软件安装目录权限

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

(4)用启动脚本开启服务

[root@tomcatb bin]# systemctl enable --now tomcat.service

2.结合反向代理实现tomcat部署

2.1 常见部署方式介绍

  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。
  • 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat
    • LNMTLinux + Nginx + MySQL + Tomcat
    • LAMTLinux + ApacheHttpd+ MySQL + Tomcat
  • 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更适合
    • LNMTLinux + Nginx + MySQL + Tomcat
  • 多级代理
    • ​​​​​​​LNNMTLinux + Nginx + Nginx + MySQL + Tomcat

2.2 利用 nginx 反向代理实现

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

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

(1)在Nginx服务器开启Nginx服务

采用子配置文件的方式

[root@tom-nginx ~]# dnf install nginx -y

[root@tom-nginx ~]# vim /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;

[root@tom-nginx ~]# vim /etc/nginx/conf.d/vhosts.conf

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

# 重启服务
[root@tom-nginx ~]# systemctl restart nginx.service

做好域名解析

(2)Tomcat服务器配置

上传测试文件(两台服务器均要配置)

[root@tomcatb bin]# cd /usr/local/tomcat/webapps/ROOT/

[root@tomcatb ROOT]# systemctl restart tomcat.service

访问测试(windows主机做好本地域名解析):


3.Memcached

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

Memcached 借助了操作系统的 libevent 工具做高效的读写。libevent是个程序库,它将Linuxepoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高性能。memcached使用这个libevent库,因此能在LinuxBSDSolaris等操作系统上发挥其高性能

Memcached 支持最大的内存存储对象为1M,超过1M的数据可以使用客户端压缩或拆分报包放到多个key中,比较大的数据在进行读取的时候需要消耗的时间比较长,memcached 最适合保存用户的session实现session共享

Memcached存储数据时, Memcached会去申请1MB的内存, 把该块内存称为一个slab, 也称为一个page

Memcached 支持多种开发语言,包括:JAVA,C,Python,PHP,C#,Ruby,Perl

Memcached 官网:http://memcached.org/

3.1 memcached的安装与启动

[root@tomcata ~]# dnf 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@tomcata ~]# systemctl enable --now memcached
[root@tomcata ~]# netstat -antlupe | grep memcache
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      981        62649      30140/memcached
tcp6       0      0 ::1:11211               :::*                    LISTEN      981        62650      30140/memcached

3.2 memcached操作命令

五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:set、add、replace、get、delete

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

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

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

例子:

[root@tomcata ~]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
add leekey 0 60 4
test
STORED

add leekey1 0 60 3
lee
STORED

# 查看
get leekey
VALUE leekey 0 4
test
END

4.session 共享服务器

4.1 msm介绍

msmmemcached session manager)提供将Tomcatsession保持到memcached可以实现高可用。

项目早期托管在google code,目前在Github

4.2 安装与配置

(1)把需要的jar包,从/mnt/下放到/usr/local/tomcat/lib该目录下(两台tomcat都做)

[root@tomcatb mnt]# unzip jar.zip
[root@tomcatb mnt]# ls
apache-tomcat-9.0.107.tar.gz  hgfs  jar  jar.zip
[root@tomcatb mnt]# cd jar/
[root@tomcatb jar]# cp * /usr/local/tomcat/lib/

(2)追加tomcat配置

a的配置:
[root@tomcata jar]# vim /usr/local/tomcat/conf/context.xml

<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.KryoTranscoderFactory"
    />


b的配置:
[root@tomcatb lib]# vim /usr/local/tomcat/conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
        failoverNodes="n2"
        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />

# 做完重启服务
systemctl restart memcached.service

a:

b:

测试:

现在服务是在tomcata上,写入数据,数据正常

把tomcata停掉

不刷新,继续提交新的信息,它会自动转到tomcatb上,并且数据保留


网站公告

今日签到

点亮在社区的每一天
去签到