**利用兩台電腦架設Oracle8i與PHP APACHE構成3tier Client Server的服務群組

**(Installation Php Apache Oracle at Two Computer to do Client and Server Service) 2002 11/6 Evan Lin License BY GPL

設備:

兩台電腦

P4  1 .7GHZ  1      GB RAM 80GBHD  (Oracle 8i Server and Other oracle Service)

1.      P3 800MHZ  256 MB RAM 30GBHD  (Apache 1.3X + PHP 4.22 )

軟體:

  1. Oracle 8i 8.17(8.1701ver) for Database Server        http://otn.oracle.com

  2. Oracle 8i 8.17(8.16ver)     for Database Client         http://otn.oracle.com

  3. REDHAT Linux 7.3                                                 http://www.redhat.com

  4. Apache 1.37                                                             http://www.apache.org

  5. PHP 4.22                                                                  http://www.php.net

起因:

主要是因為要將伺服器與資料庫電腦分離,達到最好的執行效能。一般來說我們會將Server端執行效能提高,達到所謂的「Thin Client」的定義。所以在這邊我們的Server端電腦配備有一定的記憶體、以搭配Oracle在執行大量運算或是預儲程序(Stored Procedure)運作。 所以我們必須建制兩台電腦,並且將Web Server建制到另外一台電腦上面。利用Apache與PHP建制出來的網路服務,對於Oracle有相當多的資源可以利用有兩種函示組Oracle與OCI8者兩種的Function建制出來的功能相當的完整。並且有相關的Function提供給習慣利用MySQL的設計師,讓你可以快速的轉換。

架構:

C:AppServwww2documentoracle8iBuild_Oracle_PHP_APACHE.filesimage002

Oracle的Client-Server概念中主要如右圖所示,並且該圖表現出Client與Server間必須要有一個共通的溝通管道在這邊扮演著溝通管道的就是Oracle的溝通服務Net8

在此架構中左圖的Client主要指的就是面對客戶的Application Server (PHP)和中間層(Web Server)。並且可以根據客人的需求改變相關的外觀與應用。

而右邊的Server主要就是指的就是DBMS Server在這邊主要就是指的就是Oracle Database Server我們在這裡使用的是Oracle 8i(8.1701)會使用Oracle的原因是因為Oracle本身的功能強大,並且針對於復原與備份的機制相當的強勁。對於我們在資料庫的運用上,會更加的強勁。

會採取以上的架構主要是要將負載程度分散在兩台電腦上面,系統上的負載主要可以分為兩種:

1.      就是網路上的使用者透過網頁伺服器(Web Server)上面來的負載程度,主要就是透過Web Server處理,顯示與傳遞資訊給使用者知道。

2.      經過網頁伺服器傳遞過來的參數,DBMS接收到後開始針對資料庫作處理。這邊的處理可能是相當大的一個負載量。

What is NET8:

C:AppServwww2documentoracle8iBuild_Oracle_PHP_APACHE.filesimage004

Client-Server的架構中,透過網際網路的傳輸就是一個固定的工作,但是網際網路上面的傳輸要如何去處理呢。應該透過哪一個PORT?應該利用怎麼樣的通訊協定?應該找尋怎麼樣的主機名稱?這些的設定值中,我們需要一個中間者去作這些參數的設定與工作的處理。在Oracle架構中我們將這樣的工作全部交給了Net8去處理。

在左圖中我們可以看到,我們可可以看到NET8就是處理Client-Server中傳輸問題協調者。在NET8中最底層的就是網路基底(TNS :Transparent Network Substrate)的網路層來提供客戶來交易與傳輸。在這其中的傳輸協定有TCP/IP IPX/SPX DecNet等等的傳輸協定。只要符合在TNS中有定義好。這些協定的可以處的相當好。

NET8的相關服務

在NET8中主要有以下幾種的 TNS Listener、TNS connection 其中每一次的連線都是一個TNS Connection 而建立 connection 就是透過 TNS Listener啟動的。而NET8中最重要的三個設定參數就是

1.          HOSTNAME   就是伺服器的名稱或是IP為指

2.          TNSNAMES   TNS服務相關協定與PORT

3.          ONAMES                 當你的Oracle唯一群伺服器時,定義每一台名稱規則

NET8檔案設定部分

NET8主要的檔案設定都在_ $ORACLE_HOME/network/admin_下面中的兩個檔案。

1.          tnsnames.ora            TNS相關協定設定、服務的位置

2.          sqlnet.ora                 傳輸方法、參數定義與其他系統溝通參數設定

上面來說,這兩個檔案似乎決定了對於Server服務的溝通方式,事實上只要你溝通協定設定的好,你可以將許多的溝通路徑全部設定在其中。到時候你再決定一個TNS NAME就可以針對你要溝通的服務、要溝通的主機去呼叫進行傳輸了。

以上兩個檔案你可以直接用文書編輯軟體去編輯、還是用 _netasst  _去執行NET8 ASSISTANT來設定相關的參數。

TNSNAMES.ORA

這裡提供一些設定方使有關於這個檔案的說明,該檔案的位址在_$ORACLE_HOME/network/admin_

TNS_名稱 =

sds(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (sdsPROTOCOL = TCP)(HOST =主機名稱 )(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = OSID名稱)

    )

TNS 名稱:  主要是定義 TNS連線的名稱

主機名稱:   主要是定義名稱,可以用IP,名稱根據 _/etc/hosts _的紀錄。

OSID名稱: 這個就是安裝Oracle 的時候,Oracle的ID名稱。

預設的port 都是 152,在這個例子中式透過 TCP的溝通方式。

 

SQLNET.ORA

檔案的位址在  $ORACLE_HOME/network/admin

AMES.DIRECTORY_PATH= (TNSNAMES,ONAMES,HOSTNAME)

NAMES.DEFAULT_DOMAIN=ORA

SQLNET.EXPIRE_TIME=10

USE_DEDICATED_SERVER=OFF

USE_CMAN= FALSE

LOG_DIRECTORY_CLIENT=C:ORACLEORA81NETWORKLOG

LOG_FILE_CLIENT=sqlnet.log

TNSPING.TRACE_LEVEL=OFF

TNSPING.TRACE_DIRECTORY=C:ORACLEORA81NETWORKTRACE

TRACE_FILE_CLIENT=sqlnet.trc

TRACE_DIRECTORY_CLIENT=C:ORACLEORA81NETWORKTRACE

TRACE_LEVEL_CLIENT=OFF

TRACE_UNIQUE_CLIENT=OFF

在這其中 NAMES.DIRECTORY_PATH= (TNSNAMES,ONAMES,HOSTNAME)這行就是設定三個參數的主要函示。告訴NET8傳輸的參數主要以這三個方法來設定。

Installations

1.          Oracle Server安裝方式、請參照我的網頁

2.          記得在伺服器端也安裝[完整版本]、而不要安裝Client 這樣PHP安裝的時候會因為Library 不夠。無法繼續安裝。

3.          利用 RPM安裝(參考我的網頁) 或是一般方式安裝PHP、Apache在安裝就可以了

一般安裝方法

1. .Setup Apache Directory

cd /usr/local/apache_VER

./configure --prefix=/usr/local/apache



2. Setup Php and Apache

PHP    ./configure --with-apache=../apache_1.3.27 --with-oracle=$ORACLE_HOME --with-oci8=$ORACLE_HOME --enable-track-vars --enable-sigchild

make

make install

Apache ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a

make

make install

3. 修改 /usr/local/apache/conf/httpd.conf

USER 與 GROUP 改成ORACLE的啟動人與群組(oracle/ oinstall)

4. 啟動 /usr/local/apache/bin/apachectl start

4.          利用我提供的一些Function 去更改你的函示

 

Reference:

1.      Oracle 8 Network Administration

2.      Oracle Net8- From the Client-Side

3.      Net8, Oracle middleware

4.      NET8 - Oracle Client - URGENT

5.      Oracle Net8


Evan

Attitude is everything