摘要:本文對hpache和Tomcat服務器軟件進行整合,并實現Tomcat多實例獨立JVM的虛擬主機。
關鍵詞:虛擬主機tomcat多實例;tomcat單獨JYM
用虛擬主機方式為公司及單位提供網站空間是一般單位的常見做法,這樣既能節省服務器設備的投資又減少了管理工作量。Linux環境下,通常使用Apache實現靜態HTML和動態PHP網站的虛擬主機,使用Tomcat實現JSP網站的虛擬主機。對于Apache虛擬主機,配合MySQL數據庫的WEB管理工具PhpMyAdmin已經有了很成熟的實現,而對于Tomcat虛擬主機來說,當多個網站共享同一個Tomeat服務器實例時,若其中某個網站對Tomeat有一些特殊的需求,就需要服務器管理員對Tomcat進行配置,更多的時候,服務器管理員要經常重啟Tomeat,程序不好的網站也可能導致Tomcat無法啟動,從而影響其他網站也無法訪問。另外一個問題是,同一臺服務器上,單獨的Apache和Tomcat服務程序端口不能沖突,要同時使用PHP和JSP,就需要使用不同的端口。
1、解決方案
為解決上述問題,本文對Apache與Tomcat進行整合,并實現T0mcat多實例獨立5VM(Java Virtual Machine)的虛擬主機(每個虛擬主機用戶擁有獨立可管理的Tomcat服務器),用Apache解釋HTML~PHP等文件,Tomcat執行JSPP程序。Apache接受來自客戶端的請求,并根據請求信息進行判斷,若被請求的網站是JSP的,則由Apache的模塊moQ_jk將Servlet或JSP請求轉發給Tomcat,mod_jk利用AJP worker通過AJP(ApacheJserv Protoc01)協議與Tomeat進程通信,Tomcat檢查來自AJP workers的請求,確定與請求相對應的虛擬主機,執行程序,并將執行結果通過AJP connector返回給mod_jk,最終由Apache將執行結果返回給客戶端。
2、方案實現
2.1 基本系統安裝準備
對所需軟件進行準備和基本配置。
2.1.1 安裝LAMP服務器軟件
本文使用CentOS 5.5操作系統,Apache、Mysql、PHP采用源碼方式安裝(安裝位置:/usr/local),軟件版本分別是:Apache 2.2.11,Mysql 5.1.47,PHP 5。2.9。
2.1.2 安裝tomcat服務器軟件
安裝JDK(本文版本:1.6.0_17)安裝Tomcat(本文版本:apache-tomcat-6.0.20),默認情況TTomcat服務的端口為8080:在/etc/profile文件中配置JDK Tomcat的環境變量。
2.1.3 下載Apache連接Tomcat的模塊mod-jk注意要根據服務器的平臺和Apache的版本下載相應的mod_jk.so文件,本文下載使用mod_jk-1.2。28-httpd-2.2.X.so文件。
2.2 Apache虛擬主機配置
2.2.1 配置DNS服務器,添加虛擬主機的域名
這里配置2個虛擬主機,域名分別是sitel.1zptc.edu.cn和site2.izptc.edu.cn,均指向這臺服務器。
2.2.2 添加虛擬主機用戶
添加虛擬主機用戶,為用戶設定家目錄,如:useraddsitel-d/var/www/html/sitel passwd sitel以虛擬主機用戶登陸服務器,在其家目錄下建立conf、logs、temp、webapps/ROOT和work目錄。
2.2.2 修改Apache配置文件httpd.conf,添加虛擬主機參見apache httpd虛擬主機配置文檔。依次加入二虛擬主機site.lzptc.edu.cn(用“site2”替換上邊配置中的“sitel”),更多的虛擬主機同理。
2.3 Apache與Tomcat整合,Tomcat多實例配置
2.3.1 安裝配置mod.jk
2.3.2 在Apache的conf目錄下建立mod_jk連接Tomcat的配置文件workers.properties:
定義轉發請求到不同Tomcat的worker列表,此處定義2個分別對應虛擬主機sitel和site2。
2.3.3 復制Tomcat的配置文件server.xml文件到每個虛擬主機用戶的conf目錄下,對每個用戶的server.xml進行端口設定,注意,每個虛擬主機的Tomcat端口是獨立的,虛擬主機sitel.lzptc.edu.cn的配置文件如下,其中AJP/1.3協議的端口號為8301,這與workers.properties中sitel-worker的端口號一致。同理可設定其他虛擬主機的serven.xml文件。
2.3.4 獨立Tomcat的啟動停止
1)虛擬主機用戶自行肩動
每個虛擬主機用戶啟動獨立的Tomcat,需要給它們設置獨立Tomeat的CATALINA_BASE路徑,這里將CATALINA_BASE的值設置為用戶的家目錄。為方便用戶啟動停止各自的Tomcat服務器,編寫腳本tomeat.sh將該腳本文件保存在虛擬主機用戶的家目錄下,添加執行權限,用戶運行tomcat.sh startl stop命令即可啟動/定制自己的T0mcat服務器。
2)服務器管理員統一啟動
當服務器重啟后,需要服務器的管理員統一對各獨立的Tomcat實例進行啟動,編寫腳本如下,可以將該腳本設置為開機啟動。
3、總結
通過對Apache和Tomcat的整合,使客戶端能夠通過同一端口訪問WEB服務器的PHP和JSP程序,并實現Tomeat多實例獨立JVM的虛擬主機,方便虛擬主機用戶對各自虛擬主機的控制,克服了單個Tomcat運行JSP程序時虛擬主機之間會產生影響的缺點。