Tomcat多实例部署和动静分离

一、多实例部署:

   多实例:多实例就是在一台服务器上同时开启多个不同的服务端口,同时运行多个服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。

  1.前期准备:

1.关闭防火墙:systemctl stop firewalld.servicesetenforce 02.准备安装包3.安装jdk:rpm -ivh jdk-8u201-linux-x64.rpm4.部署两个tomcat:mv apache-tomcat-9.0.16 /usr/local/tomcat1cp -a /usr/local/tomcat1/ /usr/local/tomcat2

  2.配置tomcat环境变量:

vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat1
export CATALINA_BASE1=/usr/local/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat1#tomcat2
export CATALINA_HOME2=/usr/local/tomcat2
export CATALINA_BASE2=/usr/local/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat2source /etc/profile.d/tomcat.sh  ##刷新配置

  3.更改端口号:

  修改 tomcat2 中的 server.xml 文件,各 tomcat 实例配置不能有重复的端口号

22行,修改Server prot,默认为8005 -> 修改为800669行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

  4.更改启动、关闭脚本的环境变量:

tomcat1:vim /usr/local/tomcat1/bin/startup.shexport CATALINA_BASE=$CATALINA_BASE1export CATALINA_HOME=$CATALINA_HOME1export TOMCAT_HOME=$TOMCAT_HOME1vim /usr/local/tomcat1/bin/shutdown.shexport CATALINA_BASE=$CATALINA_BASE1export CATALINA_HOME=$CATALINA_HOME1export TOMCAT_HOME=$TOMCAT_HOME1tomcat2:vim /usr/local/tomcat2/bin/startup.shexport CATALINA_BASE=$CATALINA_BASE2export CATALINA_HOME=$CATALINA_HOME2export TOMCAT_HOME=$TOMCAT_HOME2vim /usr/local/tomcat2/bin/shutdown.shexport CATALINA_BASE=$CATALINA_BASE2export CATALINA_HOME=$CATALINA_HOME2export TOMCAT_HOME=$TOMCAT_HOME2

  5.启动tomcat:

  6.测试:

二、动静分离:

  1.实验背景:

Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但不是把所有的web请求转发,而是将静态页面请求Ncinx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。
Tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台Tomcat服务器。并且Tomcat并发量处理能力弱(约Nginx的六分之一),所以需要Nginx方向代理时,进行合理的调用分配。

  2.地址分配:

(1)代理服务器(Nginx):

     192.168.88.100

  • 作为前端,处理静态请求,响应静态页面
  • 将动态请求转发到后端,由后端Toncat处理
  • 动态请求的负载均衡

(2)Tomcat服务器:

192.168.88.103:8080  192.168.88.103:8081  192.168.88.104:8080 

   作为后端,处理动态请求 

  3.配置tomcat:

  tomcat 8080#添加jsp界面
vim  /usr/local/tomcat1/webapps/www/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 1,192.168.88.103:8080");%></body></html>#配置主机访问路径
vim /usr/local/tomcat1/conf/server.xml<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat1/webapps/www" path="" reloadable="true" /></Host>tomcat  8081
vim  /usr/local/tomcat2/webapps/www/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test2 page</title></head><body><% out.println("动态页面 2,192.168.88.103:8081");%></body></html>vim /usr/local/tomcat2/conf/server.xml<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat2/webapps/www" path="" reloadable="true" /></Host>tomcat 192.168.88.104:8080   同上#配置完成后重启服务
shutdown.sh    startup.sh

  4.配置nginx动静分离:

    4.1 在http块中配置服务器组:

upstream www {server 192.168.88.103:8080;server 192.168.88.103:8081;server 192.168.88.104:8080;
}

    4.2 配置动态静态请求的location:

##访问以jsp结尾的url时代理到动态服务器组 location ~ .*\.jsp$ {proxy_pass http://www;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#ip透穿}##访问静态图片就用nginx本机处理:location ~ .*\.(jpg|png) {root /apps/nginx/html;
}nginx -s reload  ##刷新配置文件

5.测试:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131238.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker部署Canal监听MySQL binlog

文章目录 概念简述binlogCanal MySQL配置Canal配置创建挂载目录设置权限创建MySQl的Canal账户拉取镜像运行容器简单运行配置文件复制到宿主机修改配置文件删除之前运行的canal容器正式运行Canal容器 查看运行状态排查问题 概念简述 binlog MySQL的二进制日志binlog可以说是My…

揭秘跑腿小程序开发中的5个关键技巧,让你的应用一炮而红

作为专注于跑腿小程序开发多年的领域专家&#xff0c;我深知在如今激烈的市场竞争中&#xff0c;如何打造一个引人注目且成功的跑腿小程序是至关重要的。在本文中&#xff0c;我将为大家揭秘跑腿小程序开发中的5个关键技巧&#xff0c;助你的应用一炮而红。无论你是一个初学者还…

【Fiddler】mac m1 机器上使用 fiddler 抓取接口

mac m1 机器上使用 fiddler 抓取接口&#xff08;非虚拟机模式&#xff09; author: jwensh date:2023.09.12 文章目录 mac m1 机器上使用 fiddler 抓取接口&#xff08;非虚拟机模式&#xff09;1. 环境准备2. 进行配置3. 使用情况 1. 环境准备 想要抓取 mac 上浏览器的接口&a…

快速傅里叶变换

引言 目标 傅里叶变化&#xff08;Fourier transform&#xff09;是一种信号处理技术&#xff0c;它可以将时间信号转换为频率信号&#xff0c;即将一组具有相同数量频率的正弦波叠加在一起&#xff0c;形成一组新的正弦波。如果我们把时间信号从频域转换到时域&#xff0c;那么…

酷开科技打造更好体验服务用户

智能电视以其海量资源、智慧大屏、高清画质等特点在国内快速普及。然而&#xff0c;随着用户量的增加、用户群体的需求多元化&#xff0c;导致消费者对智能电视的应用要求越来越高&#xff0c;不仅希望智能电视内容丰富&#xff0c;最好还能拥有“多合一”的功能。 好在&#…

【unity3D】TimeLine(详细图解)

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇关于unity的TimeLine TimeLine 介绍打开TimeLine面板的方式创建TimeLine创建Track的两种方式Track的详解TimeLine的Track的分类Activation…

【送书活动】借助ChatGPT和Python,轻松实现办公自动化✨

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

tkintter四大按钮:Button,Checkbutton, Radiobutton, Menubutton

文章目录 四大按钮Button连击MenubuttonCheckbuttonRadiobutton tkinter系列&#xff1a; GUI初步&#x1f48e;布局&#x1f48e;绑定变量&#x1f48e;绑定事件&#x1f48e;消息框&#x1f48e;文件对话框控件样式扫雷小游戏&#x1f48e;强行表白神器 四大按钮 tkinter中…

总结987

考研倒计时102天 时间记录&#xff1a; 6:20起床 7:00~7:40早读&#xff0c;13年tex2 7:50~8:20实验室 8:30~8:34列日计划 8:40~11:18进步本回顾&#xff0c;记录 11&#xff1a;20~12:20计算机网络网课 2:10~3:05计网20道选择题 3:07~4:42政治1000题25道选择题纠错 …

第8章_freeRTOS入门与工程实践之内存管理

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

Redis优化 RDB AOF持久化

---------------------- Redis 高可用 ---------------------------------------- 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境…

Navicat连接openGauss数据库报错

错误信息&#xff1a;fe_sendauth:invalid authentication request from server:AUTH_REQ_SASL_CONT without AUTH_REQ_SASL 解决步骤&#xff1a; 1&#xff09;关闭防火墙&#xff1a; 切换root用户执行&#xff1a;su - root 输入密码 systemctl status firewalld 查…

Ngnix封禁IP与ip段

Ngnix IP封禁以及实现自动封禁IP 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.创建文件&#xff08;被封禁的ip写里面&#xff09; 在ngnix的conf目录下创建一个blockip.conf文件&#xff0c;里面放需要封禁的IP与ip段&#xff0c;格式如下&#xff08;deny是禁用…

微信小程序手写时间间隔组件,可设置间隔时间一分钟,半小时,一小时的间隔

纯手写时间间隔组件 需求&#xff1a;小程序中可以根据时间段进行选择开始时间和结束时间&#xff0c;如&#xff1a;当前时间是09&#xff1a;00&#xff0c; 则我可以从9点开始选择时间&#xff0c;每半个小时为间隔&#xff0c;那么下一个时间就算9&#xff1a;30&#xff…

【RocketMQ】消息的存储

当Broker收到生产者的消息发送请求时&#xff0c;会对请求进行处理&#xff0c;从请求中解析发送的消息数据&#xff0c;接下来以单个消息的接收为例&#xff0c;看一下消息的接收过程。 数据校验 封装消息 首先Broker会创建一个MessageExtBrokerInner对象封装从请求中解析到…

社区版IDEA导入Eclipse项目注意事项

经过正常导入教程之后。。。 有些jar包没有依赖导入&#xff0c;我这里直接把tomcat的lib全导入

【Spring Boot系列】- Spring Boot侦听器Listener

【Spring Boot系列】- Spring Boot侦听器Listener 文章目录 【Spring Boot系列】- Spring Boot侦听器Listener一、概述二、监听器Listener分类2.1 监听ServletContext的事件监听器2.2 监听HttpSeesion的事件监听器2.3 监听ServletRequest的事件监听器 三、SpringMVC中的监听器3…

骨传导耳机对人体有危险吗?会损害听力吗?

如果在使用骨传导耳机的时候控制好时间和音量&#xff0c;是不会对人体带来危险和造成伤害的。 下面跟大家解释一下为什么骨传导耳机对人体没有危害&#xff0c;最大的原因就是骨传导耳机不需要空气传导&#xff0c;而是通过颅骨传到听觉中枢&#xff0c;传输过程中几乎没有噪…

docker容器技术实战-2

03docker hub 首先注册上号&#xff1a; https://hub.docker.com/ 上传自己的镜像仓库 创建自己的仓库 webserver 拉取镜像 配置加速器 04搭建私有仓库 上传镜像 在主机1上 在主机2 上 激活内核选项 激活内核选项文件传输过去 配置使用非加密端口 05 docker私有仓库 仓库加…

langchain主要模块(二):数据连接

langchain2之数据连接 langchain1.概念2.主要模块模型输入/输出 (Model I/O)数据连接 (Data connection)链式组装 (Chains)代理 (Agents)内存 (Memory)回调 (Callbacks) 3.数据连接1.数据加载&#xff1a;2.文档分割&#xff1a;3.文档向量化&#xff1a;4.存储和检索向量数据:…