利用兩台電腦架設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 )
主要是因為要將伺服器與資料庫電腦分離,達到最好的執行效能。一般來說我們會將Server端執行效能提高,達到所謂的「Thin
Client」的定義。所以在這邊我們的Server端電腦配備有一定的記憶體、以搭配Oracle在執行大量運算或是預儲程序(Stored Procedure)運作。
所以我們必須建制兩台電腦,並且將Web
Server建制到另外一台電腦上面。利用Apache與PHP建制出來的網路服務,對於Oracle有相當多的資源可以利用有兩種函示組Oracle與OCI8者兩種的Function建制出來的功能相當的完整。並且有相關的Function提供給習慣利用MySQL的設計師,讓你可以快速的轉換。
架構: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接收到後開始針對資料庫作處理。這邊的處理可能是相當大的一個負載量。
Client-Server的架構中,透過網際網路的傳輸就是一個固定的工作,但是網際網
路上面的傳輸要如何去處理呢。應該透過哪一個PORT?應該利用怎麼樣的通訊協定?應該找尋怎麼樣的主機名稱?這些的設定值中,我們需要一個中間者去作這些參數的設定與工作的處理。在Oracle架構中我們將這樣的工作全部交給了Net8去處理。
在左圖中我們可以看到,我們可可以看到NET8就是處理Client-Server中傳輸問題協調者。在NET8中最底層的就是網路基底(TNS
:Transparent Network Substrate)的網路層來提供客戶來交易與傳輸。在這其中的傳輸協定有TCP/IP IPX/SPX DecNet等等的傳輸協定。只要符合在TNS中有定義好。這些協定的可以處的相當好。
在NET8中主要有以下幾種的 TNS Listener、TNS
connection 其中每一次的連線都是一個TNS Connection 而建立 connection 就是透過 TNS Listener啟動的。而NET8中最重要的三個設定參數就是
1.
HOSTNAME 就是伺服器的名稱或是IP為指
2.
TNSNAMES TNS服務相關協定與PORT
3.
ONAMES 當你的Oracle唯一群伺服器時,定義每一台名稱規則
NET8主要的檔案設定都在
$ORACLE_HOME/network/admin下面中的兩個檔案。
1.
tnsnames.ora TNS相關協定設定、服務的位置
2.
sqlnet.ora 傳輸方法、參數定義與其他系統溝通參數設定
上面來說,這兩個檔案似乎決定了對於Server服務的溝通方式,事實上只要你溝通協定設定的好,你可以將許多的溝通路徑全部設定在其中。到時候你再決定一個TNS
NAME就可以針對你要溝通的服務、要溝通的主機去呼叫進行傳輸了。
以上兩個檔案你可以直接用文書編輯軟體去編輯、還是用 netasst 去執行NET8
ASSISTANT來設定相關的參數。
這裡提供一些設定方使有關於這個檔案的說明,該檔案的位址在$ORACLE_HOME/network/admin
TNS_名稱
=
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST
=主機名稱 )(PORT = 1521))
)
(CONNECT_DATA = (SERVICE_NAME = OSID名稱)
) )
TNS
名稱: 主要是定義 TNS連線的名稱
主機名稱: 主要是定義名稱,可以用IP,名稱根據 /etc/hosts 的紀錄。
OSID名稱: 這個就是安裝Oracle 的時候,Oracle的ID名稱。
預設的port
都是 152,在這個例子中式透過 TCP的溝通方式。
檔案的位址在 $ORACLE_HOME/network/admin
NAMES.DIRECTORY_PATH= (TNSNAMES,ONAMES,HOSTNAME) NAMES.DEFAULT_DOMAIN=ORA SQLNET.EXPIRE_TIME=10 USE_DEDICATED_SERVER=OFF USE_CMAN= FALSE LOG_DIRECTORY_CLIENT=C:\ORACLE\ORA81\NETWORK\LOG LOG_FILE_CLIENT=sqlnet.log TNSPING.TRACE_LEVEL=OFF TNSPING.TRACE_DIRECTORY=C:\ORACLE\ORA81\NETWORK\TRACE TRACE_FILE_CLIENT=sqlnet.trc TRACE_DIRECTORY_CLIENT=C:\ORACLE\ORA81\NETWORK\TRACE TRACE_LEVEL_CLIENT=OFF TRACE_UNIQUE_CLIENT=OFF
在這其中 NAMES.DIRECTORY_PATH= (TNSNAMES,ONAMES,HOSTNAME)這行就是設定三個參數的主要函示。告訴NET8傳輸的參數主要以這三個方法來設定。
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 finish~
4. 利用我提供的一些Function 去更改你的函示
1. Oracle 8 Network Administration
2. Oracle Net8- From the Client-Side
4. NET8 - Oracle Client - URGENT
5. Oracle Net8