一般的網頁伺服器會使用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