Friday, April 27, 2012

Glassfish3入門 (3)-整合mod_jk

一般的網頁伺服器會使用httpd來顯示靜態網頁,而使用tomcat或是glassfish當成是jsp動態網頁或是servlet的容器,但是使用者若要進入java-based的網站還要輸入port number(例如:8080),會造成使用者的困擾,同時網管人員也可能因為安全因素而不開放8080埠,本文將介紹使用mod_jk讓httpd自動轉發servlet或是jsp之頁面要求至glassfish伺服器。(本文是參考Glassfish 3.1.2版之administration-guide)

  • 伺服器(CentOS 5.8 x64)既有服務:apache httpd 2.2、glassfish 3.1.2 (已有一個domain叫app,並且發佈了一個web專案叫School)。
  • 設定流程:
1. 確認httpd-devel套件是否安裝,若沒有請安裝它(編譯mod_jk時會用到它的apx)!
2.下載tomcat_connector原始碼
3.將tomcat_connector原始碼解壓縮後,編譯它。
cd native
./configure --with-apxs=/usr/sbin/apxs
make
4.編譯完成後在apache-2.0資料夾中會有一個mod_jk.so的檔案,把它複製到/usr/lib64/httpd/modules/底下。
5.建立worker.properties 檔案,放在/etc/httpd/conf/底下,檔案內容如下。8009是mod_jk的listening port。
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
6.修改httpd.conf,加入以下幾行:
#mod_jk
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/worker.properties
JkLogFile /etc/httpd/logs/mod_jk.log
JkLogLevel debug
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"
# Send all jsp requests to GlassFish
#JkMount /*.jsp worker1
# Send all webapp requests to GlassFish
JkMount /webapp/* worker1
7. 接下來就是Glassfish的部份了,先確定glassfish已經成功啟動domain,並且該domain至少要有一個已佈署的web application。
8.建立glassfish的http listener並且增加jk-connector的thread pool的數量。
#若不加asadmin則必須先進入GlassFish的管理介面中
#輸入sh asadmin即可進入命令列管理模式 
asadmin create-threadpool --minthreadpoolsize 5 --maxthreadppplsize 150  jk-thread-pool
asadmin create-network-listener --protocol http-listener-1 --listenerport 8009 --jkenabled true --threadpool jk-thread-pool jk-connector
#以下是原始版本(未加入thread pool設定)
#asadmin create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server jk-connector
9. 設定glassfish啟動mod_jk。
#若不加asadmin則必須先進入GlassFish的管理介面中
#輸入sh asadmin即可進入命令列管理模式
asadmin set configs.config.server-config.network-config.network-listeners.network-listener.jk-connector.jk-enabled=true
10. 設定http-thread-pool的最大值為200。
#若不加asadmin則必須先進入GlassFish的管理介面中
#輸入sh asadmin即可進入命令列管理模式
asadmin set configs.config.server-config.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=200
11.重新啟動glassfish及httpd即可!

No comments:

Post a Comment