close
 實 驗 目 標

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
gd-2.0.33.tar.gz 
zlib-1.2.5.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
           
compat-mysql51-5.1.54-1.el6.remi.i686
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
 (A) Apache 2.13.2 (Node1:191.168.0.171) 組態

 ARP & APR-util在安裝Apache之前我需預先安裝好以下支援幾個套件,並在隨後安Apache安裝時

 並於./configure 時 指定所對應程式目錄,才可順利編譯與安裝完成


#所有程式皆安裝於/usr/local 目錄下


(一.)>tar -zxvf apr-1.4.5.tar.gz                   #安裝arp

      >cd apr-1.4.2
      >./configure  --prefix=/usr/local/arp
      >make && make install

     >tar -zxvf apr-util-1.3.12.tar.gz             #安裝arp-util
     >cd apr-util-1.3.12
    >./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    >make && make install

(二.)>unzip -o pcre-8.12.zip         #安裝pcre
       >cd pcre-8.12
       >./configure --prefix=/usr/local/pcre
       >make
       >make install
 
(三.) > tar jvxf httpd-2.3.12-beta.tar.bz2
          > cd  httpd-2.3.12
         > ./configure --prefix=/usr/local/apache -enable-so -enable-rewrite\
         > --with-mpm=worker 
         > -with-apr=/usr/local/apr \
         > --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      #將前方註解去掉後儲存組態,我們稍晚將編輯此檔

> apachectl restart 

> 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 版本進行安裝

 >rpm -ivh  MySQL-client-5.5.13-1.rhel5.i386.rpm

[ 開始安裝PHP] : 當上述一切就緒後!安裝PHP

>./configure --prefix=/usr/local/php --with-gd=/usr/local/gd2\
> --with-apxs2=/usr/local/apache/bin/apxs \
>--enable-mbregex  --with-mysql -with-zlib-dir
>--enable-mbstring=all - -with-pdo-mysql
>--with-freetype-dir=/usr/local/freetype
>make && make install
>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

將參數設定如下存檔後離開,即可

date.timezone = "Asia/Taipei"
 

# --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)
 
 

 (C) JDK-6u26+Tomcat 7.0.14+Tomcat-Connector (Node1:191.168.0.171) 組態

       [ 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 Linux是由Oracle公司提供支持的企業級Linux發行。 據項目網站稱,

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



 
[準備測試JSP+MySQL連線環境]

#參考 http://ithelp.ithome.com.tw/question/10030858  

>create database demo;        #建立資料庫demo,並建立一表單UserData
>Use demo;  
>create UserData(  
   UserID varchar(30)  NOT NULL,  
   UserPassword varchar(80)  NOT NULL,  
   UserName varchar(50)  NOT NULL,  
   PRIMARY KEY  (UserID)  

);

#插入幾筆資料於UserData 表格裡

insert into UserData(UserID,UserPassword,UserName) values('Johnny','1111','Johnny');  
insert into UserData(UserID,UserPassword,UserName) values('Mary','2222','Mary');  
insert into UserData(UserID,UserPassword,UserName) values('Jenny','3333','Jenny');  
insert into UserData(UserID,UserPassword,UserName) values('Green','4444','Green');  
insert into UserData(UserID,UserPassword,UserName) values('Lily','5555','Lily');  

#檢視資料庫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  #程式碼修改如下

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
    try {
      String url = "jdbc:mysql://192.168.0.188:3306/demo";
      String user = "demo";
      String password = "12345";
      String driver = "com.mysql.jdbc.Driver";
      Class.forName(driver);
      con = DriverManager.getConnection(url, user, password);
      stmt = con.createStatement();
      String sql = "select UserID,UserPassword,UserName from UserData order by UserID";
      rs = stmt.executeQuery(sql);
    } catch (Exception ex) {
      System.out.println(ex);
    }
%>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Show All User</title>
  </head>
  <body>
  <%
    if(rs!=null){
      %>
      <table border="1">
        <thead>
          <tr>
            <th>User ID</th>
            <th>User Password</th>
            <th>User Name</th>
          </tr>
        </thead>
        <%
        while(rs.next()){
          String uid = rs.getString(1);
          String upwd = rs.getString(2);
          String uname = rs.getString(3);
        %>

[ 最終測試: 打開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
arrow
arrow
    全站熱搜

    終極.凱因斯 發表在 痞客邦 留言(0) 人氣()