[原创]linux下phpBB+Oracle解决方案,也可以从mysql升级的哦~
linux下phpBB+Oracle解决方案,也可以从mysql升级的哦~
丑话说在前面,经我初步试验,phpBB+Oracle比phpBB+mysql速度慢.
这里面原因很多,首先我的机器烂,PIII500+192MB内存,离ORACLE推荐配置差太远了,另外为了节约内存,以至于能让我流畅的用foobar听mp3,各项参数设置都想当保守,SGA才有30多MB,ORACLE的性能自然就难以发挥了.
如果你不说我是吃饱撑的,那么就请看下去吧,如果你觉得这个方案不够实用,那么也在情理之中,欢迎讨论其用途.
首先安装配置Apache+php4+mysql4,这个配置过程比较简单,就不用再说了吧.
本例中用的是apache2+php4+mysql4+oracle8.1.7+phpBB2.0.10,配置好以后,开始安装phpBB.
可以从phpBB官方网站下载2.0.10版:
http://www.phpbb.com/downloads.php
还有这个中文语言包,汉化的还不错
http://prdownloads.sourceforge.net/phpbb/lang_chinese_simplified.zip
还有我做的一个package
http://asp.7i24.com/xtzc/linux/pbb2010ora.zip
解开以后就有文中所提的那些文件
phpBB的安装程序是install.php,在浏览器里敲入相应的url就可以了,
这个安装程序没有oracle选项,要有的话也不用我在这罗嗦了,呵呵,
我们就用mysql4作为数据库来安装它,
本例中库名为phpdb,用户名为phpuser,密码为phppass
安装完成后删除install和contrib目录,这时论坛就可以进了,
解压中文语言包到language目录,进入论坛管理中心,对论坛论坛作些进行配置,喜欢的话你现在就可以设界面为中文.
配置完成后,进入mysql的安装目录,比如win2000执行:
mysqldump phpdb -u phpuser -p >;d:\tempload.sql
敲入密码
或者
mysqldump phpdb -u phpuser -p phppass>;d:\tempload.sql
以上会把phpuser用户的phpdb数据库的表结构和数据变成sql语句导出,但是用它导入表结构是很痛苦的,我花了个把小时才倒进去(数据量很小,仅有十几个帖子),而且发现还是做的无用工.有的表包含autoincrement还要建立序列号,需要至少转换六种数据类型才能成功建表.所以只需保留其中的INSERT语句就可以了.
我们需要作一个只包含INSERT行的脚本教本,
在unix下面可以用
cat tempload.sql|grep ^INSERT>;load.sql生成,
如果INSERT语句前面有空格用
cat tempload.sql|grep INSERT>;load.sql来生成,
windows下嘛,你自己看着办吧,
这个文件将包含你的所有数据.如果数据太大,可以考虑分批导入.
把这些INSERT语句另存成一个文件,比如D:\load.sql,然后在其最后再加上一行:
commit;
保存并退出.
修改php.ini:
搜索包含oci的行,把该行前面的分号去掉.
复制oracle需要的链接库:
进入php安装目录,进入某个文件夹把某个*oci*文件,像php_oci8.dll,php_oci8.so之类,复制到其下一层目录,如果复制的不对,在浏览器里运行php程序会报错.
启动ORACLE,我这是8i 8.1.7,db_name是ora8i,通过Listener的连接串是ora8i_localhost.
8i是用internal用户进去,9i应该是sqlplus / as sysdba;
create user phpuser2 identified by tiger //创建用户tiger是密码
default tablespace users //定义用户的默认表空间,可省略
temporary tablespace temp; //定义用户的临时表空间,可省略
grant connect,resource to phpuser2;
connect phpuser2/tiger
运行mktable.sql建立数据表,建议看一下文件前几行
@d:\mktable.sql
运行load.sql,装载数据
@d:\load.sql
运行mkschema.sql转换表结构,建议看一下文件前几行
@d:\mkschema.sql
解压缩patch2010覆盖到phpBB目录
修改config.php文件,我的如下所示:
<?php
// phpBB 2.x auto-generated config file
// Do not change anything in this file!
$dbms = 'oracle'; //oracle类,照写
$dbhost = 'ora8i_localhost'; //你的数据库连接名,可用lsnrctl services查到
$dbname = 'ora8i_localhost'; //跟上面保持一样
$dbuser = 'phpuser2'; //数据库用户名
$dbpasswd = 'tiger'; //用户密码
$table_prefix = 'phpbb_'; //数据表的前缀
define('PHPBB_INSTALLED', true);
?>;
记着启动listener,lsnrctl start
完成后就可以爽了.-_-| 不过好困啊~
不过又发现一个问题就是用搜索的时候报数据类型不匹配,这估计是由mysql的text类型->;oracle的clob类型造成的.
好在这个bug解决起来不难,连我都搞得定了,修改第303行,把post_text加上单引号.
还有一个问题是注册新用户的时候报错,emailer.php 第231行,
这个问题浪费我很多时间,搜索发现网上一模一样的情况不少,可惜就是不解决问题,
后来我干脆把emailer.php的第232-234行前面都加了// ,注册就正常了,偶暂时没发现更好的解决方法.
鬼佬的解决方法是:再装一个smtp服务器/修改php.ini的mail函数/把smtp服务器指向本地云云,你如果碰到可以试试,或许能成功,如果哪位DX肯赐教的话是最好不过了.
phpBB是个不错的论坛,cu就在用,现在又多一种选择的余地,希望大家能够喜欢它.
本文出自cu菜鸟netzh之手,如需转载请注明,谢谢.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
喜欢你的内容,顶一把,真不错。可惜我对ORACLE,知之甚少。
真不错!!
收藏了。
多谢两位捧场和对偶的鼓励!
其实Oracle只要正常装上了,按照这个步骤来就没问题的,我也是刚学Oracle哈.
本文第二次修正,修正一个错误
对小数据量检索和并发数少的论坛,phpbbs+mysql就可以了。但是大的bbs,很少有用mysql的,不然就出问题了,cu就是个例子。。
所以说,oracle是个不错的选择。
老大,http://asp.7i24.com/xtzc/linux/pbb2010ora.zip失效了!