看板FreeBSD
标 题[安装笔记] using Apache + PHP + Oracle under Free
发信站中正大学四百年来第一站 (Mon Nov 18 17:47:02 2002)
转信站Ptt!news.ntu!spring!news.nctu!news.nsysu!news.ccu!news.cs.ccu!Firebird
从来都没用过 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]