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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值