当前位置: 首页 > 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…...

【AI】了解ChatMemory 底层实现机制

&#xff08;说实在&#xff0c;看个 七、整体架构总结 就行了&#xff09; 为何要了解底层原理&#xff0c;其意义在于出问题好排查&#xff0c;写代码时有思路。 基于源码调试与运行时验证&#xff0c;深度拆解ChatMemory 底层实现机制&#xff0c;重点解析 ChatMemoryStor…...

Jetson Orin Nano 新手避坑:从零部署YoloV5,我踩过的那些环境配置的‘雷’

Jetson Orin Nano 边缘AI部署实战&#xff1a;YOLOv5环境配置全攻略与避坑指南 1. 硬件准备与系统烧录 Jetson Orin Nano作为NVIDIA新一代边缘计算设备&#xff0c;其强大的AI算力与紧凑体积使其成为计算机视觉项目的理想选择。但在开始YOLOv5部署前&#xff0c;正确的硬件准…...

告别拓展坞!实测Spacedesk无线投屏:Win10/Win11到iPad的延迟、画质与触控体验全解析

Spacedesk无线投屏实战评测&#xff1a;Win11与iPad Pro的协作新范式 当iPad Pro的Liquid视网膜显示屏遇上Windows系统的生产力工具&#xff0c;能否摆脱线材束缚实现无缝协作&#xff1f;Spacedesk这款免费无线投屏软件正在重新定义多屏工作场景。作为深度体验过各类投屏方案的…...

COMSOL电磁超声仿真避坑指南:从‘域不适用’报错到结果收敛的完整调试流程

COMSOL电磁超声仿真避坑指南&#xff1a;从‘域不适用’报错到结果收敛的完整调试流程 电磁超声仿真作为多物理场耦合的典型应用场景&#xff0c;其复杂性往往让即使有一定COMSOL基础的用户也频频"踩坑"。当你在深夜盯着屏幕上鲜红的"域不适用"报错&#x…...

【C++】类和对象( 类的定义、实例化、 this指针、 C++和C语言实现Stack对比)

小编主页详情<-请点击 小编gitee代码仓库<-请点击 本文主要介绍了类和对象&#xff08; 类的定义、实例化、 this指针、 C和C语言实现Stack对比&#xff09;&#xff0c;内容全由作者原创&#xff08;无AI&#xff09;&#xff0c;并带有配图帮助博友们更好的理解&#x…...

【限时解密】Perplexity写作辅助底层架构图首次公开:基于逆向分析的7大能力边界与替代方案评估

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity写作辅助功能的定位与核心价值 Perplexity并非传统意义上的语法校对工具或模板生成器&#xff0c;而是一个以“问题驱动、证据锚定”为核心范式的智能写作协作者。它将用户输入的写作任务自动解构为…...

3分钟免费汉化Android Studio:社区中文语言包完整安装教程

3分钟免费汉化Android Studio&#xff1a;社区中文语言包完整安装教程 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Andr…...

独立开发者如何借助Taotoken管理多个AI侧项目

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何借助Taotoken管理多个AI侧项目 作为一名独立开发者&#xff0c;同时维护多个使用大模型的小型项目是常态。你可能有…...

搞懂专业代剪辑,才能看懂好视频背后的逻辑

为什么你拍的素材总剪不出‘电影感’&#xff1f; 你是否也经历过这样的困扰&#xff1a;婚礼当天拍了上百G的高清素材&#xff0c;回家却剪不出那支朋友圈点赞破百的高光快剪&#xff1b;或是为新品拍摄了完整开箱视频&#xff0c;上传后播放量寥寥&#xff1f;问题往往不在拍…...

FFmpeg硬件加速全解析:从原理到实战的跨平台优化指南

1. 项目概述&#xff1a;为什么我们需要深入理解FFmpeg硬件加速&#xff1f;在音视频处理的世界里&#xff0c;FFmpeg无疑是那把无所不能的“瑞士军刀”。无论是转码、剪辑、流媒体还是滤镜处理&#xff0c;它几乎无所不能。然而&#xff0c;随着4K、8K乃至更高分辨率内容的普及…...