Apache+Tomcat实现静态分离

以下tomcat版本为8.5.20

我们为什么要引入 Apache 或者其他的一些专门的HTTP 服务器呢?原因有下面几个:

  1. 提升对静态文件的处理性能

  1. 利用 Web 服务器来做负载均衡以及容错

  1. 无缝的升级应用程序

方式一:JK

这是最常见的方式。

JK是通过AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009。JK本身提供了一个监控以及管理的页面 jkstatus,通过jkstatus 可以监控JK目前的工作状态以及对到tomcat的连接进行设置。

第一步:编译生成mod_jk模块 在apache中加载mod_jk并对其进行配置,在tomcat中修改配置以使其能接受mod_jk的转发编译生成mod_jk.so

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz

tar -zxf tomcat-connectors-1.2.48-src.tar.gz

tar xf tomcat-connectors-1.2.48-src.tar.gz -C /usr/local/src/ 
cd /usr/local/src/tomcat-connectors-1.2.48-src/native/

yum install -y httpd-devel             #注意:编译之前先安装  httpd-devel,提供apxs命令

./configure --with-apxs=/usr/bin/apxs 

make 

make install

JK 的配置最关键的有三个文件,分别是

httpd.conf:Apache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息

workers.properties:到 Tomcat 服务器的连接定义文件

uriworkermap.properties:URI 映射文件,用来指定哪些 URL 由 Tomcat 处理,你也可以直接在 httpd.conf 中配置这些 URI,但是独立这些配置的好处是 JK 模块会定期更新该文件的内容,使得 我们修改配置的时候无需重新启动 Apache 服务器。

Workers实际上属于Tomcat的链接器(Connector),代表了一个Tomcat实例,这个实例代表了由某种 web服务器来执行 servelet程序。

举例来说,我们可以使用某个服务器,例如apache 来把servelet请求转递Tomcat进程(worker)来进行后 台处理。

Tomcat workers都定义在一个叫做workers.properties属性文件之中,并且workers的说明告诉应该如 何使用它们。

可以通过属性文件来为Tomcat Web服务器插件定义Worker。(在conf/下有个文件名为 workers.properties就是一个可用Workers属性文件).

worker.list=<由逗号分离开的worker名称列表> worker.list= worker1, worker2

当启动服务器的时候,Web服务器插件会把这些出现在worker.list属性中出现名字的worker实例化,而这些也就是你可以用来映射请求的worker

Workers的类型

对于每个有名字的worker都会有若干条目给使用者提供worker自身的附加信息。这些信息包括worker 的类型和与之相关的worker的信息。

JK 1.2.5中包含下列的worker类型:

 第二步:编写测试网站文件

静态页面
vim /var/www/html/index.html
<h1>static_page_from_apache</h1>

动态页面
vim /usr/local/tomcat/webapps/ROOT/test.jsp
<h1>dynamic_page_from_tomcat</h1>

第三步:配置jk模块,实现Apache整合Tomcat(*_jk.conf)

创建相关配置文件。
[root@node1 ~]# cat /etc/httpd/conf.d/httpd_jk.conf 
LoadModule jk_module modules/mod_jk.so

#JkWorkersFile 路径根据实际情况填写
JkWorkersFile conf.d/workers.properties
# Where to put jk logs
JkLogFile /var/log/httpd/mod_jk.log

# Set the jk log level [debug/error/info] 
JkLogLevel info

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


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

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

#根据实际情况自己定义即可,就是将什么样的请求转发给worker1处理
JkMount /*.jsp worker1
JkMount /servlet/* worker1 
JkMount /*.do worker1 
JkMount /*.action worker1
JkMount /jkstatus status # 状态页

第四步:配置连接tomcat的文件(workers.properties)

[root@node1 ~]# cat /etc/httpd/conf/workers.properties
#路径根据实际情况填写 
workers.tomcat_home=/usr/local/tomcat/ 
workers.java_home=/usr/java/jdk1.8.0_144
worker.list=worker1

# Set properties for worker1 下面的都可以不用修改,感兴趣可以搜索相关含义
worker.worker1.type=ajp13 
worker.worker1.host=localhost #配置tomcat服务器ip地址
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

worker.list = status
worker.status.type=status 

第五步:重启httpd和tomcat服务

systemctl restart httpd tomcat

第六步:测试

 

动态页面不再需要输入端口

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值