设为首页 收藏本站
查看: 1522|回复: 1

[经验分享] 整合apache和tomcat构建Web服务器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-20 11:29:39 | 显示全部楼层 |阅读模式
一、  apache与tomcat整合的必要性
    Apache是最流行的Web服务器,开放源代码,支持跨平台的应用(可以运行在几乎所有的Linux、Unix、Windows系统平台上),尤其对Linux的支持相当完美。
apache的优点有:
1、功能强大,apache自带了很多功能模块,可根据需求编译自己需要的模块。
2、配置简单,apache的配置文件非常简单,通过简单的配置可实现强大功能。
3、速度飞快,apache处理静态页面文件效率非常高,可以应对大并发和高负荷访问请求。
4、性能稳定,apache在高负荷请求下性能表现卓越,执行效率非常高。
但是apache也有自身的缺点:
1、只支持静态网页,对于jsp、php等动态网页不支持
2、Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,因此,不太适合于多处理器环境。
Tomcat是Sun和Apache合作做出来的JSPServer,有如下优点:
1、支持Servlet和JSP,可以很好的处理动态网页。
2、跨平台性好:Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑操作系统平台。
但是,tomcat也有自身缺点:
1、处理静态页面效率不高:Tomcat本身可以做为Web Server,但是tomcat在处理静态页面时没有Apache迅速。
2、可配置性不强:tomcat不像Apache一样配置简单,稳定、强壮。
综上所述,通过相互的整合刚好弥补了各自的缺点,通过整合可以实现:
1、客户端请求静态页面时,由Apache服务器响应请求。
2、客户端请求动态页面时,则是Tomcat服务器响应请求。
3、通过apache信息过滤,实现网站动、静页面分离,保证了应用的可扩展性和安全性。
既然要让Apache和Tomcat协调工作,就必需有一个连接器把它们联系起来,这就是下面要提到的Connector,下个小节具体讲述Connector的选择和使用。

二、 Apache和Tomcat连接器
    Apache是模块化的web服务器,这意味着核心中只包含实现最基本功能的模块。扩展功能可以作为模块动态加载来实现。为了让apache和tomcat协调工作,开源爱好者们开发出了很多可以利用的模块,在Apache2.2版本之前,一般有两个模块可供选择:mod_jk2和mod_jk,mod_jk2模块是比较早的一种连接器,在动、静页面过滤上可以使用正则表达式,因此使用配置灵活,但是mod_jk2模块现在已经没有开发人员支持了,版本更新也就此停止。继承jk2模块的是mod_jk模块,mod_jk模块支持Apache 1.x和2.X系列版本,现在一般都使用mod_jk做Apache和Tomcat的连接器。
在Apache2.2版本以后,又出现了两种连接器可供选择,那就是http-proxy和proxy-ajp模块,apache的proxy(代理)模块可以实现双向代理,功能非常强大,从连接器的实现原理看,用http-proxy模块实现也是很自然的事情,只需打开tomcat的http功能,然后用apache的proxy代理功能将动态请求交给tomcat处理,而静态数据交给apache自身就可以了。proxy-ajp模块是专门为tomcat整合所开发的,通过ajp协议专门代理对tomcat的请求。根据官方的测试,proxy-ajp的执行效率要比http-proxy高,因此在Apache2.2以后的版本,用proxy-ajp模块作为apache和tomcat的连接器是个不错的选择。
需要说明的是,这些连接功能的实现,都是通过在apache中加载相应的功能模块实现,比如上面提到的mod_jk、mod_jk2、proxy-ajp模块,都要事先通过源码编译出对应的模块,然后通过apache配置文件动态加载,实现连接器功能。这点也是apache的优势所在。

三、 Apache与tomcat以及JK模块的安装
CentOS release 5.8 (Final)
1、安装apache
软件下载:http://www.apache.org/dist/httpd/    http://pan.baidu.com/s/1i3DsKrb
[iyunv@localhost ~]# tar zxf httpd-2.2.27.tar.gz
[iyunv@localhost ~]# cd httpd-2.2.27
[iyunv@localhost httpd-2.2.27]# ./configure --prefix=/usr/local/apache2 \
> --enable-modules=all \
> --enable-mods-shared=all \
> --enable-proxy \
> --enable-proxy-connect \
> --enable-proxy-ftp \
> --enable-proxy-http \
> --enable-proxy-scgi \
> --enable-proxy-ajp \
> --enable-proxy-balancer \
> --enable-static-support \
> --with-included-apr \
> --enable-cache \
> --enable-file-cache \
> --with-mpm=prefork \
> --enable-ssl=shared \
> --enable-deflate=shared \
> --enable-expires=shared \
> --enable-headers=shared \
> --enable-rewrite=shared \
> --enable-so
[iyunv@localhost httpd-2.2.27]# make && make install
apache的安装路径为/usr/local/apache2,“--enable-modules=most”表示将大部分模块静态编译到httpd二进制文件中,“--enable-mods-shared=all”表示动态加载所有模块,如果去掉-shared话,是静态加载所有模块。

2、安装JDK
在tomcat运行环境下,JDK是必不可少的软件,因为tomcat只是一个Servlet/JSP容器,底层的操作都需要JDK来完成。
JDK的安装也非常简单,只需到http://java.sun.com/     http://www.oracle.com/technetwor ... nloads-1880260.html
下载jdk-7u71-linux-x64.rpm:http://pan.baidu.com/s/1mgLuhr6
此处使用:RPM包安装@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
[iyunv@localhost ~]# rpm -ivh jdk-7u71-linux-x64.rpm
Preparing...                ########################################### [100%]
   1:jdk                    ########################################### [100%]
Unpacking JAR files...
        rt.jar...
        jsse.jar...
        charsets.jar...
        tools.jar...
        localedata.jar...
        jfxrt.jar...
[iyunv@localhost ~]#
[iyunv@localhost ~]# vim /etc/profile
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${JAVA_HOME}/bin"
JAVA_HOME=/usr/java/jdk1.7.0_71
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
[iyunv@localhost ~]# source /etc/profile
[iyunv@localhost ~]# java -version           查看是否安装成功
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
从上面输出可以看出,JDK在我们的linux下运行正常。并且版本为build 1.7.0_71-b14。

3、安装tomcat
方法@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
下载apache-tomcat-7.0.56.tar.gz:http://pan.baidu.com/s/1gdDwQbT
http://tomcat.apache.org/download-70.cgi
Tomcat的官方地址http://jakarta.apache.org/
这里以二进制方式安装,我们只需下载对应的二进制版本即可,这里使用的版本是apache-tomcat-7.0.56.tar.gz,下载后的压缩包文件为apache-tomcat-7.0.56.tar.gz,把此安装包放到/usr/local目录下,通过解压即可完成tomcat的安装。
wget http://mirror.bit.edu.cn/apache/ ... omcat-7.0.56.tar.gz
[iyunv@localhost ~]# tar zxf apache-tomcat-7.0.56.tar.gz
[iyunv@localhost ~]# mv apache-tomcat-7.0.56 /usr/local/
[iyunv@localhost ~]# vim /etc/profile
export TOMCAT_HOME=/usr/local/apache-tomcat-7.0.56/
[iyunv@localhost ~]# source /etc/profile
[iyunv@localhost ~]# /usr/local/apache-tomcat-7.0.56/bin/startup.sh
验证ip地址:8080出现界面即可
http://192.168.7.109:8080/   --浏览器中打开测试

4、安装JK模块
为了更灵活的使用mod_jk连接器,这里我们采用源码方式编译出所需要的JK模块,JK的源码可以从这个地址去下载,http://archive.apache.org/dist/j ... nnectors/jk/source/,但是不保证此连接永久有效,这里采用的JK版本为jakarta-tomcat-connectors-1.2.14.1 (下载地址为http://pan.baidu.com/s/1jGDqG6M
[iyunv@localhost ~]# wget http://archive.apache.org/dist/j ... -current-src.tar.gz
[iyunv@localhost ~]# tar zxf jakarta-tomcat-connectors-current-src.tar.gz
[iyunv@localhost ~]# cd jakarta-tomcat-connectors-1.2.14.1-src/jk/native/
[iyunv@localhost native]# chmod +x buildconf.sh
[iyunv@localhost native]# ./buildconf.sh
rm autom4te.cache
libtoolize --force --automake --copy
aclocal
autoheader
automake -a --foreign --copy
autoconf
rm autom4te.cache
[iyunv@localhost native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs   #apache安装目录中apxs的位置
[iyunv@localhost native]# make && make install
[iyunv@localhost native]# cd apache-2.0/
[iyunv@localhost apache-2.0]# ls
bldjk.qclsrc  Makefile       Makefile.apxs.in  Makefile.vc  mod_jk.c    mod_jk.la  mod_jk.o   NWGNUmakefile
config.m4     Makefile.apxs  Makefile.in       mod_jk.a     mod_jk.dsp  mod_jk.lo  mod_jk.so
[iyunv@localhost apache-2.0]# ls -l /usr/local/apache2/modules/mod_jk.so
-rwxr-xr-x 1 root root 571980 Oct 20 00:56 /usr/local/apache2/modules/mod_jk.so
可以看到有mod_jk.so文件生成,这就是我们需要的JK连接器,默认情况下JK模块会自动安装到/usr/local/apache2/modules目录下,如果没有自动安装到此目录,手动拷贝此文件到modules目录即可。

四、 apache与tomcat整合配置
vim /usr/local/apache2/conf/httpd.conf
添加以下内容:
<IfModule prefork.c>
StartServers       10
MinSpareServers    10
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>
<IfModule worker.c>
StartServers        100
MaxClients         1000
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     256
MaxRequestsPerChild  8000
</IfModule>
<Location /project_name>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from all
</Location>
<Proxy balancer://cluster>
    BalancerMember ajp://127.0.0.1:8009 loadfactor=1
    BalancerMember ajp://127.0.0.1:8019 loadfactor=1
    BalancerMember ajp://127.0.0.1:8029 loadfactor=1
    #ProxySet lbmethod=bytraffic
</Proxy>
ProxyPass /GMServer/ balancer://cluster/GMServer/

修改监听端口:Listen 8000


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-26265-1-1.html 上篇帖子: Apache2+Passenger在Ubuntu上部署 下篇帖子: apache模块安装之defalte 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表