当前位置: 首页 > news >正文

以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原有注释取消掉并进行配置

 注意:

如果在使用jk整合apache和tomcat后续测试时出现“503 Service Unavailable”,需要将address处修改为虚拟机IP地址或“0.0.0.0”,新增secretRequired="false"这行,并重启测试

四.创建测试界面(谨慎使用中文)

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征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 传感器类重点SCIE 【期刊简介】IF&#xff1a;2.0-2.5&#xff0c;JCR3区&#xff0c;中科院4区&#xff1b; 【版面类型】正刊&#xff1…...

移动端开发基础总结

移动端学习总结 (适合于复习) 移动端基础 技术选型&#xff1a; 单独制作移动端页面&#xff08;主流&#xff09; 流式布局&#xff08;百分比布局&#xff09;flex弹性布局&#xff08;强烈推荐&#xff09;lessrem媒体查询布局混合布局 响应式页面兼容移动端&#xff08;…...

小X学游泳(深搜)

第一题 题目描述 小X想要学游泳。 这天&#xff0c;小X来到了游泳池&#xff0c;发现游泳池可以用N行M列的格子来表示&#xff0c;每个格子的面积都是1&#xff0c;且格子内水深相同。 由于小X刚刚入门&#xff0c;他只能在水深相同的地方游泳。为此&#xff0c;他把整个游泳池…...

分布式协议与算法——拜占庭将军问题

拜占庭将军问题 背景&#xff1a;以战国时期为背景 战国时期&#xff0c;齐、楚、燕、韩、赵、魏、秦七雄并立&#xff0c;后来秦国的势力不断强大起来&#xff0c;成了东方六国的共同威胁。于是&#xff0c;这六个国家决定联合&#xff0c;全力抗秦&#xff0c;免得被秦国各个…...

MySQL数据库管理的基本原则和技巧

MySQL数据库是一种常用的关系型数据库管理系统&#xff0c;用于存储和管理大量的数据。在进行MySQL数据库管理时&#xff0c;有一些基本原则和技巧可以帮助我们更有效地管理数据库。 数据库设计原则&#xff1a; 合理规划数据表结构&#xff1a; 根据数据之间的关系和业务需求…...

SQL-每日一题【1193. 每月交易 I】

题目 Table: Transactions 编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例 1: 解题思路 1.题目要求我们查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数…...

探析青少年口才训练在个人发展中的重要性与影响

论文题目&#xff1a;探析青少年口才训练在个人发展中的重要性与影响 摘要&#xff1a; 本论文旨在探讨青少年口才训练对个人发展的重要性和影响。通过对相关文献的综述和实证研究的分析&#xff0c;论文将阐述口才训练对青少年自信心、表达能力和思维能力的提升&#xff0c;以…...

HTML 元素的 class 和 id 属性有何区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 唯一性⭐ 选择器权重⭐ JS操作⭐ CSS和JavaScript引用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏…...

关于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技术的不断革新&#xff0c;实现各种布局的方式已经多得数不胜数了。 本篇文章总结了四十二种CSS的常见布局&#xff0c;这四十二种布局可以细分为如下几类&#xff1a; 水平居中垂直居中水平垂直居中两列布局三…...

spring AOP两种动态代理

本文开始 1.什么是动态代理&#xff1f; 动态代理&#xff1a;本来是通过直接访问目标对象的&#xff0c;但是找个代理对象替你进行访问目标对象&#xff0c;这就是动态代理过程&#xff1b; 例如&#xff1a;买饭作为目标对象&#xff0c;自己不想亲自跑腿&#xff0c;就点个…...

英语——副词

副词是指在句子中表示行为或状态特征的词,常用来修饰动词、形容词、其他副词或者句子等,表示时间、地点、方式和程度等,在句子中作状语。 第一节 副词的基本形式 一、副词的构成 1.许多副词都是由形容词变化而来。 (1)大部分副词由相应形容词直接加-ly构成。quick→q…...

Vue 本地应用 记事本 v-on v-model v-for使用

新增功能 vue当中如何生成列表结构&#xff1f;使用的指令是v-for&#xff0c;同时要有一个可以生成列表的数据&#xff0c;常用的是数组。记事本里面的内容并不复杂&#xff0c;所以这里使用字符串数组就行了。 获取用户输入的内容使用绑定v-model&#xff0c;双向数据绑定&a…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

C++ 类基础:封装、继承、多态与多线程模板实现

前言 C 是一门强大的面向对象编程语言&#xff0c;而类&#xff08;Class&#xff09;作为其核心特性之一&#xff0c;是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性&#xff0c;包括封装、继承和多态&#xff0c;同时讨论类中的权限控制&#xff0c;并展示如何使用类…...