• 博客访问: 385916
  • 博文数量: 47
  • 用 户 组: 普通用户
  • 注册时间: 1970-01-01 08:00
个人简介

鏆傛棤浠嬬粛

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(47)

文章存档

2005年(36)

2004年(10)

2000年(1)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: 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文件,我的如下所示:
// 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之手,如需转载请注明,谢谢.

[@more@]
阅读(302661) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册