Apache整合Tomcat(PHP+JSP)+MySQL這個議題很多人寫過
但其實本人過去並未實際Try過==|||(因為實際環境都是Apache與Tomcat各自獨立
各一台主機架構運作)所以並不會考慮到將Apache與Tomcat整合議題,本實驗將使用
單獨主機建構出PHP+JSP運行Web Site 架構, 由於本人此實驗採用套件皆為官網釋出
最新版本(2011/06/18),本人於安裝過程中察覺不少與原舊版套件安裝方式相異將於後續
操作過程中點出介紹,
CentOS 5.6*1 (node1:192.168.0.171)準備套件如下,安裝路徑為/usr/local/
Oracle Release Linux 6*1 (orl6:192.168.0.188)MySQL Databases
Apache INSTALL相關套件:
httpd-2.3.12-beta.tar.bz2
apr-1.4.5.tar.gz
apr-util-1.3.12.tar.gz
pcre-8.12.zip
PHP INSTALL相關套件:
php-5.3.6.tar.gz
libpng-1.5.2.tar.gz
jpegsrc.v8c.tar.gz
freetype-2.4.4.tar.gz
JAVA&Tomcat INSTALL相關套件
jdk-6u26-linux-i586-rpm.bin(jdk)
apache-tomcat-7.0.14.tar.gz
tomcat-connectors-1.2.31-src.tar.gz(mod_jk)
mysql-connector-java-5.1.16-bin.jar (JSP support mysql connection)
#原考慮使用 jakarta-tomcat-connectors(mod_jk),有鑑於該軟件太久沒更新(整合過程問題很多),
改採用官方tomcat-connector(mod_jk)軟件
MySQL INSTALL 相關套件(使用REMI(el6),本人曾使用官網5.5.13 源碼安裝(免安裝)似乎有Bug
mysql-5.5.13-1.el6.remi.i686
mysql-server-5.5.13-1.el6.remi.i686
mysql-libs-5.5.13-1.el6.remi.i686
mysql-devel-5.5.13-1.el6.remi.i686
ARP & APR-util在安裝Apache之前我需預先安裝好以下支援幾個套件,並在隨後安Apache安裝時
並於./configure 時 指定所對應程式目錄,才可順利編譯與安裝完成
#所有程式皆安裝於/usr/local 目錄下
(一.)>tar -zxvf apr-1.4.5.tar.gz #安裝arp
>cd apr-1.4.2
> cd httpd-2.3.12
> ./configure --prefix=/usr/local/apache -enable-so -enable-rewrite\
> --with-mpm=worker
> --with-apr-util=/usr/local/apr-util
> -with-pcre=/usr/local/pcre
# --with-mpm=worker 建議使用worker取代預設prework mode
# -enable-so -enable-rewrite 啟用DSO與,重寫規則與URL重新導向
# 本人在安裝Apache 2.3.12版本時,有要求指定 apr ,apr-util ,pcre 三個相依程式DIR路徑
>make && make install #編譯與安裝Apache
> /usr/local/apache/bin/apachectl start #啟動apache服務
> cp /usr/local/apache/bin/apachectl /sbin/ #為了方便apachjectl 指令執行
#通常剛安裝好編譯版本httpd,我們需修正httpd.conf 檔案中 ServerName localhost:80
(預設此行安裝好是被註解),再重新啟動Apache 即可(反之會跳出FQDN警訊)
> /usr/local/apache/bin/apachectl -t #編修好httpd.conf 檔案後,我們用此指令檢查設定有誤?
[ 編輯httpd.conf]
為整合Tomcat (php+jsp) 服務,我們稍後將改虛擬主機組態,以符合我們整合Tomcat需求
> /usr/local/apache/conf/httpd.conf #Apache 主要組態設定檔
找到
Include conf/extra/httpd-vhosts.conf #將前方註解去掉後儲存組態,我們稍晚將編輯此檔

> netstat -alutn | grep '80' #查看80 Port 是否已listening ,確認完成後我們著手組態PHP

(B). PHP 5.3.6 整合 Apache+MySQL
本人,選用GD,JPEG,Freestyle,libpng 幾個外掛強化PHP Support,如下
請照上面安裝Apache 方式安裝上列指定套件EX: gd install 如下
> tar zxvf gd-2.0.33.tar.gz
> cd gd-2.0.33
> ./configure --prefix=/usr/local/gd
> make && make install #jpeg,freestyle,libpng,zlib 請也依照方式安裝,在此略過不贅言
[ Mysql-Client] 安裝客戶端之用MySQL(PHP存取)套件
在此我們使用官網釋出最新RPM 版本進行安裝
[ 開始安裝PHP] : 當上述一切就緒後!安裝PHP
> --with-apxs2=/usr/local/apache/bin/apxs \
>--enable-mbstring=all - -with-pdo-mysql \
>--with-freetype-dir=/usr/local/freetype
>cp php.ini-development > /usr/local/php/lib/php.ini
修改/usr/local/php/lib/php.ini 之 Time Zone 參數(不修正重啟http偵測煩人警訊)
>vi /usr/local/php/lib/php.ini
將參數設定如下存檔後離開,即可

# --with-apxs2 ,請指定正確apache apxs 對應路徑
# --with-mysql --with-mysql 使用php存取mysql支援
# 以上相關PHP Support外掛,部份可以使用YUM 安裝
#以上安裝完成後,http.conf 設定檔將自動載入一筆libphp5.so 模組(支援PHP)
[著手測試APACHE整合PHP運作]
apache 預設web site 根目錄: /usr/local/apache/htdocs/ 目錄下
> cd /usr/local/apache/htdocs
> vi test.php #加入以下內容儲存離開
<?php
phpinfo ();
>?

Then,我們打開Chrome Broswer 測試PHP運作 http://192.168.0.171/test.php
從下圖中得知我們成功組態了PHP Support MySQL Fuction(MYSQL Client)

[ JDK安裝]
> ./jdk-6u26-linux-i586-rpm.bin
#安裝Jdk元件,jdk安裝目錄為/usr/java/jdk.1.6xxx 目錄下,我們將其更名
為/usr/java/jdk 方便後續組態
JDK元件安裝OK後,我們將組態/etc/profile ,將JAVA相關程式參數路徑加進來
> vi /etc/profile #匯入以下設定,儲存,請指定正確JAVA程式對應路徑
export JAVA_HOME=/usr/java/jdk
export PATH=$PATH:$JAVA_HOME/bin:/usr/local/apache/bin:/usr/local/tomcat/bin
export CLASSPATH=$JAVA_HOME/lib
> source /etc/profile #讓此設定修改生效

[ Tomcat Server 7.0.14 安裝]
> cd /usr/local/
> tar zxvf tomcat-connectors-1.2.31-src.tar.gz
> mv tomcat-connectors-1.2.31-src tomcat
> /usr/local/tomcat/bin/catalina.sh start #啟動tomcat 服務,亦可以catalina.sh start 啟動
啟動Tomcat OK後,應看到以下訊息,若發生組態錯誤,請Track 錯誤訊息
下圖中看到已成功啟動Tomcat,而Tomcat預設網頁使用8080 Port
但8080 Port 並非我們整合Apache與Tomcat目的!!!

我們開啟 Chrome Broswer 檢視Tomcat之啟動 :http://192.168.0.171:8080
#看到下圖,表示Tomcat 安裝已OK

[mysql-connector-java-5.1.16-bin.jar 安裝]
此套件為JSP 網頁連接MySQL 元件,我們需至MySQL 官網上取得
> cd /usr/local
> cp mysql-connector-java-5.1.16-bin.jar /usr/local/tomcat/lib
#我們僅需將此檔案複製到/usr/local/tomcat/lib 底下即可完成安裝,稍後我們將測試
在APACHE 與 TOMCAT 成功整合之情境下測試JSP程式連結MySQL實驗是否OK
[tomcat-connectors-1.2.31-src.tar.gz 安裝]
此元件是本Lab主角,其mod_jk (module) 為 Apache 整合Tomcat 溝通橋樑
> cd /usr/local/
> tar zxvf tomcat-connectors-1.2.31-src.tar.gz
> cd tomcat-connectors-1.2.31-src/native
> ./configure --with-apxs=/usr/local/apache/bin/apxs #指定apxs正確路徑
> make
上述程式完成後,我們檢視apache : /usr/local/apache/modules ,是否已多了mod_jk 此模組
#從下圖中,確定已存在mod_jk.so

THEN: 我們需修改 /usr/local/apache/conf/httpd.conf 載入mod_jk 模組
> vi /usr/local/apache/conf/httpd.conf #修改如下儲存後離開
LoadModule jk_module modules/mod_jk.so #插入此行讓Apache載入mod_jk.so
與確認虛擬主機之設定未被註解掉
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
[修改httpd-vhosts.conf]
#本人是參考鳥哥私房菜中魔人啾啾分享PHP與JSP整合,為最簡化方式整合
# 將.jsp 與.php 上傳目錄有所區分
IF 編寫.php 檔案請上傳 : 請上傳至apache web site 根目錄預設至
/usr/local/apache/htdocs 底下
IF 編寫.jsp檔案請上傳 : 請上傳至Tomcat web site 根目錄預設至
/usr/local/tomcat/webappS/ROOT 底下
> vi /usr/local/apache/conf/extra/httpd-vhosts.conf
填入範例如下, 簡單幾行幾可完整Tomcat與Apache 整合
<VirtualHost *:80>
JkMount /*.jsp ajp13
JkMount /ipdata/*.jsp ajp13
</VirtualHost>

THEN 依序重新啟動 Apache -> Tomcat 服務
> apachtctl restart
> catatlina.sh start
我們試者編寫一個JSP檔,並上傳到Tomcat Web Site 目錄測試,程式如下
<% @ page contentType="text/html;charset=big5" %>
<html>
<head><title>Ex01</title></head>
<body>
<%
out.println("My first JSP programming");
out.println("test");
%>
</body>
</html>

THEN: 我們打開Chrome Broswer 輸入網址: 192.168.0.171/test.jsp #不帶8080 port 檢視
測試JSP程序整合Apache運作成功

我們再檢視先前已編輯好的 test.php 執行來看是否亦運作OK
#Apache 整合PHP與 Tomcat JSP 程式平台之大成功

(D)MySQL 5.5.13 (orcl6:191.168.0.188) 組態
在此Po上一段Oracle Release Linux 6 介紹
Oracle以Red Hat Linux做為起始,移除了Red Hat的商標,然後加入了Linux的
錯誤修正。 Oracle Linux現在是,並旨在保持為,與Red Hat Enterprise Linux
完全兼容。很明顯,該版本是跟隨著紅帽企業Linux 6.0 的步伐發布的,
Oracle Linux 6 主要的改進包括:Ext4文件系統、XFS、ftrace、Linux性能計數器
和 perf、Powertop、Latencytop 等等.
Oracle Unbreakable企業級內核由穩定的2.6.32 主線Linux內核 (mainline Linux kernel)
發展而來,同時Oracle Unbreakable企業級內核將繼續延用主線,用戶將能更快地從
甲骨文的創新和社群提升中受益.
更祥細可參考 http://www.ithome.com.tw/itadm/article.php?c=63548
[Oracle Linux 6 安裝OK後]
啟動畫面-類似Fedora , 非常快速!!!!

預設安裝完作業系統後,並沒存在Reposity,我們需手動編輯
Oracle Linux 6 社區已提供 oracle Linux yum server 配置可參考
http://public-yum.oracle.com/
> cd /etc/yum.repos.d > wget http://public-yum.oracle.com/public-yum-ol6.repo
# 此外本人另裝了EPEL(el6) 與REMI(el6) 版本reposity> yum -y install mysql-server
檢視一下系統資訊與已安裝好的MySQL Server
orcl6 ; 使用內核 2.6.32-100.24.1.el6uek.i686
mysql: mysql-5.5.13-1.el6.remi.i686

#參考 http://ithelp.ithome.com.tw/question/10030858
);
#插入幾筆資料於UserData 表格裡
#檢視資料庫demo資料庫,UserData資料表
> grant all on demo.* to demo@'192.168.0.171' identified by '12345'; #授權.171遠端登入
> use demo;
> select * from UserData; #輸出應該如下為正確

[編輯JSP連結MySQL DB 測試檔案 jdbc2.jsp]
vi /usr/local/tomcat/webapps/ROOT/jdbc2.jsp #程式碼修改如下
[ 最終測試: 打開IE 9 測試 JSP連結資料庫]
http://192.168.0.171/jdbc2.jsp #若看到下圖成功抓取.188(MySQL)資料.亦表示JSP+MySQL為OK

實作時部份參考技術資料
PHP+JSP 建構環境 http://linux.vbird.org/somepaper/20070830-phpandjsp.pdf
JSP+MYSQL程式碼測試參考: http://ithelp.ithome.com.tw/question/10030858
感言: 終於...補完了,阿勒......Near 2011/06/21 11:23