歡迎您光臨本站 註冊首頁

Apache和Tomcat整合問題

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

Apache和Tomcat整合問題

我看了些文章,看得有些迷糊。

對於Apache和Tomcat整合,有說用jk的,有說用jk2的,還有說用apache內置proxy_ajp的。

我現在的環境如下:
jdk-6u2-linux-i586.rpm
apache-tomcat-6.0.14.tar.gz
httpd-2.2.6.tar.gz

應該用哪個做整合?

謝謝
《解決方案》

Who can help me ?
Thanks!
《解決方案》

也許這個對你有用:
利用mod_jk1.2集成APACHE+JBOSS
1.     下載所需的安裝包:

httpd-2.0.46.tar.gz : http://httpd.apache.org/download.cgi

jdk-1_5_0_03-linux-i586-rpm.bin:http://java.sun.com/j2se/1.5.0/download.jsp

jakarta-tomcat-connectors-1.2.10-src.tar.gz: http://jakarta.apache.org/site/downloads/downloads_tomcat.html

2.     安裝jdk1.5,由於jboss4.x集成的是tomcat5.5,故需要安裝jdk1.5以上的版本。

l         卸載原系統已經安裝的jdk1.4: rpm -e j2sdk-1.4.2_07-fcs

l         安裝jdk1.5:chmod +x jdk-1_5_0_03-linux-i586-rpm.bin

執行./jdk-1_5_0_03-linux-i586-rpm.bin

Do you agree to the above license terms?

接受許可就可以得到一個rpm包,系統會自動安裝rmp包

l         設置jboss和apache需要的環境變數:

vi /etc/profile在path路徑前添加JAVA的bin目錄:

if [ `id -u` = 0 ]; then

        pathmunge /usr/java/jdk1.5.0_03/bin

        pathmunge /sbin

        pathmunge /usr/sbin

        pathmunge /usr/local/sbin

fi

並在該文件的最後添加:export JAVA_HOME=/usr/java/jdk1.5.0_03

退出系統並重新登錄,使環境變數生效

3.安裝apache:安裝apache無需指定配置參數,默認安裝就可以,但是最好指定一下apache的主目錄:

   tar zxvf httpd-2.0.46.tar.gz

   cd httpd-2.0.46

   ./configure C-prefix=/usr/local/apache

   make

   make install以下用APACHE_HOME=/usr/local/apache

修改APACHE_HOME/conf/httpd.conf中的ServerName為你機器的ip地址。啟動apache:$APACHE_HOME/bin/apachectl start

4.安裝mod_jk1.2.x(這個文件一定要用自己編譯生成的,如果直接從apache的網站上down,啟動apache的時候會報如下錯誤:segement fault:$HTTPD -k $ARGV,無法正常啟動apache)

tar zxvf jakarta-tomcat-connectors-1.2.10-src.tar.gz

cd jakarta-tomcat-connectors-1.2.10-src

cd jk/native

./configure -Cwith-apxs=/usr/local/apache/bin/apxs -Cwith-java-home=${JAVA_HOME} --with-java-platform=2 Cenable-jni

   make

   編譯后將在apache-2.0子目錄下生成mod_jk.so文件。這就是我們需要的連接apache和jboss的modules文件。將該文件拷貝到apache的modules目錄下:

cd apache-2.0

cp mod_jk.so /usr/local/apache/modules/

5.配置apache:

   cd /usr/local/apache/conf

   cp httpd.conf httpd.conf.bak(備份一下apache的配置文件)

   在httpd.conf文件的末尾添加如下內容:

   #Include mod_jk Configuration file

   Include conf/mod-jk.conf

6.編輯mod-jk模塊的配置文件:在APACHE_HOME/conf下創建文件mod-jk.conf並添加如下內容:

#Load mod_jk module

#Specify the filename of the mod_jk lib

LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties

JkWorkersFile conf/workers.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level

JkLogLevel info

# Select the log format

JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat

JkRequestLogFormat "%w %V %T"

# Mount your applications

JkMount /application/* loadbalancer

# You can use external file for mount points.

# It will be checked for updates each 60 seconds.

# The format of the file is: /url=worker

# /examples/*=loadbalancer

JkMountFile conf/uriworkermap.properties

# Add shared memory.

# This directive is present with 1.2.10 and

# later versions of mod_jk, and is needed for

# for load balancing to work properly

JkShmFile logs/jk.shm

# Add jkstatus for managing runtime data

<Location /jkstatus/>

JkMount status

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Location>

mod_jk模塊負責將apache的請求發送到jboss的應用中。配置了mod-jk.conf后,通過apache的配置文件apache就可以將請求轉發到jboss了。下面配置轉發機器的信息:

7.配置workers的屬性:

在APACHE_HOME/conf目錄下添加:workers.properties,並添加如下內容:

#Define list of workers that will be used for

#mapping requests;

worker.list=loadbalancer,status

#Define nodes.如果有多個節點(如jboss集群,可以在下面繼續添加nodex)

worker.node1.port=8009

worker.node1.host=192.168.1.106

worker.node1.type=ajp13

worker.node1.lbfactor=1

worker.node1.cachesize=10

#Define loadbalancer behaviour

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=192.168.1.106

worker.loadbalancer.sticky_session=1

worker.loadbalancer.local_worker_only=1

worker.list=loadbalancer

#worker for mapping loadbalance status

worker.status.type=status



8.創建URI映射文件:

在APACHE_HOME/conf下創建uriworkermap.properties

這個文件包含apache轉發給jboss的URL 映射。格式應該是:

/url=worker_name。worker_name就是上一個文件workers.properties中的

worker.list指明的

作為一個例子在uriworkermap.properties中添加如下內容:

#mount the Servlet context to the ajp13 worker

/jmx-console=loadbalancer

/jmx-console/*=loadbalancer

利用這個文件mod_jk將把轉發請求到tomcat的jmx-console

9.重新啟動APACHE;

10.配置JBOSS中集成的tomcat

根據worker.properties中指定的node名。配置該機器上的jboss配置文件server.xml

cd $JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar

編輯server.xml:

在<Engine…>選項中添加一個屬性jvmRoute:

<Engine name="jboss.web" defaultHost="localhost" jvmRoute=」192.168.1.106」>

……………………………………

</Engine>

jvmRoute屬性必須與workers.properties中指定的節點名匹配。

最後把tomcat的session cookies 也添加jmvRoute值,這樣mod_jk就可以轉發客戶端的請求了:編輯文件



$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/META-INF/jboss-server.xml

找到name為UseJK的<attribute>元素,把該元素的值設為true即:

把<attribute name=」UseJK」>false</attribute>改為

<attribute name=」UseJK」>true</attribute>

11.重新啟動JBOSS伺服器:

cd $JBOSS_HOME/bin

./shutdown.sh CS

./run.sh &

12.通過瀏覽器訪問:http://192.168.1.106/jmx-console/就可以看到jboss的jmx-console了。這說明jboss已經可以通過apache訪問了。



注意:修改各個配置文件的時候最好將配置文件做一個備份

      注意jboss默認的埠是8080開始測試jboss時要放開防火牆的8080埠

      可以利用測試頁訪問jsp文件:

<%@ page import="java.util.*,java.sql.*,java.text.*" contentType="text/html;charset=gb2312" %>

<%

out.println("test page");

%>




利用mod_jk1.2集成APACHE+JBOSS
1.     下載所需的安裝包:

httpd-2.0.46.tar.gz : http://httpd.apache.org/download.cgi

jdk-1_5_0_03-linux-i586-rpm.bin:http://java.sun.com/j2se/1.5.0/download.jsp

jakarta-tomcat-connectors-1.2.10-src.tar.gz: http://jakarta.apache.org/site/downloads/downloads_tomcat.html

2.     安裝jdk1.5,由於jboss4.x集成的是tomcat5.5,故需要安裝jdk1.5以上的版本。

l         卸載原系統已經安裝的jdk1.4: rpm -e j2sdk-1.4.2_07-fcs

l         安裝jdk1.5:chmod +x jdk-1_5_0_03-linux-i586-rpm.bin

執行./jdk-1_5_0_03-linux-i586-rpm.bin

Do you agree to the above license terms?

接受許可就可以得到一個rpm包,系統會自動安裝rmp包

l         設置jboss和apache需要的環境變數:

vi /etc/profile在path路徑前添加JAVA的bin目錄:

if [ `id -u` = 0 ]; then

        pathmunge /usr/java/jdk1.5.0_03/bin

        pathmunge /sbin

        pathmunge /usr/sbin

        pathmunge /usr/local/sbin

fi

並在該文件的最後添加:export JAVA_HOME=/usr/java/jdk1.5.0_03

退出系統並重新登錄,使環境變數生效

3.安裝apache:安裝apache無需指定配置參數,默認安裝就可以,但是最好指定一下apache的主目錄:

   tar zxvf httpd-2.0.46.tar.gz

   cd httpd-2.0.46

   ./configure C-prefix=/usr/local/apache

   make

   make install以下用APACHE_HOME=/usr/local/apache

修改APACHE_HOME/conf/httpd.conf中的ServerName為你機器的ip地址。啟動apache:$APACHE_HOME/bin/apachectl start

4.安裝mod_jk1.2.x(這個文件一定要用自己編譯生成的,如果直接從apache的網站上down,啟動apache的時候會報如下錯誤:segement fault:$HTTPD -k $ARGV,無法正常啟動apache)

tar zxvf jakarta-tomcat-connectors-1.2.10-src.tar.gz

cd jakarta-tomcat-connectors-1.2.10-src

cd jk/native

./configure -Cwith-apxs=/usr/local/apache/bin/apxs -Cwith-java-home=${JAVA_HOME} --with-java-platform=2 Cenable-jni

   make

   編譯后將在apache-2.0子目錄下生成mod_jk.so文件。這就是我們需要的連接apache和jboss的modules文件。將該文件拷貝到apache的modules目錄下:

cd apache-2.0

cp mod_jk.so /usr/local/apache/modules/

5.配置apache:

   cd /usr/local/apache/conf

   cp httpd.conf httpd.conf.bak(備份一下apache的配置文件)

   在httpd.conf文件的末尾添加如下內容:

   #Include mod_jk Configuration file

   Include conf/mod-jk.conf

6.編輯mod-jk模塊的配置文件:在APACHE_HOME/conf下創建文件mod-jk.conf並添加如下內容:

#Load mod_jk module

#Specify the filename of the mod_jk lib

LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties

JkWorkersFile conf/workers.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level

JkLogLevel info

# Select the log format

JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat

JkRequestLogFormat "%w %V %T"

# Mount your applications

JkMount /application/* loadbalancer

# You can use external file for mount points.

# It will be checked for updates each 60 seconds.

# The format of the file is: /url=worker

# /examples/*=loadbalancer

JkMountFile conf/uriworkermap.properties

# Add shared memory.

# This directive is present with 1.2.10 and

# later versions of mod_jk, and is needed for

# for load balancing to work properly

JkShmFile logs/jk.shm

# Add jkstatus for managing runtime data

<Location /jkstatus/>

JkMount status

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Location>

mod_jk模塊負責將apache的請求發送到jboss的應用中。配置了mod-jk.conf后,通過apache的配置文件apache就可以將請求轉發到jboss了。下面配置轉發機器的信息:

7.配置workers的屬性:

在APACHE_HOME/conf目錄下添加:workers.properties,並添加如下內容:

#Define list of workers that will be used for

#mapping requests;

worker.list=loadbalancer,status

#Define nodes.如果有多個節點(如jboss集群,可以在下面繼續添加nodex)

worker.node1.port=8009

worker.node1.host=192.168.1.106

worker.node1.type=ajp13

worker.node1.lbfactor=1

worker.node1.cachesize=10

#Define loadbalancer behaviour

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=192.168.1.106

worker.loadbalancer.sticky_session=1

worker.loadbalancer.local_worker_only=1

worker.list=loadbalancer

#worker for mapping loadbalance status

worker.status.type=status



8.創建URI映射文件:

在APACHE_HOME/conf下創建uriworkermap.properties

這個文件包含apache轉發給jboss的URL 映射。格式應該是:

/url=worker_name。worker_name就是上一個文件workers.properties中的

worker.list指明的

作為一個例子在uriworkermap.properties中添加如下內容:

#mount the Servlet context to the ajp13 worker

/jmx-console=loadbalancer

/jmx-console/*=loadbalancer

利用這個文件mod_jk將把轉發請求到tomcat的jmx-console

9.重新啟動APACHE;

10.配置JBOSS中集成的tomcat

根據worker.properties中指定的node名。配置該機器上的jboss配置文件server.xml

cd $JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar

編輯server.xml:

在<Engine…>選項中添加一個屬性jvmRoute:

<Engine name="jboss.web" defaultHost="localhost" jvmRoute=」192.168.1.106」>

……………………………………

</Engine>

jvmRoute屬性必須與workers.properties中指定的節點名匹配。

最後把tomcat的session cookies 也添加jmvRoute值,這樣mod_jk就可以轉發客戶端的請求了:編輯文件



$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/META-INF/jboss-server.xml

找到name為UseJK的<attribute>元素,把該元素的值設為true即:

把<attribute name=」UseJK」>false</attribute>改為

<attribute name=」UseJK」>true</attribute>

11.重新啟動JBOSS伺服器:

cd $JBOSS_HOME/bin

./shutdown.sh CS

./run.sh &

12.通過瀏覽器訪問:http://192.168.1.106/jmx-console/就可以看到jboss的jmx-console了。這說明jboss已經可以通過apache訪問了。



注意:修改各個配置文件的時候最好將配置文件做一個備份

      注意jboss默認的埠是8080開始測試jboss時要放開防火牆的8080埠

      可以利用測試頁訪問jsp文件:

<%@ page import="java.util.*,java.sql.*,java.text.*" contentType="text/html;charset=gb2312" %>

<%

out.println("test page");

%>
《解決方案》

又是一手好資料啊,謝謝樓上的。

可是我的問題還是不知道答案啊!:(
《解決方案》

樓主為什麼不都先試一下呢。
看看哪個合適你。
《解決方案》

謝謝樓上的回答!

自己動手試試是肯定的。這三種方法都能完成Apache和Tomcat的整合,但是我是第一次碰這東西,誰好誰差我很難判斷出來啊,還有,要看出它們之間的好壞肯定要一段時間吧,可做項目的時間是死的,總不見得跟項目經理說給我幾個月試試這三種整合方法吧。

呵呵!
《解決方案》

是的,都可以達到目的。
那目前你考慮的到底是什麼的呢?既然都能達到目的,那就選一個不就可以了嗎?
Apache 和 Tomcat 的整合會對你的項目產生任何實質的影響嗎?
《解決方案》

選一個最合適應該比選一個一般般的運行效率高吧,就是整合效果應該更好嘍!
《解決方案》

罈子里有人告訴我,JK發展的比較成熟,JK2前景不容樂觀,Proxy_Ajp新出來。所以我還是選JK吧,呵呵。
《解決方案》

apache與tomcat目前有3種整合方法:

http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html

關於APACHE與TOMCAT整合的相關資料:

http://www.google.cn/search?complete=1&hl=zh-CN&newwindow=1&q=apache%2Btomcat%E6%95%B4%E5%90%88&btnG=Google+%E6%90%9C%E7%B4%A2&meta=

[火星人 ] Apache和Tomcat整合問題已經有567次圍觀

http://coctec.com/docs/service/show-post-33751.html