Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows、Unix、Linux 等操作系统中运行,是最流行的Web服务器软件之一。Apache 反应速度快,运行效率高,但只支持HTML等静态页面(加载插件后也可支持 PHP 页面)。Apache Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器,它除了支持HTML等静态页面外,还支持JSP、Servlet 。在相同的运行环境下,Tomcat 对静态页面的反应速度没有 Apache 灵敏,整合 Apache 与 Tomcat 能使系统运行于一个良好环境下,提高系统效率。Apache本身缺乏处理JSP/Servlet的功能,为了能够处理对JSP/Servlet的请求,必须使用JSP/Servlet容器(如Tomcat)。
在开始之前,你的服务器已经安装了apache和tomcat,可参考:编译安装配置apache 、安装配置tomcat
1.编译生成mod_jk.so模块
Apache之所以能够和Tomcat通讯就是依靠了tomcat-connectors(连接器),官方下载地址。而这个东西通讯协议就是AJP/1.3 ,这也是为什么我们每次启动Tomcat的时候除了我们常见的http通讯端口8080,但还有一个端口AJP 8009。其实多启动的这个8009端口就是为了与Apache通讯使用的,如果我们用不到Apache服务器那我们完全可以把Tomcat加载启动AJP服务关闭掉,减少内存占用提高效率。编译安装tomcat-connectors完成后会生成mod_jk.so,即Apache与Tomcat的连接模块,此模块附带提供集群和负载均衡的功能。JK分为两个版本1.x和2.x,其中2.x并不是最新的版本,它是JK的另外一个分支,后来没有继续开发,2.x版本已经废弃,通常使用1.x的版本。官方下载地址。
#需要先安装依赖包,否则会报错 yum install glibc-headers gcc-c++ -y wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.43-src.tar.gz tar zxvf tomcat-connectors-1.2.43-src.tar.gz cd tomcat-connectors-1.2.43-src/native/ ./configure --with-apxs=/usr/local/apache2/bin/apxs make cp apache-2.0/mod_jk.so /usr/local/apache2/modules/
2.添加mod_jK配置文件
vim /usr/local/apache2/conf/mod_jk.conf #载入mod_jk.so LoadModule jk_module /usr/local/apache2/modules/mod_jk.so # 指出mod_jk模块工作所需的工作文件workers.properties的路径 JkWorkersFile /usr/local/apache2/conf/workers.properties #指定JK日志文件路径 #JkLogFile /var/log/httpd/mod_jk.log #指定日志记录级别 JkLogLevel info #指定日志格式 JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " #指定请求日志格式 JkRequestLogFormat "%w %V %T" #把匹配的页面转发到指定服务器,worker1在workers.properties中配置 JkMount /servlet/* worker1 JkMount /*.jsp worker1 JkMount /*.do worker1 # 指定apache解析的静态页面路径 JkAutoAlias /usr/local/apache2/htdocs
3.添加mod_jK服务器配置文件
vim /usr/local/apache2/conf/workers.properties #定义名为aworker1的工作程序 worker.list=worker1 #设置worker1的属性 worker.worker1.port= 8009 worker.worker1.host= 127.0.0.1 worker.worker1.type= ajp13 worker.worker1.lbfactor= 1 worker.worker1.cachesize=10 worker.worker1.cache_timeout=600 worker.worker1.socket_keepalive=1 worker.worker1.socket_timeout=300
4.修改apache配置文件
vim /usr/local/apache2/conf/httpd.conf #增加包含mod_jk.conf的语句 Include /usr/local/apache2/conf/mod_jk.conf
5.创建测试文件
#在tomcat默认web路径下创建html vim /usr/local/tomcat/webapps/ROOT/test.html This is tomcat's html page #在tomcat默认web路径下创建jsp vim /usr/local/tomcat/webapps/ROOT/test.jsp <%@page language="java" import="java.util.*"%> this is tomcat's jsp page <%out.println(new Date());%> #在apche默认web路径下创建html vim /usr/local/apache2/htdocs/test.html This is apache's html page #在apache默认web路径下创建jsp vim /usr/local/apache2/htdocs/test.jsp <%@page language="java" import="java.util.*"%> this is apache's jsp page <%out.println(new Date());%>
6.测试
重启tomcat和apache后(如果启动不起来会在相应日志里打印,查询并排除即可),在浏览器地址栏输入http://<server IP>/test.jsp,可以看到使用的是tomcat下的test.jsp文件,没有使用apahce下的。在浏览器地址栏输入http://<server IP>/test.html,可以看到使用的apahce下test.html文件,没有使用tomcat下的。关于项目部署,从测试效果来看,在apahce服务器下只需放html,js,css,img等文件,在tomcat下放整个war包即可。