关闭

我以前装BBS的笔记,比较适合LINUX新手zz

1339人阅读 评论(0) 收藏 举报

发信人: rainboyfdy (飘雨时分), 信区: BBSMan_Dev
标  题: 我以前装BBS的笔记,比较适合LINUX新手
发信站: 水木社区 (Fri Nov 11 18:10:17 2005), 转信

暑假想学LINUX,就装了个REDHAT,没事干就用装BBS来学LINUX了
只是自己的一些笔记,版本有些老了,可能对最新的不太合适
配合着<<smthbbs安装全攻略>>这篇文章安装,一般都能安装成功,现在在DEBIAN下安装就更爽了,不用考虑包关联的问题了,我刚装RH的时候GCC什么都没装一些库也没装,如果你装RH完全版,估计不会出现我的这些问题.高手门别笑话咱了-_-
_________________________________________________________________________
0.软件安装问题
如果用更高版本可能glibc库要求过高,因此选php-4.4.0试
kbsbbs安装的时候注意选项

_________________________________________________________________________
1.关于mainpage.html更新.
wget  http://127.0.0.1/mainpage.php-O /usr/local/www/htdocs/mainpage.html

最好是加在BBS用户的crontab文件里
su bbs ->  crontab -e 然后编辑该文件


_________________________________________________________________________
2.首页乱码问题PHP:
编辑PHP文件,发现汉字为乱码,生成的mainpage.html也是乱码
mainpage.PHP用VI编辑是乱码,用GEDIT编辑却没有乱码
有人说到 environment (用locate查找)文件里加export G_BROKEN_FILENAMES=1
加入后没有解决问题
加入后没有解决问题


后来查清除了,把SMTH源代码目录下的mainpage.PHP考被到/usr/local/www/htdocs下就搞

定了


_________________________________________________________________________
3.叶面不自动/更新:比如mainpage.php->mainpage.html的更新

应该在用户的crontab里设定,可疑参考SMTHBBS/contrib/crontab.SMTH
现用/etc/init.d/crond status 看下状态,如果没有启动则运行/etc/init.d/crond sta

rt启动.
运行crontab -l 看下当前用户的crontab是否正确,不正确则运行crontab [-u user] fi

le 重新指定
0 * * * * /bin/ls > ls.out
有ls.out 证明运行过了

//在安装完SMTHBBS的时候,曾经有这个语句:
//chown -R bbs:bbs /usr/local/bbs 表示递归调用chown把/usr/local/bbs的属性写为b

bs:bbs

因此要对mainpage.html更新,应该在root权限下(因为我安装时候apache是root权限)
wget  http://127.0.0.1/mainpage.php-O /usr/local/www/htdocs/mainpage.html应该

放到root的crontab里面
做法如下:
crontab -u root -e
把上面要执行的语句放到crontab里
那天试了,不知道为什么crontab还是没有真正运行。。。
等会去 /var/log/message 里面看出错信息。
OH,MYGOD,
找到原因了:
24 * * * * wget  http://127.0.0.1/mainpage.php-O/usr/mainpage.html
           ~~~~ 这个命令要全路径才行
而且得放到BBS用户的crontab里,因为好多命令是在bbs下执行的

_________________________________________________________________________
4."本日热点话题讨论"的更新 (热点话题放在/usr/local/bbs/tmp/Xpost/*)
用/usr/local/bbs/bin/poststat /usr/local/bbs来更新,更新完以后应用
wget  http://127.0.0.1/mainpage.php-O/usr/local/www/htdocs/mainpage.html来更新

首页导读
因此这两项任务都可以放到crontab里去

_________________________________________________________________________
5.BASH下的可能乱码问题
如果默认选了中文作为语言,则执行LANG=C
然后就是英文提示了。
可以用locale查看本地字体

_________________________________________________________________________
6.清除共享内存

ipcs -a查看内存
ipcrm删除内存

_________________________________________________________________________
7.用bbs用户启动TELNET,APACHE不工作的问题
必须到ROOT下面启动,因为1024端口以下要用root

_________________________________________________________________________
8.首页bbsleft.html找不到的问题
把frame的设置成左边是bbsleft.php

_________________________________________________________________________
9.iptables封他的IP


_________________________________________________________________________
10.如何生成commend.xml?
查到资料说用 genhot可以生成
commend.xml    gen_commend_html()          genhot
在 BASH中如何生成?
直接执行会产生错误:
[root@localhost bin]# ./genhot
Error! shmget:readonly error! key = e74.: No such file or directory
切换到bbs用户身份直接执行genhot(芳到crontab中定时执行1此)还是会出现:
Error! shmget:readonly error! key = e74.: No such file or directory
有人说是共想内存的问题,但我用IPCRM还是不行, 后来发现需要把BBS启动Error! 就没

有了,但是genhot好像并没有产生XML文件
不知道什么原因,我重新装一遍后genhot就没问题了

_________________________________________________________________________
11. 停止BBS运行:killall -9 miscd



_________________________________________________________________________
12.上此首页导读老是出问题,原来是rcmdbrd.xml的原因
应该如下(注意<?xml version="1.0"前不能加空格)
<?xml version="1.0" encoding="GBK"?>
    <RecommendBoards>
    <Board><EnglishName>Recommend</EnglishName></Board>
    </RecommendBoards>

_________________________________________________________________________
13.新开 讨论区说明:中文名称一定要正确,格式为:
      分区代号+[类名]+ 6 个空格+讨论区中文描述


_________________________________________________________________________
14.版面后的中文说明看不见

是因为文章说明弄的格式不正确
_________________________________________________________________________
15.推荐版面:手工修改rcmdbrd.xml文件即可


_________________________________________________________________________
16.系统安装后要注册sysop,guest两用户,并开Recommand(用来推荐文章),Announce(用来
系统公告)两版面

_________________________________________________________________________
17.推荐文章的产生:
   在recommand版内有文章,并且在TELNET下按G命令。以标志文章为推荐文章。但如何推
荐其他版面的文章呢???? 其他版面:先;后3


_________________________________________________________________________
18.注册单的修改(去掉邮件激活功能)
到site.php里添加define("SITE_ZIXIA",1);同时注意把界面改一下



_________________________________________________________________________
20.index.html的图片规格
      width:760 height:399


_________________________________________________________________________
21.如何真正删除帖子?

在每个board下,可能有.DELETED和.JUNK文件,.DELETED文件记录所有版主删掉的文章,

这些文章名字是D.*, .JUNK文件记录用户自己在版内删除的文章,这些文章名字是J.*
如果想自己清除这些文章(比如备份时节约空间),可以删除每个board下的这些文件:


rm -rf .DELETED
rm -rf D.*
rm -rf .JUNK
rm -rf J.*


_________________________________________________________________________
21.如何彻底删除讨论区
vote/ boards/ 下面删掉相应的目录
以及删掉相应的精华区


_________________________________________________________________________
22.一些系统档案的设定
TELNET登录后,进入 A) 系统管理功能表 ->F) 编辑系统档案

_________________________________________________________________________
23.关于web用户发呆的问题

./libBBS/default.h
#define IDLE_TIMEOUT    (60*20)
#define MONITOR_TIMEOUT (60*20)

另一方法是有TELNET用户登录的时候,WEB人数就会重新统计

_________________________________________________________________________
如何置顶文章?
  斑竹按;键,将出现 切换: 0)取消 1)不可re标记 2)置顶标记 3)推荐

_________________________________________________________________________
精华区目录修改?
  修改$(BBSMAIN)/0Announce/groups/.Names

_________________________________________________________________________
新进用户自动发文
在default.h中添加
#define NEW_COMERS              1  /* 注册后在 newcomers 版自动发文 */
_________________________________________________________________________
原代码的修改
到$/site/下
  devel.h 中把定义 USE_DEFAULT_SECODE注释掉
  default.h中再把定义分区数量 #define SECNUM 4 //我开了4个区
把default.h中"smth.org" "水木清华"替换掉
修改default.c文件:

const char seccode[SECNUM][5] = {"a", "b", "c","d"}; //注意删除上一行的宏定义
    这个是分区代号,部分统计程序需要用到。
const char  * const groups[] = {
    "GROUP_0",
    "GROUP_1",
    "GROUP_2",
    "GROUP_3",
    NULL
};
const char secname[SECNUM][2][20] = {
    {"本站系统", "[系统]"},
    {"休闲娱乐", "[休闲/音乐]"},
    {"校园", "[校内]"},
    {"电脑技术", "[技术]"},
};

const char  * const explain[] = {
    "本站系统",
    "休闲娱乐",
    "校园",
    "电脑技术",
    NULL
};

    精华区总目录下相应分区的目录名,开版和修改版面设定的时候会用到。
    最后的 NULL 不能漏!

wforum.h里这几个数组也改一下吧

到default.h里把关于“水木”,“SMTH”替换掉



_________________________________________________________________________
web去掉cache:
funcs.php里
function cache_header($scope,$modifytime=0,$expiretime=300)
{
        global $cachemode;
+       return false; //added by atppp
        session_cache_limiter($scope);
        $cachemode=$scope;
        if ($scope=="no-cache")
_________________________________________________________________________
  备份应该注意的问题:
1、当初备份之前有没有正常停bbs服务。
2、如果重新安装之前bbs还在运行,需要
a) 停掉bbs服务特别是miscd
b) 然后cp .BOARDS .PASSWDS 等等
c) 清共享内存
d) 启动bbs服务
b和c两个步骤似乎可以交换...







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


件。庆幸自己在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,在s
ite

目录下,注意验证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_createreg
form

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

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

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










--

※ 来源:·水木社区 http://newsmth.net·[FROM: 221.6.29.*]

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:414763次
    • 积分:5156
    • 等级:
    • 排名:第5357名
    • 原创:44篇
    • 转载:236篇
    • 译文:7篇
    • 评论:32条
    文章分类