這裡採用的httpserver版本是2.2.22,jdk與tomcat的安裝參見:
http://blog.csdn.net/supercrsky/article/details/8283200
1.下載
httpserver:
http://archive.apache.org/dist/httpd/httpd-2.2.22.tar.gz
Tomcat:
http://archive.apache.org/dist/tomcat/tomcat-7/
mod_jk:
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.23/
2.安裝httpd
我的tar包在/home/zdw/software目錄下,切換到此目錄
#cd /home/zdw/software
解壓
#tar -zxvf httpd-2.2.22.tar.gz
進入解壓後的目錄
#cd httpd-2.2.22
執行
#./configure --prefix=/usr/local/apache2.2 --enable-so --enable-mods-shared
=most --with-mpm=worker
# --prefix=<Install_Path>指明編譯後的二進位檔案安裝到<Install_Path>目錄,用實際安裝路徑替換<Install_Path>,如--prefix=/usr/local/apache-2.2.15,如果省略此配置參數,預設安裝到/usr/local/apache2目錄。
# --enable-so 指明編譯動態載入模組(DSO)支援到httpd二進位檔案,此模組使得Apache的各功能模組可以與核心分開編譯、運行時動態載入。有了DSO支援,升級和增加模組時只需編譯相關的模組即可,不必重新編譯整個系統。最新版本的Apache預設編譯此模組到httpd二進位檔案,如果你在使用早期版本的apache並且需要DSO支援,可能要明確指出此選項。
# --enable-mods-shared=<MODULE-LIST>明確指明要以DSO方式編譯的模組,<MODULE-LIST>為空白格分隔的模組名列表、all或者most,all表示包含所有模組,most表示包含大部分模組,如--enable-mods-share="rewrite
deflate",--enable-mods-share=most,效果等同於多個--enable-<FEATURE>=share
# --with-mpm=<MPM>先擇Apache多路處理模組,<MPM>={beos|event|worker|prefork|mpmt_os2},prefork為Unix系統下預設處理模組,它將運行一個非線程型的、預派生的Web伺服器,適合於沒有安全執行緒庫,需要避免線程相容性問題的系統,它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。worker為支援混合的多線程多進程的多路處理模組,由於使用線程來處理請求,所以可以處理海量請求,而系統資源的開銷小於基於進程的MPM,同時,它也使用了多進程,每個進程又有多個線程,以獲得基於進程的MPM的穩定性。如果你的系統是基於安全執行緒的,那麼筆者建議使用worker替代prefork,它將使得你的系統得到實際的效能改善。
這時會出現很多checking
完成後進行編譯
#make
安裝
# make install
切換到我們指定的安裝目錄:
#cd /usr/local/apache2.2
查看目錄內容:
#ls
切換到bin目錄下,啟動apache進行測試,
#./apachectl start
報:
解決辦法:
修改conf/httpd.conf檔案,把其中到#ServerName的注釋去掉即可。
但在Ubuntu中的httpd.conf檔案中沒有找到#ServerName,用vi手動把
ServerName 127.0.0.1:80加入httpd.conf儲存。
重新切換到/usr/local/apache2.2/bin下運行
#./apachectl start
打Firefox輸入,http://localhost/,頁面顯示:It Works。
停止
#./apachectl stop
至此apache-httpserver安裝成功。
3.整合Apache與Tomcat
# vi conf/httpd.conf
找到
DocumentRoot "/usr/local/httpd2.2/htdocs"
這個叫作DocumentRoot即webroot,即:發布目錄,發布在這個目錄下的任何工程都會在Apache服務開啟時被裝載成標準的web工程,我們現在動手來把這個WebRoot定位到我們自己的發布目錄中去吧。
DocumentRoot "/usr/local/www"
建立目錄:
#mkdir www
將下載的mod_jk-1.2.23-apache-2.2.x-linux-i686.so複製到modules下
#cp mod_jk-1.2.23-apache-2.2.x-linux-i686.so /usr/local/httpd2.2/modules/
建立workers.properties
#touch workers.properties
#vi workers.properties
加入如下內容:
workers.tomcat_home=/opt/tomcat/workers.java_home=/usr/jdk1.7.0_09/ps=/worker.list=ajp13worker.ajp13.port=8009worker.ajp13.host=localhostworker.ajp13.type=ajp13
關鍵的是這兩句:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JKWorkersFile conf/workers.properties
代表:
ü Apache載入一個額外的外掛程式,用於串連tomcat。
ü 串連時的配置參數描述位於Apache安裝目錄的/conf目錄下的一個叫workers.properties檔案中,mod_jk一般使用ajp13協議串連,使用的是tomcat的8009連接埠
編輯httpd.conf檔案
#vi /conf/httpd.conf
到檔案最後面加入以下幾行:
LoadModule jk_module modules/mod_jk-1.2.23-apache-2.2.x-linux-i686.soJKWorkersFile conf/workers.propertiesJkLogFile logs/mod_jk.log<VirtualHost *>ServerAdmin localhostDocumentRoot usr/local/wwwServerName localhostDirectoryIndex index.html index.htm index.jsp index.actionErrorLog logs/shsc-error_log.txtCustomLog logs/shsc-access_log.txt commonJkMount /*WEB-INF ajp13JkMount /*j_spring_security_check ajp13JkMount /*.action ajp13JkMount /servlet/* ajp13JkMount /*.jsp ajp13JkMount /*.do ajp13</VirtualHost>
將我們要測試的項目分別複製到/opt/tomcat/webapps和/usr/local/www目錄下。
重啟tomcat,重啟apahce。
開啟Fifefox訪問我們的工程:http://localhost/composite
報:
而我們用http://localhost:8080/composite訪問是正常的。
編輯conf/httpd.conf找到:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all</Directory>
將Deny改成Allow,如下:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Allowfrom all</Directory>
儲存後,重啟apache後再進行訪問:
好了,Apache與Tomcat整合成功。
以上執行個體在Ubuntu11.04中測試成功。