Ubuntu下apache與tomcat整合

本文主要講在ubuntu下如何整合apache2與tomcat,假設你已經安裝了apache2和tomcat

首先安裝mod_jk,這個模塊負責轉發請求到tomcat

sudo apt-get install libapache2-mod-jk

安裝完後,在/etc/apache2/mods-enabled下會多出一個jk.load文件,重啓apache2後,apache自動

裝載這個文件以加載mod_jk.

編輯jk的配置文件

$ cd /etc/apache2/mods-available

$ sudo vi jk.conf

輸入如下內容

 

# 指出mod_jk模塊工作所需要的工作文件workers.properties的位置

JkWorkersFile /etc/apache2/workers.properties

 

# Where to put jk logs

JkLogFile /var/log/mod_jk.log

 

# Set the jk log level [debug/error/info]

JkLogLevel info

 

# Select the log format

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"

 

# 將所有請求都讓tomcat來處理

#JkMount /*  worker1

 

 

JkWorkersFile 這條指令指明worker配置文件的位置。那什麼是worker呢?tomcat worker就是一個tomcat

實例。

 

JkMount /*  worker1 這句話的意思是把所有的請求都交給tomcat處理,這裏我把它註釋掉了,因爲寫在這裏是全局的。

我們想要依據hostname來配置轉發規則,所以不寫在這裏。

 

接下來我們編輯workers.properties

$ sudo vi /etc/apache2/workers.properties

內容如下:

worker.list=worker1,worker2

 

# Set properties for worker1

worker.worker1.type=ajp13  

worker.worker1.host=localhost  

worker.worker1.port=8009

worker.worker1.lbfactor=50  

worker.worker1.cachesize=10  

worker.worker1.cache_timeout=600  

worker.worker1.socket_keepalive=1  

worker.worker1.socket_timeout=300

 

# Set properties for worker2

worker.worker2.type=ajp13  

worker.worker2.host=192.168.1.10

worker.worker2.port=8009

worker.worker2.lbfactor=50  

worker.worker2.cachesize=10  

worker.worker2.cache_timeout=600  

worker.worker2.socket_keepalive=1  

worker.worker2.socket_timeout=300

 

在這裏我們定義了兩個worker一個是在本地,一個在192.168.1.10上。

worker.worker1.port=8009 8009端口是apahce mod_jk與tomcat交換數據的端口,這個端口要與tomcat

的配置文件中的一致.在tomcat目錄/conf/server.xml裏,應該有如下行:

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

如果你的tomcat這裏配置的是其它端口,你也要修改worker.properties中的相應端口號。

 

假設apache所在的服務器ip綁定了兩個域名,一個爲blog.mysite.com,另一個爲bbs.mysite.com

假設worker1所在的tomcat部署着blog程序,worker2所在的tomcat提供bbs服務。

 

blog.mysite.com的apache的虛擬主機的配置文件內容如下:

 

<VirtualHost *:80>

ServerAdmin webmaster@localhost

ServerName blog.mysite.com

    JkMount /* worker1

</VirtualHost>

 

bbs.mysite.com的apache的虛擬主機的配置文件內容如下:

 

<VirtualHost *:80>

ServerAdmin webmaster@localhost

ServerName bbs.mysite.com

    JkMount /* worker2

</VirtualHost>

 

如果blog.mysite.com和bbs.mysite.com部署在同一個tomcat下,也就是我們只有一個worker,那麼我們

需要在tomcat的配置文件加入虛擬主機的配置。修改tomcat目錄/conf/server.xml,加入下面的配置內容即可。

 

<Host name="bbs.mysite.com"  appBase="/var/www/tomcat-webapps/bbs.mysite.com"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

 

</Host>

<Host name="blog.mysite.com"  appBase="/var/www/tomcat-webapps/blog.mysite.com"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

</Host>


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