apache整合tomcat实现动静分离

2024-04-14 21:38

本文主要是介绍apache整合tomcat实现动静分离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

apache整合tomcat实现动静分离

关于为什么要将apache和tomcat整合起来,网上的说明也很多,下面我引用一下觉得
整理的比较好的,以内容转载于:
http://blog.csdn.net/stefyue/article/details/6918542
----------------------------转载开始------------------------------------------
Apache和Tomcat的区别:

Apache只是一个Web服务器,可以作为独立的web服务器来运行,不过只支持静态网页,如(asp,php,cgi,jsp)等动态网页的就显得无能为力。

Tomcat也可以作为独立的web服务器来运行。但Tomcat也是应用(java)服务器,它只是一个Servlet容器。

由于Apache解释静态页面要比tomcat快速而且稳定, 基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;

并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面;


Apache+Tomcat整合的好处:

1. Apache主要用来解析静态文本,如html,tomcat虽然也有此功能,但apache能大大提高效率,对于并发数较大的企业级应用,能更好的显示apache的高效率;

2. Tomcat用来解析jsp,servlet等,所有的客户请求首先会发送到Apache,如果请求是静态文本则由apache解析,并把结果返回给客户端,如果是动态的请求,如jsp,apache会把解析工作交给tomcat,由tomcat进行解析(这首先要两者现实整合),tomcat解析完成后,结果仍是通过apache返回给客户端,这样就可以达到分工合作,实现负载均衡,提高系统的性能!而且因为JSP是服务器端解释代码的,这样整合可以减少Tomcat的服务开销。


Apache+Tomcat整合的原理

作为Apache下面的子项目,Tomcat 与 Apache之间有着天然的联系。在实际操作中,主要是Apache作为主服务器运行,当监听到有jsp或者servlet的请求时,将请求转发给tomcat服务器,由tomcat服务器进行解析后,发回apache,再由apache发回用户。

在tomcat中有两个监听的端口,一个是8080用于提供web服务,一个是8009用于监听来自于apache的请求。当apache收到jsp或者servlet请求时,就向tomcat 的8009端口发送请求,交由tomcat处理后,再返回给apache,由apache返回给客户。
----------------------------转载结束------------------------------------------

系统版本:
Ubuntu 14.04.1 LTS

内核版本:
3.13.0-32-generic

一、apache的安装
1.准备以下资材
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
pcre-8.37.tar.gz(注意:不要使用pcre2,之前用了以后,configure httpd时报错了)
httpd-2.4.18.tar.gz

2.安装gcc,g++和make
#apt-get install gcc
#apt-get install make
#apt-get install g++

2.安装apr
#tar xzvf apr-1.5.2.tar.gz
#cd apr-1.5.2
#./configure --prefix=/usr/local/apr-1.5.2
#make
#make install

3.安装apr-util
#tar xzvf apr-util-1.5.4.tar.gz
#cd apr-util-1.5.4
#./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2
#make
#make install

4.安装pcre
#tar xzvf pcre-8.37.tar.gz
#cd pcre-8.37/
#./configure --prefix=/usr/local/pcre-8.37
#make
#make install

5.安装httpd
#tar xzvf httpd-2.4.18.tar.gz
#cd httpd-2.4.18/
#./configure --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4 --with-pcre=/usr/local/pcre-8.37 --prefix=/usr/local/httpd-2.4.18 --enable-so
#make
#make install

6.启动httpd
#/usr/local/httpd-2.4.18/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
提示找不到服务器的域名,进行如下修改:
# vi /usr/local/httpd-2.4.18/conf/httpd.conf
......
#ServerName www.example.com:80
ServerName localhost:80  <= 增加该行
......
重启服务器
# /usr/local/httpd-2.4.18/bin/apachectl restart

浏览器输入以下url,出现it works!,代表安装成功。
http://<http server ip>

二、tomcat安装
1.准备以下资材
jdk-7u79-linux-x64.tar.gz
apache-tomcat-8.0.30.tar.gz

2.安装jdk
#cd /usr/local
#tar xzvf /root/jdk-7u79-linux-x64.tar.gz
#vi /etc/profile
#文件最下方添加如下环境变量:
export JAVA_HOME=/usr/local/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
立即使环境变量生效。
#source /etc/profile
确认安装
#java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

3.安装tomcat
#cd /usr/local
#tar xzvf /root/apache-tomcat-8.0.30.tar.gz
启动tomcat
#/usr/local/apache-tomcat-8.0.30/bin/startup.sh
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.0.30
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.0.30
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.0.30/temp
Using JRE_HOME:        /usr/local/jdk1.7.0_79
Using CLASSPATH:       /usr/local/apache-tomcat-8.0.30/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.30/bin/tomcat-juli.jar
Tomcat started.
通过浏览器输入以下url进入tomcat的管理页面:
http://<tomcat server ip>:8080/

三、整合apache和tomcat(mod_jk方式)
对于apache2.2之前的版本,只有一种整合选择,那就是mod_jk,apache2.2开始,apache
已经将ajp模块标准化,已经集成到apache内部,只要使用修改下配置文件就可以了。

1.准备以下资材
tomcat-connectors-1.2.41-src.tar.gz

2.安装tomcat-connectors
#tar xzvf tomcat-connectors-1.2.41-src.tar.gz
#cd
# ./configure --with-apxs=/usr/local/httpd-2.4.18/bin/apxs
#make
#cp /root/tomcat-connectors-1.2.41-src/native/apache-2.0/mod_jk.so /usr/local/httpd-2.4.18/modules/

3.在httpd中创建mod_jk.conf配置文件
#vi /usr/local/httpd-2.4.18/conf/mod_jk.conf
#define the workers.properties file
JkWorkersFile /usr/local/httpd-2.4.18/conf/workers.properties

#where to put the jk logs
JkLogFile /usr/local/httpd-2.4.18/logs/mod_jk.log

#define jk log level
JkLogLevel info

#set log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

#JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

#pass the servlet and jsp request to tomcat by ajp13 protocol
JkMount /servlet/* worker1
JkMount /*.jsp worker1

4.在httpd中创建workers.properties配置文件
# vi workers.properties
# Defining a worker named worker1 and of type ajp13
worker.list=worker1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300

5.修改tomcat的server.xml文件
#vi /usr/local/apache-tomcat-8.0.30/conf/server.xml
在HOST段中加入如下内容:
<Context path="" docBase="/usr/local/apache-tomcat-8.0.30/webapps/" reloadable="true" crossContext="true"/>
其中docBase为存放网页的目录。

6.修改httpd.conf
修改DocumentRoot和Directory,使它指向存放网页的目录。
#vi /usr/local/httpd-2.4.18/conf/httpd.conf
......
DocumentRoot "/usr/local/apache-tomcat-8.0.30/webapps/"
<Directory "/usr/local/apache-tomcat-8.0.30/webapps/">
......

增加以下内容:
LoadModule jk_module modules/mod_jk.so

Include /usr/local/httpd-2.4.18/conf/mod_jk.conf


8.创建测试页面。
在/usr/local/apache-tomcat-8.0.30/webapps/目录下创建index.jsp和index.html
index.jsp:
<html><body><h1>hello world!</h1></body></html>

index.html:
<html>
<body>
    <center>Now time is: <%=new java.util.Date()%></center>
</body>
</html>

9.重启tomcat和apache
# /usr/local/apache-tomcat-8.0.30/bin/shutdown.sh
# /usr/local/apache-tomcat-8.0.30/bin/startup.sh
# # /usr/local/httpd-2.4.18/bin/apachectl restart

10.测试
在浏览器中输入url会出现对应的结果:
http://<http server ip>/index.html
结果:
hello world!

http://<http server ip>/index.jsp
结果:
Now time is: Fri Jan 01 02:13:13 CST 2016

四、整合apache和tomcat(mod_proxy_ajp方式)
*以下是在步骤三未执行的情况下进行的。

1.修改httpd.conf文件
# vi /usr/local/httpd-2.4.18/conf/httpd.conf
解除以下内容的comment
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule authz_host_modulemodules/mod_authz_host.so

增加以下内容:
Include conf/extra/httpd-proxy.conf


2.在/usr/local/httpd-2.4.18/conf/extra/目录下创建http-proxy.conf文件,
内容为:
<Location /*.jsp>
ProxyPass ajp://localhost:8009/
</Location>
该内容的作用是,将/*.jsp请求转发到本机的8009端口,协议为ajp。
我们通过查看/usr/local/apache-tomcat-8.0.30/conf/server.xml文件,发现
了以下内容:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
说明tomcat监听了8009端口,并且协议为AJP1.3.

3.修改tomcat的server.xml文件
#vi /usr/local/apache-tomcat-8.0.30/conf/server.xml
在HOST段中加入如下内容:
<Context path="" docBase="/usr/local/apache-tomcat-8.0.30/webapps/" reloadable="true" crossContext="true"/>
其中docBase为存放网页的目录。

4.创建测试页面。
在/usr/local/apache-tomcat-8.0.30/webapps/目录下创建index.jsp和index.html
index.jsp:
<html><body><h1>hello world!</h1></body></html>

index.html:
<html>
<body>
    <center>Now time is: <%=new java.util.Date()%></center>
</body>
</html>

5.重启tomcat和apache
# /usr/local/apache-tomcat-8.0.30/bin/shutdown.sh
# /usr/local/apache-tomcat-8.0.30/bin/startup.sh
# # /usr/local/httpd-2.4.18/bin/apachectl restart

6.测试
在浏览器中输入url会出现对应的结果:
http://<http server ip>/index.html
结果:
hello world!

http://<http server ip>/index.jsp
结果:
Now time is: Tue Jan 05 00:51:14 CST 2016

这篇关于apache整合tomcat实现动静分离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904090

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议