文章目录

  • 1.JVM基本介绍
  • 2.Tomcat是什么,与Nginx的区别。
  • 3.Tomcat安装、配置、启动
    • 4.Tomcat的HTTP请求过程
  • 4.使用tomcat部署web服务
  • 5.使用tomcat部署多节点web服务
  • 6.tomcat的base的基础认证
    • 7.java源码包、jar包、war包的关系、联系、区别?
  • 8. tomcat集群部署

1.JVM基本介绍

JAVA业务都是运行在java虚拟机上的,简称 jvm ( java virtual machine )
为什么java需要jvm虚拟机?

早期:
C语言 不支持跨域平台 (游戏)
Windows:在编译一次
MACOS:还需要编译
LINUX: 编译一次
可移植性比较的差。

JAVA: 可以做到一次编译,多处运行。
windows、linux、macos。
需要我们在操作系统上启动运行一个jvm虚拟机,这样我们将java编译好的war、jar包
在windows、linux、macos平台上运行起来。无需我们重复编译。

jvm是由谁提供的呢?
jre:java运行环境 java runtime environment,包含了jvm。
jdk:java开发环境 会包含java的运行环境 jre。(yum install java -y 会安装jdk)

如果我们只是单纯运行java代码,jre足够。 jdk。

2.Tomcat是什么,与Nginx的区别。

Tomcat是一个web服务,提供动态程序的解析(java),支持静态资源。

企业nginx+tomcat模型, nginx处理静态资源,tomcat处理动态资源(java),能加速网站的访问和降低访问的延迟。

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。


3.Tomcat安装、配置、启动

1.安装jdk
yum install java -y

2.安装Tomcat ( 下载 Tomcat、解压、启动 )
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
mkdir /soft
tar xf apache-tomcat-9.0.34.tar.gz -C /soft/
ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat

3.目录结构

bin 主要包含启动和关闭tomcat的脚本(启停java脚本依赖jar包文件)
  conf tomcat配置文件的目录
  lib tomcat运行时需要加载的jar包
  logs tomcat日志存放位置
  temp tomcat临时存放文件路径
  webapps tomcat默认站点目录
  work tomcat运行时产生的缓存文件

4.Tomcat的HTTP请求过程

用户发出一个请求,如http://tomcat.oldxu.com:8080/index.jsp
Connector发现是http/1.1协议,而且还是8080端口,于是就把请求接收后交给符合条件的Engine
Engine通过请求中的主机名tomcat.oldxu.com查找满足条件的虚拟主机(Host)
找到后就去此虚拟主机指定的appBase(代码存放的目录)最后将解析产生的结果返回给用户。


4.使用tomcat部署web服务

  1. 定义虚拟主机
vim /soft/tomcat/conf/server.xml<!--站点zrlog.oldxu.com--><Host name="zrlog.oldxu.com"  appBase="/zrlog"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="zrlog_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>
  1. 上传war包至指定目录
[root@web01 conf]# mkdir /zrlog
[root@web01 conf]# ll /zrlog/
总用量 11316
-rw-r--r-- 1 root root 11585583 5月  11 11:32 ROOT.war
  1. 重启tomcat应用
1.自动加压.war包
2.自动部署,war包  (自动生成ROOT目录)
[root@web01 conf]# /soft/tomcat/bin/shutdown.sh
[root@web01 conf]# /soft/tomcat/bin/startup.sh
  1. 检查是否部署ok
[root@web01 conf]# tail -f /soft/tomcat/logs/catalina.out
11-May-2020 11:33:32.577 信息 [main] org.apache.coyote.AbstractProtocol.start
开始协议处理句柄["http-nio-8080"]
11-May-2020 11:33:32.681 信息 [main] org.apache.catalina.startup.Catalina.start
Server startup in [4,035] milliseconds

配置远程数据库连接信息

MariaDB [(none)]> create  database zrlog charset utf8;
MariaDB [(none)]>grant all privileges on *.* to 'all'@'%' identified by 'xxxxxx';
  1. 访问zrlog站点

5.使用tomcat部署多节点web服务

web1 172.16.1.7
web2 172.16.1.8

1.安装tomcat
[root@web02 ~]# yum install java -y

3.拷贝代码 (注意是在web01节点操作的)
[root@web01 ~]# scp -rp /soft root@10.0.0.8:/
[root@web01 ~]# scp -rp /zrlog root@10.0.0.8:/

4.web02操作如下
[root@web02 ~]# rm -rf /soft/tomcat/
[root@web02 ~]#ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat

5.共享静态资源。
yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# chown -R www.www /data/zrlog/
[root@nfs ~]# systemctl restart nfs

所有web节点都需要挂载
mount -t nfs 172.16.1.31:/data/zrlog /zrlog/ROOT/attached/

6.tomcat的base的基础认证

配置Tomcat网页管理页面。 ( nginx basic auth)

  1. vim /soft/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="oldxu" password="123456" roles="manager-gui,admin-gui"/>
  1. 还需要配置该项目的访问权限,因为Tomcat默认管理页面仅允许本机访问,如果希望其他网段能正常访问,需要配置允许规则。
    vim /soft/tomcat/webapps/manager/META-INF/context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />   #修改为
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" />
  • 为zrblog添加/admin/添加base认证

1.需要找到项目下的WEB-INF/web.xml进行配置。(了解)
[root@es-node1 tomcat]# vim /zrlog/ROOT/WEB-INF/web.xml

<web-app>
...<security-constraint><!--定义资源名称以及需要认证的url--><web-resource-collection><web-resource-name>zrlog</web-resource-name><url-pattern>/admin/*</url-pattern></web-resource-collection><!--给对应资源关联角色名--><auth-constraint><role-name>zrlog_role</role-name></auth-constraint></security-constraint><!--调用BASIC方法来实现认证--><login-config><auth-method>BASIC</auth-method><realm-name>Default</realm-name></login-config>
...
</web-app>

2.配置用户名密码,关联对应的角色(多个role不要使用相同用户)
[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml

<role rolename="zrlog_role"/>
<user username="tomcat" password="123456" roles="zrlog_role"/>

重启tomcat
[root@es-node1 ~]#/soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh


7.java源码包、jar包、war包的关系、联系、区别?

1.什么是源码包?

由java工程师编写的java代码,称为java源码包。
编译( maven 方式去编译java的源代码 )

编译之后会得到一个包裹:

war jar

2.什么是war包?

由源码编译后生成的产物,可以直接放入 tomcat运行起来。( 比较广泛 )

3.什么是jar包?

由源码编译后生成的产物。
1.不能独立运行起来,它可能被某个java程序依赖运行。或者war包运行所依赖。
2.可独立运行起来的, java -jar xxx.jar 直接启动运行,无需tomcat

4.源码包、jar、war:

1.源码包编译后会产生war包、jar包
2.war通常是直接由tomcat运行启动,启动加载项目时会依赖一些jar包。
3.jar包,
分为不可独立运行(被java程序依赖运行、或者是被war包依赖运行)
分为可独立运行:可以直接对外提供服务。只需要有java环境即可。启动命令: java -jar xx.jar


8. tomcat集群部署

8.1 Nginx_proxy
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.oldxu.com.conf

upstream zrlog {server 172.16.1.7:8080;server 172.16.1.8:8080;
}server {listen 80;server_name zrlog.oldxu.com;#tomcat启动的java程序,可以直接通过proxy_pass进行负载均衡location / {proxy_pass http://zrlog;include proxy_params;}
}

8.2 单节点Tomcat实现HTTPS ( 了解 )
1.修改tomcat配置: server.xml

0.首先需要有证书 ( 必须 )
1.将http的默认监听端口8080 修改为 80,redirect至 443
2.开启https监听器,配置证书即可。
3.将http强制跳转https ( tomcat操作,与nginx无关。)

使用新机器web03演示

[root@nfs ~]# yum install java -y
[root@nfs ~]# mkdir /soft
[root@nfs ~]#tar xf apache-tomcat-9.0.34.tar.gz -C /soft/
[root@nfs ~]#ln -s /soft/apache-tomcat-9.0.34/ /soft/tomcat
vim /soft/tomcat/conf/server.xml

    <Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="443" /><Connector port="443"protocol="HTTP/1.1"SSLEnabled="true"scheme="https"secure="true"keystoreFile="/ssl/3434295_aliyun.xuliangwei.com.pfx"keystoreType="PKCS12"keystorePass="OpI94943"clientAuth="false"SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/> mkdir /ssl/------>>>放入证书

2.1 修改 localhost

<Host name="aliyun.xuliangwei.com"  appBase="webapps"

2.2 配置http跳转 https
在负载均衡上配置证书就可以实现全栈https

web1 web2 lb3
172.16.1.7 172.16.1.8 10.0.0.5

[root@lb01 conf.d]# cat /etc/nginx/conf.d/proxy_zrlog.oldxu.com.conf

upstream zrlog {server 172.16.1.7:8080;server 172.16.1.8:8080;
}server {listen 443 ssl;server_name zrlog.oldxu.com;ssl_certificate ssl_key/server.crt;ssl_certificate_key ssl_key/server.key;#tomcat启动的java程序,可以直接通过proxy_pass进行负载均衡location / {proxy_pass http://zrlog;include proxy_params;}
}server {listen 80;server_name zrlog.oldxu.com;return 302 https://$server_name$request_uri;
}

8.3 Nginx+Tomcat+Redis实现集群会话共享

多种方式:
1.ip_hash
2.mysql
3.redis
4.tomcat自带的cluster session复制 ( 官方建议不要超过4个tomcat节点 )

  • 准备web01 和 web02
    支持redis session共享----->>>下载 tomcat-cluster-redis-session-manager

  • 解压

  • 1.拷贝所有的jar包
    [root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/

  • 2.拷贝redis配置文件,并且更新redis配置文件
    [root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/

  • 3.Add the below two lines in your tomcat/conf/context.xml file.
    <Valve className="tomcat.request.session.redis.SessionHandlerValve" />
    <Manager className="tomcat.request.session.redis.SessionManager" />

  • 4.准备web01 和web02 一个session测试页面

  <!--站点session.oldxu.com--><Host name="session.oldxu.com"  appBase="/session"unpackWARs="true" autoDeploy="true"></Host>

[root@web02 ~]# mkdir -p /session/ROOT
[root@web02 ~]# vi /session/ROOT/index.jsp

<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getCreationTime());
out.println("<br> web02 SESSION ID:" + session.getId() + "<br>");
out.println("Session created time is :" + session.getCreationTime()
+ "<br>");
%>
</body>
  • 5.接入负载均衡
    [root@lb01 conf.d]# cat /etc/nginx/conf.d/proxy_session.oldxu.com.conf
upstream session {server 172.16.1.7:8080;server 172.16.1.8:8080;
}server {listen 80;server_name session.oldxu.com;location / {proxy_pass http://session;include proxy_params;}
}

建议:
1.先配置session的网站
2.搭建nginx+tomcat集群
3.测试访问,演示是否web01和web02的session不一致
4.接入redis,实现tomcat共享会话信息
5.再次测试,请求web01和web02 看session是否是一致的。
6.登陆redis查看是否存在对应的session的key

50 Tomcat 集群部署相关推荐

  1. 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享

    2019独角兽企业重金招聘Python工程师标准>>> 一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储S ...

  2. tomcat集群部署

    tomcat集群部署 1 创建2个 tomcat 2 将 tomcat 官网文档的配置示例复制到 server.xml文件中 3 修改 server.xml 文档中的参数配置 3.1 Cluster ...

  3. Nginx+Tomcat集群部署

    为了获取更好的性能,我们常常需要将tomcat进行集群部署.下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞. 应用场景环 ...

  4. Linux系统搭建Nginx+Tomcat集群部署

    Nginx支持的负载均衡调度算法方式: 1. 热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务.服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB ...

  5. Tomcat 集群部署

    Tomcat快速入门 Tomca基本介绍 环境准备 JVM介绍 Java业务都是运行在java虚拟机上,java虚拟机简称JVM( java virtual machine) ​ 虚拟机是通过软件模拟 ...

  6. tomcat集群session共享

    在部署cas系统的时候,遇到个问题,在tomcat集群部署cas系统,不能在一边服务器实现了登陆而在另一侧服务器还是没登录的.所以要实现tomcat集群的session的共享,从而实现高可用. 了解到 ...

  7. 《架构系列四:一键部署应用到Tomcat集群中》

    <架构系列四:一键部署应用到Tomcat集群中> 基于前面的<架构系列三:使用Keepalived+Nginx+tomcat实现集群部署>,我们配置了nginx+Tomcat集 ...

  8. 传统分布式架构部署(apache+tomcat集群)

    背景: 单一服务器部署应用在往往随着应用人数的增加和频率的提高及后续数据量的增大会达到瓶颈,服务器会出现卡顿.崩溃等情况:所以在不改变应用结构的情况下只能进行部署架构上的变化,即使用apache(Ap ...

  9. kubernetes入门到精通(二):k8s部署Tomcat集群,基于NTFS协议的文件集群共享,Service提供负载均衡,端口转发工具Rinetd配置外部访问

    首先,配置 Docker 镜像加速服务 登录阿里云账号,进入控制台 -> 容器镜像服务 (不需要有阿里云的服务器,只要注册账号即可) 在两台 node 节点上配置好阿里云的镜像加速. 重启一下 ...

最新文章

  1. 开博拉~~~庆祝一下,哈~~~
  2. eclipse开发android的好处,从Eclipse切换到IntelliJ IDEA for Android开发的好处
  3. BZOJ-1177 [Apio2009]Oil
  4. CMS 系统之 iframe 结构
  5. spark使用KryoRegistrator java代码示例
  6. 13-微信小程序商城 产品简介布局(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  7. 如何编写一个高效的Testbench?
  8. Java开发的文字RPG游戏,代码开源
  9. HTML5期末大作业:抗疫主题网站设计(14页) HTML+CSS+JavaScript web课程设计网页规划与设计...
  10. springBoot 报警告 Could not find acceptable represent
  11. 智能建筑弱电工程基本的一些施工项目
  12. 我的世界java百度什么电脑玩好_【我的世界】为了在龙芯电脑上玩Minecraft(我的世界)我做了什么_玩得好游戏攻略...
  13. opera 无法访问网络
  14. Apache Calcite教程-SQL解析-Calcite SQL解析
  15. 细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(五)
  16. 『津津乐道播客』#134. 不是纹个皮皮虾你就能叫黑涩会了(嘉宾:索大)
  17. 香农费诺编码 c语言实现,信息论课程设计(香农、费诺编码)
  18. Exchange Server 2010部署(一)部署Windows Server 2008 R2域控制器
  19. 2020年百度之星·程序设计大赛 - 初赛一(前三题)
  20. 中职计算机专业英语课件,计算机专业英语课件—unit 1.ppt

热门文章

  1. matlab 05,Matlab05基础教程555.ppt
  2. 计算机综合应用实训是什么意思,计算机综合应用能力实训.ppt
  3. 读了一本还算不错的小说
  4. 什么是token?有什么用?
  5. 【社区图书馆】如何唤醒数学脑
  6. ES之Highlight及Suggest搜索推荐详解
  7. 使用python解析Java类
  8. Python 单样本学习实用指南:1~6 全
  9. 如何在PowerPoint中使用水印
  10. 玩转华为ENSP模拟器系列 | 配置SSH服务器支持其他端口号访问的举例