• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

smthbbs安装全攻略

发布: 2007-5-25 23:40 | 作者: 佚名 | 来源: 互连网 | 查看: 21次 | 进入软件测试论坛讨论

领测软件测试网

     折腾了一个月,水木的论坛终于装得差不多了,在这期间居然让我碰上了前所未有的事

件。庆幸自己在3月初把水木精华区关于安装的文档都保存了,否则真不知道要装到什么时候

。现在赶快把安装步骤写下来,给想安装的朋友留点参考。
     我用的是FC3的系统,这里就以此为例。安装前请用rpm -qa xxx命令检查系统所需的软

件包是否已安装。需要的软件包有:zlib,autoconf,automake,libtool,libxml2,

libiconv,libjpeg,libjpeg-devel, libpng,libpng-devel, freetype2,gd,gd-

devel,openssl,gmp-4.X,这些系统盘就有,装全就是了。
    下面安装libesmtp,首先下载到源代码包,然后执行如下命令:   
tar xzvf libesmtp-1.0.tar.gz //解压libesmtp
cd libesmtp-1.0 //进入libesmtp源码目录
./configure --disable-pthreads
make
make install    
这样libesmtp就安装成功了。
     安装mysql没有什么特别要求,按mysql文档安装即可。
     现在做一些约定:
$(BBSHOME)         表示 bbs 的安装目录,缺省为 /home/bbs,在本文中指定

为/usr/local/bbs
$(WWWHOME)         表示 apache 的安装目录,在本文中指定为 /usr/local/www
$(PHPHOME)         表示 php 的安装目录,在本文中按缺省的 /usr/local
      安装apache和php:
我下载到的是httpd-2.0.52和php4.3.10,以此为例。需要注意的是,apache直接编译安装后

最大上线人数为256,修改httpd.conf也没用,我经过查资料发现这个办法,就是修改源代码

。修改源代码目录中的/include/httpd.h,加上下面的条件定义语句:
#ifdef HARD_SERVER_LIMIT
#define HARD_SERVER_LIMIT 10000
#endif
这样就可以把限制提高到10000人。修改完毕就可以编译了(直接用命令表示):
cd httpd-2.0.52 //进入源代码目录
./configure --prefix=/usr/local/www --enable-module=so --enable-module=ssl
make
make install

cd ../php4.3.10
./configure --with-apxs2=/usr/local/www/bin/apxs --disable-debug \
             --enable-pic --disable-rpath --enable-inline-optimization \
             --with-dom --with-gd --with-freetype-dir=/usr/lib \
             --with-png-dir --with-iconv --with-jpeg-dir --with-zlib \
             --enable-track-vars
          make
          make install
OK!安装前的准备终于做好了!!!
      现在可以安装smthbbs了。动手前还得修改站点定制文件,这里用的是fb2k-v2,在site

目录下,注意验证fb2k-v2.h中BBSUID 和 BBSGID 与本地系统的 bbs 用户的 uid gid 是否一

致,如果不一致请调整到一致。其余的就是你的站点的一些参数,注意修改。
下面开始编译:
./configure --prefix=/usr/local/bbs --enable-site=fb2k-v2 --with-

www=/usr/local/www --with-php=/usr/local/include/php --with-mysql --enable-ssl
make
make install
make install-home
chown -R bbs:bbs /usr/local/bbs
如果一切顺利,至此 smthbbs、apache 和 php 都已经安装完毕。
      运行前配置:
web方式:
    apache 的配置文件为 /usr/local/www/conf/httpd.conf,编辑该文件,加入
        AddType application/x-httpd-php .php

    修改 Port 参数为 80,把 User 和 Group 参数都修改为 bbs。
    请把 KeepAlive 参数设为 Off.

    将 smthbbs 源代码目录 bbs2www/xml 下的文件复制到 /usr/local/www/htdocs。

    php 的配置文件可以从 php 源代码目录得到,将 php.ini-dist 复制为
/usr/local/lib/php.ini,然后编辑 php.ini 文件,将 short_open_tag 的值修改为
Off。

    运行 smthbbs
          cd /usr/local/bbs/bin
          ./miscd daemon
          ./bbslogd
          ./bbsd -p 23
         
     然后 telnet localhost,注册 SYSOP 和 guest 两个帐号。
     guest的密码随便写了.
     运行 apache
          /usr/local/www/bin/apachectl start

     到目前为止,论坛已经可以运行了,但还有许多工作要做!:(
修改分类讨论区:
这里直接借用前辈的文档了!:-)
修改分类讨论区

    修改站点的分类讨论区一般来说有两个步骤,一是需要修改站点的配置文件,二是需
要改动代码。配置文件的修改主要和用户界面有关,而源代码的修改主要和统计程序以及
站务管理有关。

6.1 修改站点配置文件

    需要改动的文件是 ~bbs/etc/menu.ini 和 web 主目录下面的 site.php。下面是
menu.ini 分类讨论区子菜单的一个简略形式,后面的讲解将都以此为例:

#------------------------------------------------------------------
%menu M_EGROUP
title        0, 0, "分类讨论区选单"
screen       3, 0, S_EGROUP
@EGroups     10, 22, 0, "0BBS",      "(0) 本站系统   [本站]"
@EGroups     0, 0, 0,   "1USA",      "(1) 人在美国   [校园][创业]"
@EGroups     0, 0, 0,   "2GoAbroad", "(2) 大话西游   [留学][学校][团体]"
@BoardsNew   0, 0, 0,   "New",       "(N) 阅读新文章"
!..          0, 0, 0,   "Exit",      "(E) 回到主选单"
%
EGROUP0 = "a"
EGROUP1 = "b"
EGROUP2 = "c"
#------------------------------------------------------------------

这里需要注意的地方是:分类讨论区菜单的第 5 个参数的第一个字母是序列号,这个序
列号通过下面的 EGROUP? 来定义分区代号(一般是一个字母或数字)。比如这里的第一
个分类讨论区“本站系统”,序列号是 0,分区代号是 a(由 EGROUP0 定义)。注意:
序列号只是 menu.ini 内部引用使用,没有任何别的用处!后面的修改,以及新建和修改
讨论区都只需要知道分区代号即可,在这个例子中,三个分区代号分别是 a b c。
    一般可以把序列号和分区代号设置成一样。
    改完 menu.ini 参考 4.3 节使之生效。(站务在主菜单按~)
   
    另一个需要修改的配置文件是 site.php,上面的例子就需要在 site.php 内用下面
的代码:

$section_nums = array("a", "b", "c");
$section_names = array(
    array("本站系统", "[本站]"),
    array("人在美国", "[校园][创业]"),
    array("大话西游", "[留学][学校][团体]")
);


6.2 修改源代码
    修改分类讨论区需要修改站点的 site.c 和 site.h 文件。不推荐直接修改
default.h 和 default.c 文件。
    smthbbs 系统有一个 ~bbs/0Announce/groups/ 目录,这是版面精华区的总目录,该
目录下存放所有版面的精华区。一般站点希望版面分区结构和精华区分区结构完全一致。
以上面的例子为例,一共三个分类讨论区,那么讨论区精华的总目录下应该有三个目录,
我们把它们分别取名为 GROUP_0 GROUP_1 GROUP_2。修改分类讨论区往往会需要修改精华
区结构,所以修改完分类讨论区之后站务应该进入精华区调整,比如建立目录,修改
.Names 文件等。

    源代码的修改首先是 site.h 里面的 SECNUM 常数,它应该定义为分类讨论区数量:
#define SECNUM 3

    剩下的修改都在 site.c 里面了,为此确保 site.h 没有定义 USE_DEFAULT_SECODE。

    site.c 内一共有四个常量和分类讨论区有关,请注意常量的类型定义绝不能改。

const char seccode[SECNUM][5] = {"a", "b", "c"};
    这个是分区代号,部分统计程序需要用到。

const char * const explain[] = {
    "本站系统",
    "人在美国",
    "大话西游",
    NULL
};
    分类讨论区的区名,web 下的站点管理会用到。最后的 NULL 不能漏!

const char * const groups[] = {
    "GROUP_0",
    "GROUP_1",
    "GROUP_2",
    NULL
};
    精华区总目录下相应分区的目录名,开版和修改版面设定的时候会用到。
    最后的 NULL 不能漏!

const char secname[SECNUM][2][20] = {
    {"本站系统", "[本站]"},
    {"人在美国", "[校园][创业]"},
    {"大话西游", "[留学][学校][团体]"},
};
    分类讨论区说明,就按照这个格式依样画葫芦好了。实际上只有 secname[i][0] 才
    真正在程序中用到,目的是开版和修改版面精华区位置的时候提示选择用。
   
    另一个需要注意的问题是,每个版面的精华区目录位置都是完全独立储存的,和上面
的修改毫无关系。所以像上面的例子,如果我们决定把 GROUP_0 的目录名改掉,那样的
话不但要进行类似上面所述的修改,而且精华区位于 GROUP_0 目录内的版面都应该要进
入系统管理菜单重新设定讨论区,选择移动精华区位置,指定新的目录。

    修改源代码之后需要重新编译安装 BBS 程序。可以看到源代码的修改只和管理操作
和统计程序相关,所以在实际操作中,如果是减少分区数目或者修改分类讨论区说明,可
以仅调整 menu.ini 和 site.php,而不修改源代码。

然后是生成首页导读必须的文件,继续使用前辈的成果:
为首页导读生成必要的xml文件

    3.4.1首页导读各元素和xml文件的对应关系简表

    所有需要的xml文件都是保存在$(BBSHOME)/xml/目录的,如果您的站台没有此目录
    请以bbs帐号在$(BBSHOME)生成此目录。

    所有生成xml需要执行的程序,都保存在$(BBSHOME)/bin,源文件在$(SRCDIR)/local_u
    tl

    以下为了描述方便,不再指明xml和程序的目录。

 
首页导读元素  需要的xml文件  mainpage.php当中相关函数  生成此xml需执行的程序
 
    推荐文章      commend.xml    gen_commend_html()          genhot
 
    本日热点话题  day.xml        gen_hot_subjects_html()     poststat
 
    分类精彩讨论区 day_sec*.xml  gen_sections_html           poststat
                                 gen_sec_hot_subjects_html()
                              
    新开版面       newboards.xml gen_new_boards_html()       gennewboard
 
    推荐版面       rcmdbrd.xml   gen_recommend_boards_html() 手工写的没有程序
 
    人气排名       board.xml     gen_board_rank_html()       usage
 
    今日祝福       bless.xml     gen_blessing_list_html()    poststat
 
    3.4.2 crontab当中有关首页导读的部分
 
    参考$(SRCDIR)contrib/cron.SMTH,在bbs帐号的crontab里面调用各程序生
    成以上xml的部分如下所示。请添加到您的bbs帐号的crontab里面。注意以
    下不是完整的bbs帐号的crontab,只是和首页导读相关部分的内容,完整的
    crontab列表请参考$(SRCDIR)/contrib/cron.SMTH。时间以及程序的完整路径等
    内容请根据自己站台的情况进行调整。
 
    # 定时更新推荐文章   
    0,10,20,30,40,50 * * * * /home/bbs/bin/genhot
    # 每小时 59 分执行热门话题统计; 1 分 html 化    
    59 * * * * /home/bbs/bin/poststat /home/bbs
    # stiger:新的十大统计   
    59 23 * * * rm -f /home/bbs/tmp/Xpost/*
    # 每天早上 4:33 统计各版使用状况0   
    33 4 * * * /home/bbs/bin/usage 0 >/dev/null 2>&1   
    36 4 * * * /home/bbs/bin/usage 1 >/dev/null 2>&1
 
  
    至于gennewboard,如果您的站台经常开新版,那么把它加入crontab;如果不经
    常开新版,在bbs系统上开完新版之后,用bbs帐号手动执行一下也可以。
 
    推荐文章需要在站上开一个版,Recommend版,然后版主在版面上推荐的文章前面
    按;3,此文章进入Recommand版,站务在Recommend版需要推荐的文章前面按g就可
    以使得此文章出现在web首页导读的推荐文章了。
 
    3.4.3手工生成rcmdbrd.xml
 
    编辑,$(BBSHOME)/xml/rcmdbrd.xml,按照以下格式,感谢windinsn提供
    <?xml version="1.0" encoding="GBK"?>
    <RecommendBoards>
    <Board><EnglishName>这里写版面的英文名</EnglishName></Board>
    <Board><EnglishName>...</EnglishName></Board>
    ...
    <Board><EnglishName>...</EnglishName></Board>
    </RecommendBoards>

 
    至此,所有的首页导读的元素都已经生成完毕,在浏览器打开
    http://yoursite./mainpage.php 应该可以得到看到首页导读的各元素。

    现在已经基本完成了,但为了简化注册过程,我取消了发激活邮件的过程,web填写密码

并直接生成注册单,谢谢前辈的文档,我就偷懒了!:>
bbs2www/html/bbsreg.html
增加两个<input
<input type="password" name="pass1">
<input type="password" name="pass2">

bbs2www/html/bbsreg.php
首先判断$_POST["pass1"]和$_POST["pass2"]一不一样,不一样就直接html_error_quit
另外我记得密码的位数必须是5-39位(inclusive),这个最好限定一下。
我不确定出了这个范围会不会有问题

$password=bbs_findpwd_check("","",""); 改成
$password = $_POST["pass1"] 赫赫,bbs_findpwd_check是一个自动产生密码的垃圾函数

从$mailbody开始到那个发送邮件失败的http_error_quit都不要了

bbs_createregform函数调用的最后那个参数,改成FALSE,这个非常关键!!
这样做就会填完注册单站务就可以在系统管理菜单->审批注册单看到。

后面的提示稍微改改,可能就差不多了。

另外你的src/site.h最好是这样的:
#define REGISTER_WAIT_TIME      (0)
#define REGISTER_WAIT_TIME_NAME "马上"
这两个smth默认好像是48小时,比较bt。这样改能保证telnet立即能填写注册单。

我按上面的方法修改后还是有一点问题,就是被拒的用户在web里重新填写注册单站务却看不

到,琢磨了半天,终于搞定。修改bbs2www/html/bbsfillform.php,把里面bbs_createregform

函数最后一个参数也全改成FALSE,这样就OK了。

    好了,终于安装好了,累死我了!至于blog,我安装后还是有问题,而现在没法上水木提

问了,只好先不要了。;(

    至于我装的站台,教育网用户可以到http://202.195.144.15看一看,公网无法访问,大家都知道原因的吧!

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网