整合apache和tomcat構建Web服務器

一、  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

[root@localhost ~]# tar zxf httpd-2.2.27.tar.gz 

[root@localhost ~]# cd httpd-2.2.27

[root@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

[root@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/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 

下載jdk-7u71-linux-x64.rpm:http://pan.baidu.com/s/1mgLuhr6

此處使用:RPM包安裝@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2

[root@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...

[root@localhost ~]# 

[root@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

[root@localhost ~]# source /etc/profile

[root@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/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.tar.gz

[root@localhost ~]# tar zxf apache-tomcat-7.0.56.tar.gz 

[root@localhost ~]# mv apache-tomcat-7.0.56 /usr/local/

[root@localhost ~]# vim /etc/profile

export TOMCAT_HOME=/usr/local/apache-tomcat-7.0.56/

[root@localhost ~]# source /etc/profile

[root@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/jakarta/tomcat-connectors/jk/source/,但是不保證此連接永久有效,這裏採用的JK版本爲jakarta-tomcat-connectors-1.2.14.1 (下載地址爲http://pan.baidu.com/s/1jGDqG6M)

[root@localhost ~]# wget http://archive.apache.org/dist/jakarta/tomcat-connectors/jk/source/jakarta-tomcat-connectors-current-src.tar.gz

[root@localhost ~]# tar zxf jakarta-tomcat-connectors-current-src.tar.gz

[root@localhost ~]# cd jakarta-tomcat-connectors-1.2.14.1-src/jk/native/

[root@localhost native]# chmod +x buildconf.sh

[root@localhost native]# ./buildconf.sh

rm autom4te.cache

libtoolize --force --automake --copy

aclocal

autoheader

automake -a --foreign --copy

autoconf

rm autom4te.cache

[root@localhost native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs   #apache安裝目錄中apxs的位置

[root@localhost native]# make && make install

[root@localhost native]# cd apache-2.0/

[root@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

[root@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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章