建置一個整合了 Linux、Apache、PHP4、FastCGI、Oracle 以及 MySQL 的開發環境,是早期企業級 Web 應用常見的架構選擇。本文將詳細記錄從軟體套件準備、資料庫客戶端安裝、Perl 模組部署,到 Apache、PHP 與 FastCGI 編譯整合的完整步驟,供需要維護舊系統或研究經典架構的工程師參考。
開始前,請確認已下載以下版本的原始碼或安裝包:
編輯 /etc/profile,加入以下變數(請依實際安裝路徑調整):
export ORACLE_HOME=/opt/oracle8i/u01
export ORACLE_BASE=/opt/oracle8i
export ORACLE_OWNER=oracle
export ORACLE_SID=ORCL
export ORACLE_TERM=ansi
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280"
groupadd dba
useradd -g dba oracle
passwd oracle
mkdir -p /opt/oracle8i/u01
chown -R oracle.dba /opt
以 oracle 用戶登入,解壓縮安裝包並啟動 X Window:
tar zxvf oracle8161.tar.gz
startx
cd Oracle8iR2
./runInstaller
安裝類型選擇 Client/Application User(若資料庫伺服器在別機)。安裝完成後配置 SQL*Net8 並測試遠端連線。
以 root 身份依序安裝 RPM 包:
rpm -ivh MySQL-3.22.32-1.i386.rpm
rpm -ivh MySQL-client-3.22.32-1.i386.rpm
rpm -ivh MySQL-devel-3.22.32-1.i386.rpm
rpm -ivh MySQL-shared-3.22.32-1.i386.rpm
依序編譯安裝 DBI、DBD-Oracle、MySQL 模組:
# DBI
tar zxvf DBI-1.13.tar.gz && cd DBI-1.13
perl Makefile.PL && make && make test && make install
cd .. && rm -rf DBI-1.13
# DBD-Oracle
tar zxvf DBD-Oracle-1.03.tar.gz && cd DBD-Oracle-1.03
perl Makefile.PL && make && make test && make install
cd .. && rm -rf DBD-Oracle-1.03
# MySQL 模組
tar zxvf Msql-Mysql-modules-1.2209.tar.gz && cd Msql-Mysql-modules-1.2209
perl Makefile.PL # 選擇 1 (MySQL) 和 y (支援 Mysql.pm)
make && make test && make install
tar zxvf apache_1.3.12.tar.gz
tar zxvf php-4.0.0.tar.gz
tar zxvf mod_fastcgi_2.2.4.tar.gz
cd apache_1.3.12
./configure --prefix=/usr/local/apache
cd ../php-4.0.0
./configure --with-apache=../apache_1.3.12 \
--with-mysql \
--with-oracle=$ORACLE_HOME \
--with-oci8=$ORACLE_HOME \
--enable-track-vars
make && make install
cp php.ini-dist /usr/local/lib/php.ini
mv mod_fastcgi_2.2.4 apache_1.3.12/src/modules/fastcgi
cd apache_1.3.12
./configure --prefix=/usr/local/apache \
--activate-module=src/modules/php4/libphp4.a \
--activate-module=src/modules/fastcgi/libfastcgi.a
make && make install
/etc/rc.d/init.d/httpd stop
/usr/local/apache/conf/httpd.conf)ServerName host.mydomain.name
DocumentRoot "/home/httpd/html"
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride None
Order allow,deny
Allow from all
ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"
DirectoryIndex index.html index.phtml index.php index.htm index.shtml index.fcgi
更新啟動腳本連結:
cd /etc/rc.d/init.d
ln -fs /usr/local/apache/bin/apachectl httpd
在 httpd.conf 加入:
AddType application/x-httpd-php .php .phtml .php3
修改 /usr/local/apache/bin/apachectl,於 start) 區塊加入 Oracle 環境變數:
export ORACLE_HOME=/opt/oracle8i/u01
export ORACLE_BASE=/opt/oracle8i
export ORACLE_SID=ORCL
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280"
修改 srm.conf 傳遞環境變數給 CGI:
PassEnv ORACLE_HOME ORACLE_BASE LD_LIBRARY_PATH NLS_LANG ORACLE_SID PATH
在 httpd.conf 加入:
AddHandler fastcgi-script .fcg .fcgi .fpl
<Directory /home/httpd/html/fcgi>
SetHandler fastcgi-script
Options ExecCGI Indexes Includes
Order allow,deny
Allow from all
</Directory>
建立 FastCGI 目錄並安裝 Perl FCGI 模組:
mkdir /home/httpd/html/fcgi
tar zxvf FCGI-0.53.tar.gz && cd FCGI-0.53
perl Makefile.PL && make && make install
/etc/rc.d/init.d/httpd start/home/httpd/html/fcgi/test.fcgi(Perl + DBI 連線 Oracle)若所有測試通過,即完成整合環境建置。