[安裝筆記] using Apache + PHP + Oracle under …
從來都沒用過 oracle...以前上班的地方沒錢,只能玩玩 MySQL
最近換了新工作,剛把這邊的 NT web server 換成 FreeBSD + Apache
才跟我說要搞個環境存取現有的 oracle database server
寫程式的小妹妹又只會用 php...本來,想叫他改用別的方式寫...
oracle 沒出 FreeBSD 版的,所以...php+oracle 也就沒辦法直接裝在 FreeBSD 上囉
不過...FreeBSD 還有個 linux emulator 可以用...
該死的 oracle 什麼時候才會放出 FreeBSD 底下的 library 啊???
參考 google 上找到的資料,弄了一個下午,可以跑了
不過...中文字竟然變 ???
可能少了一些東西,只好再花一個下午重玩一次
在 google 找到的東西好像沒提到這點
希望這篇可以讓遇到跟我一樣問題的人少點麻煩...
可惡的 linuxFab 害我在 google 找到一堆垃圾...
下面這些過程是從 history 裡面剪貼下來的...如果有打錯 請多包函
使用軟體版本:
FreeBSD 4.7
Red Hat Linux 7.3
apache 1.3.27 (apache_1.3.27.tar.gz)
php 4.2.3 (php-4.2.3.tar.bz2)
oracle 8.1.7
先架個 linux 裝好 oracle,我是裝在 /oracle
(到 google 打 "安裝 oracle linux" 就可以找到一堆參考資料)
我在安裝時出現一堆錯誤,最後 database 並沒有 create 成功
不過...只要能裝上就好
我打算把 apache+php 安裝到 /usr/local
先把 /usr/local 底下的東西移走,可以少複製用不到的東西
(如果以後不想在用這台 linux,直接 rm -rf /usr/local/* 就可以囉,
不然就先備份以免誤砍 cd /usr/local; tar czf backup.tgz * ; rm -rf *)
安裝 apache 1.3.27 (configure 的參數是參考自 FreeBSD 的 ports)
tar xzf apache_1.3.27.tar.gz
cd apache_1.3.27
/configure --server-uid=www --server-gid=www --enable-module=most \
--enable-module=auth_db --enable-module=mmap_static \
--disable-module=auth_dbm --enable-shared=max --prefix=/usr/local
make install
(在安裝 apache 時有出點錯誤,因為我的 linux 是用最簡單的安裝,
只好再抓 rpm 回來補,如果有人遇到一樣情形,自己看著辦囉)
安裝 php 4.2.3 (configure 的參數是參考自 FreeBSD 的 ports)
(記得改 --with-oci8= 的 $ORACLE_HOME)
bunzip2 -c php-4.2.3.tar.bz2 | tar zf -
cd php-4.2.3
/configure --with-apxs=/usr/local/bin/apxs --with-oci8=/oracle \
--enable-static --enable-mbstring=tw --enable-mbregex
make install
到這裡 apache 跟 php 都完成了 可以打包要的東西囉
cd /usr/local
tar czf /tmp/apache-php-oracle.tgz *
接下來,把 apache-php-oracle.tgz 傳到 FreeBSD 去
FreeBSD 上要裝好 linux emulator...
看看有沒有 /compat/linux/usr/local/,沒有就自己建個目錄吧
cd /compat/linux/usr/local
tar xzfp apache-php-oracle.tgz 把剛剛做的東西解開來
在 /compat/linux/usr/local/bin 底下有一些執行檔可能會因為找不到 lib 不能跑
so...一個一個檢查看看 ldd httpd
把缺的 so 檔從 linux 抓過來放到 /compat/linux/usr/local/lib
在 /compat/linux/etc/ld.so.conf 加上 /usr/local/lib
跑一下 /compat/linux/sbin/ldconfig
記得檢查看看有沒有漏網之魚
把 linux 上的 $ORACLE_HOME/oracle/ocommon/nls/admin/data/* 複製過來
我的在 linux 上是 /oracle/ocommon/nls/admin/data/*
所以擺到 /compat/linux/oracle/ocommon/nls/admin/data/
改一下 /compat/linux/usr/local/conf/httpd.conf
加上這一段
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
其他的就看自己的需要去改囉
我還把 port 換成 8080 (因為原本就跑了 FreeBSD 的 apache)
我也把 /compat/linux/usr/local/bin/httpd
換成 /compat/linux/usr/local/bin/httpd-linux 以免跟 FreeBSD 的 httpd 搞混
修改 /compat/linux/usr/local/bin/apachectl
把 /usr/local 換成 /compat/linux/usr/local
在 start) 後面加上下列幾行 (oracle 路徑記得改一下)
export LD_LIBRARY_PATH=/oracle/lib
export NLS_LANG='traditional chinese_taiwan.zht16big5'
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle
export ORA_NLS33=/oracle/ocommon/nls/admin/data
參考 /usr/local/etc/rc.d/apache.sh 寫個 /usr/local/etc/rc.d/apache-linux.sh
把 /usr/local/sbin/apachectl 換成 /compat/linux/usr/local/bin/apachectl
把 /var/run/httpd.pid 換成 /compat/linux/usr/local/logs/httpd.pid
跑一下 /usr/local/etc/rc.d/apache-linux.sh start
ps ax 看有沒有 httpd-linux 在跑
再用 browser 看一下 php 給的 info.php 檢查 oracle 有關的設定對不對
(ORACLE_BASE, ORACLE_HOME, ORA_NLS33...)
接下來 自己弄個 php 程式跑看看吧 Good Lucky!
玩了兩個下午 終於讓我們公司的小妹妹鬆了一口氣...
FreeBSD 真好玩!!!
在 sun 上面跑 oracle 的朋友給的評語: 真是 FreeBSD 的愛用者...
--
啊那個lwj的簽名檔還在測試中啦!!
--
※ 來源:‧四百年來第一站 firebird.cs.ccu.edu.tw‧[FROM: 61-218-191-40.H]
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章