以mod_jk方式整合apache与tomcat(动静分离)
前言:
为什么要整合apache和tomcat
apache对静态页面的处理能力强,而tomcat对静态页面的处理不如apache,整合后有以下好处
- 提升对静态文件的处理性能
- 利用 Web 服务器来做负载均衡以及容错
- 更完善地去升级应用程序
jk整合方式介绍(较为普遍的方式)
- jk是通过 AJP 协议与 Tomcat 服务器进行通讯
- Tomcat 默认的 AJP Connector 的端口是 8009(在tomcat的server.xml文件中默认被注释掉)
- JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到tomcat 的连接进行设置
目录
一.准备apache、tomcat、jk环境
1.apache和tomcat配置专栏其它文章有介绍,不过多阐述
2.编译安装jk环境
二.配置jk模块以实现整合
1.以我的安装路径为例首先将/usr/local/src/tomcat-connectors-1.2.48-src/native/apache-2.0/mod_jk.so这个文件拷贝到/etc/httpd/modules
2.配置mod_jk.conf文件,我同意放在/etc/httpd/conf下的
3.配置workers.properties,上面定义的在那个位置就创建在哪个位置
4.更改/etc/httpd/conf/httpd.conf
三.更改tomcat的server.xml配置
1.按照自己的tomcat安装位置查找该文件
2.在文件中找到AJP的这个位置,将Connector原有注释取消掉并进行配置
注意:
四.创建测试界面(谨慎使用中文)
1.apache测试文件,这里以默认的html目录为例
2.tomcat测试文件,放在你tomcat安装目录中的webapps/ROOT目录下
五.测试
一.准备apache、tomcat、jk环境
1.apache和tomcat配置专栏其它文章有介绍,不过多阐述
[root@localhost native]# yum install -y httpd httpd-devel.x86_64 gcc gcc-c++ make
2.编译安装jk环境
可以到镜像网站下载包

[root@localhost jk]# tar -zvxf tomcat-connectors-1.2.48-src.tar.gz -C /usr/local/src/
[root@localhost native]# pwd
/usr/local/src/tomcat-connectors-1.2.48-src/native
[root@localhost native]# whereis apxs #查看apxs位置
apxs: /usr/bin/apxs /usr/share/man/man1/apxs.1.gz
[root@localhost native]# ./configure --with-apxs=/usr/bin/apxs
#使用上面查到的apxs进行编译安装
[root@localhost native]# make
[root@localhost native]# make install
二.配置jk模块以实现整合
1.以我的安装路径为例首先将/usr/local/src/tomcat-connectors-1.2.48-src/native/apache-2.0/mod_jk.so这个文件拷贝到/etc/httpd/modules
[root@localhost apache-2.0]# pwd
/usr/local/src/tomcat-connectors-1.2.48-src/native/apache-2.0
[root@localhost apache-2.0]# cp mod_jk.so /etc/httpd/modules/
2.配置mod_jk.conf文件,我同意放在/etc/httpd/conf下的
一定注意文件的路径,不确定就写绝对路径
[root@localhost conf]# pwd
/etc/httpd/conf
[root@localhost conf]# vim mod_jk.conf
LoadModule jk_module modules/mod_jk.so #导入刚才移过来的mod_jk.so模板
JkWorkersFile /etc/httpd/conf/workers.properties #稍后需要创建的tomcat的工作文件
JkLogFile /var/log/httpd/mod_jk.log #自定义,重启后会自动创建
JkLogLevel info #日志等级
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories
JkRequestLogFormat "%w %V %T" #一些日志格式
JkMount /*.jsp worker1 #重要参数,将以".jsp"结尾的文件交给worker1处理,worker1也是稍后workers.properties工作文件中的主要参与者#这里可以定义多个任务分配,按实际需求定义
workers.properties
JkMount /* worker1
JkMount /*.jsp worker1
JkMount /servlet/* worker1
JkMount /*.do worker1
JkMount /*.action worker1
JkMount /*.class worker1
JkMount /*.jar worker1
JkMount /jkstatus status # 状态页
3.配置workers.properties,上面定义的在那个位置就创建在哪个位置
[root@localhost conf]# vim workers.properties
workers.tomcat_home=/usr/local/tomcat/ #定义tomcat工作目录
workers.java_home=/usr/java//usr/java/jdk1.8.0_371 #定义jdk工作目录
worker.list=worker1 #处理请求的“工作者”
worker.worker1.type=ajp13 #固定模板
worker.worker1.host=192.168.2.190 #该“工作者”主机地址
worker.worker1.port=8009 #该“工作者”服务端口#如果在mod_jk.so中定义了状态页,需要
#worker.list = status
#worker.status.type=status
4.更改/etc/httpd/conf/httpd.conf
添加上这行

三.更改tomcat的server.xml配置
1.按照自己的tomcat安装位置查找该文件
[root@localhost conf]# pwd
/usr/local/tomcat/apache-tomcat-8.5.70/conf
[root@localhost conf]# vim server.xml
2.在文件中找到AJP的这个位置,将Connector原有注释取消掉并进行配置
注意:
如果在使用jk整合apache和tomcat后续测试时出现“503 Service Unavailable”,需要将address处修改为虚拟机IP地址或“0.0.0.0”,新增secretRequired="false"这行,并重启测试

四.创建测试界面(谨慎使用中文)
1.apache测试文件,这里以默认的html目录为例
[root@localhost html]# pwd
/var/www/html
[root@localhost html]# vim index.html
apache
2.tomcat测试文件,放在你tomcat安装目录中的webapps/ROOT目录下
[root@localhost ROOT]# pwd
/usr/local/tomcat/apache-tomcat-8.5.70/webapps/ROOT
[root@localhost ROOT]# vim test.jsp
tomcat
五.测试

相关文章:
以mod_jk方式整合apache与tomcat(动静分离)
前言: 为什么要整合apache和tomcat apache对静态页面的处理能力强,而tomcat对静态页面的处理不如apache,整合后有以下好处 提升对静态文件的处理性能 利用 Web 服务器来做负载均衡以及容错 更完善地去升级应用程序 jk整合方式介绍&#…...
springboot动态数据源切换
1)、就是将多个数据源全部注入到bean中,根据需要实现多数据源之间的切换。 2)、使用baomidou的DS注解。见文章DS注解实现数据源动态切换 com.baomidou dynamic-datasource-spring-boot-starter 3.5.1 ##设置默认的数据源或者数据源组,默认值…...
代码随想录训练营day14
101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 func isSymmetric(root *TreeNode) bool {if root nil{ return true}return judge(root.Left,root.Right) }func judge(lf *TreeNode , ri *TreeNode)bool{if lf nil && ri nil{ retu…...
功能测试进阶自动化测试如何摸清学习方向,少走弯路呢?
目录 抛开疑问,只做学术探讨 小白在想什么? 盖楼之前先打好地基,首先需要学习一门语言 语言入门后,正式踏上开始自动化成神之路,入门篇Selenium 玩腻了Selenium 开始接触自动化框架unittest/testNG 不满足于单元…...
检测前端是否可以ping通后端返回的ip地址
检测前端是否可以ping通后端返回的ip地址 前端检测是否可ping通ip地址(PC端)前端检测是否可ping通ip地址(uniapp小程序端) 前端检测是否可ping通ip地址(PC端) // 前端检测是否可ping通ip地址 ping…...
SMART司马他法则(目标管理)
S代表具体(Specific),指绩效考核要切中特定的工作指标,不能笼统; M代表可度量(Measurable),指绩效指标是数量化或者行为化的,验证这些绩效指标的数据或者信息是可以获得的; A代表可实现(Attainable)&…...
【LeetCode】删除并获得点数
删除并获得点数 题目描述算法分析编程代码空间优化 链接: 删除并获得点数 题目描述 算法分析 编程代码 class Solution { public:int deleteAndEarn(vector<int>& nums) {const int N 10001;int arr[N] {0};for(const auto& n : nums){arr[n]n;}vector<in…...
SciencePub学术 | 传感器类重点SCIE征稿中
SciencePub学术 刊源推荐: 传感器类重点SCIE征稿中!信息如下,录满为止: 一、期刊概况: 传感器类重点SCIE 【期刊简介】IF:2.0-2.5,JCR3区,中科院4区; 【版面类型】正刊࿱…...
移动端开发基础总结
移动端学习总结 (适合于复习) 移动端基础 技术选型: 单独制作移动端页面(主流) 流式布局(百分比布局)flex弹性布局(强烈推荐)lessrem媒体查询布局混合布局 响应式页面兼容移动端(…...
小X学游泳(深搜)
第一题 题目描述 小X想要学游泳。 这天,小X来到了游泳池,发现游泳池可以用N行M列的格子来表示,每个格子的面积都是1,且格子内水深相同。 由于小X刚刚入门,他只能在水深相同的地方游泳。为此,他把整个游泳池…...
分布式协议与算法——拜占庭将军问题
拜占庭将军问题 背景:以战国时期为背景 战国时期,齐、楚、燕、韩、赵、魏、秦七雄并立,后来秦国的势力不断强大起来,成了东方六国的共同威胁。于是,这六个国家决定联合,全力抗秦,免得被秦国各个…...
MySQL数据库管理的基本原则和技巧
MySQL数据库是一种常用的关系型数据库管理系统,用于存储和管理大量的数据。在进行MySQL数据库管理时,有一些基本原则和技巧可以帮助我们更有效地管理数据库。 数据库设计原则: 合理规划数据表结构: 根据数据之间的关系和业务需求…...
SQL-每日一题【1193. 每月交易 I】
题目 Table: Transactions 编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例 1: 解题思路 1.题目要求我们查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数…...
探析青少年口才训练在个人发展中的重要性与影响
论文题目:探析青少年口才训练在个人发展中的重要性与影响 摘要: 本论文旨在探讨青少年口才训练对个人发展的重要性和影响。通过对相关文献的综述和实证研究的分析,论文将阐述口才训练对青少年自信心、表达能力和思维能力的提升,以…...
HTML 元素的 class 和 id 属性有何区别?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 唯一性⭐ 选择器权重⭐ JS操作⭐ CSS和JavaScript引用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏…...
关于GKPhoto点击放大没有图片只有缺省图
GKPhoto,点进去看看,人家可传递的不止有url,还有UiImage NSString *photo self.detailModel.teacherModel.teacher_picture; NSString *placeHoldStr "ing_morentouxiang"; NSMutableArray *photos [NSMutableArray new]; GKPhoto *phot…...
建议收藏!总结了 42 种前端常用布局方案
对 CSS 布局掌握程度决定你在Web开发中的开发页面速度。随着Web技术的不断革新,实现各种布局的方式已经多得数不胜数了。 本篇文章总结了四十二种CSS的常见布局,这四十二种布局可以细分为如下几类: 水平居中垂直居中水平垂直居中两列布局三…...
spring AOP两种动态代理
本文开始 1.什么是动态代理? 动态代理:本来是通过直接访问目标对象的,但是找个代理对象替你进行访问目标对象,这就是动态代理过程; 例如:买饭作为目标对象,自己不想亲自跑腿,就点个…...
英语——副词
副词是指在句子中表示行为或状态特征的词,常用来修饰动词、形容词、其他副词或者句子等,表示时间、地点、方式和程度等,在句子中作状语。 第一节 副词的基本形式 一、副词的构成 1.许多副词都是由形容词变化而来。 (1)大部分副词由相应形容词直接加-ly构成。quick→q…...
Vue 本地应用 记事本 v-on v-model v-for使用
新增功能 vue当中如何生成列表结构?使用的指令是v-for,同时要有一个可以生成列表的数据,常用的是数组。记事本里面的内容并不复杂,所以这里使用字符串数组就行了。 获取用户输入的内容使用绑定v-model,双向数据绑定&a…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
