暑假想学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,我安装后还是有问题,而现在没法上水
木提
问了,只好先不要了。;(
--
FROM 221.6.29.*