在 CentOS 上安装 KBS

为了学习北邮人论坛的 nForum 系统,我们需要先学会搭建 KBS

什么是KBS

KBS 是一个高性能的,稳定的,基于 telnet、SSH 和 Web 界面的电子公告牌系统,全称为The K Board System。支持多种如 Linux、FreeBSD、Solaris、Windows (需要Cygwin)操作系统:

安装环境

由于分别安装Apache+PHP+MySQL比较复杂,而且难以管理,个人开发一直习惯使用XAMPP,所以这里是基于XAMPP来安装的,下面开始,注意以下一直都是以管理员身份运行。

安装XAMPP

这里很简单,直接去 XAMPP 官网下载,然后进入 Linux 安装帮助界面按照提示一步步安装就 OK 了,此时我安装的版本是 XAMPP for Linux v1.8.3(PHP5.5.11)。默认应该是安装在 /opt/lampp/ 目录下,可以按照官网提示的方法本机测试一下 Apache。

安装依赖

安装 autoconf,automake,libtool

1
yum install autoconf automake libtool

由于我们已经安装了XAMPP,不需要再安装 PHP,httpd,MySQL 了,不过为了保险我们还是可以同时也安装的,yum 会自动忽略已经安装好的部分,下面我们带上以上三个,yum 安装 php-devel php-gd php-xml zlib-devel openssl-devel gmp-devel gd libesmtp-devel

1
yum install httpd php php-devel php-gd php-xml zlib-devel openssl-devel gmp-devel gd libesmtp-devel mysql mysql-devel mysql-server php-mysql

修改配置

创建bbs用户

1
adduser bbs

修改Apache配置文件 /opt/lampp/etc/httpd.conf

1
vim /opt/lampp/etc/httpd.conf

找到 User 和 Group 处,分别修改为 bbs

以 SVN 方式下载 kbsbbs 的源代码

1
2
cd /home/bbs/
svn co http://svn.kcn.cn/repos/kbs/trunk/kbs_bbs

此时开始下载一大串的源代码,代表正常结束

修改 KBS 的 uid 和 gid
先查看 bbs 用户的 gid 和 uid 是多少

1
id bbs

然后我们进入 /home/bbs/kbs_bbs/site

1
2
cd /home/bbs/kbs_bbs/site
ls

ls后,我们会看到有 fb2k-v2.hfb2k-v2.c 两个文件,这里我们默认使用这两份文件来搭建我们的站点,下面分别修改 fb2k-v2.hfb2k-v2.cBBSUIDBBSGID

1
2
3
4
5
6
7
8
9
10
11
12
vim fb2k-v2.h
vim fb2k-v2.c
``
另外,如果 后期想要继续安装nForum,建议在此处的 `fb2k-v2.h` 中添加以下 nForum 所需的宏定义,建议添加,方便以后扩展
```bash
#define NFORUM 1
#define ENABLE_REFER 1
#define RECORDMAXONLINE
#define TITLEKEYWORD
#define MAXTITLEKEY 18
#define MAXBOARDTITLEKEY 10

运行 autogen.sh 命令

分别到 /home/bbs/kbs_bbs/home/bbs/kbs_bbs/sshbbsd 下运行 autogen.sh 命令

1
2
3
4
cd /home/bbs/src/kbs_bbs
./autogen.sh
cd sshbbsd
./autogen.sh

开始编译安装kbs

1
2
cd /home/bbs/src/kbs_bbs
./configure --prefix=/home/bbs --enable-site=fb2k-v2 --with-php --with-mysql=/opt/lampp/mysql --enable-ssh --enable-ssl --with-openssl=/usr --with-libesmtp --enable-innbbsd CFLAGS="-O3 -g"

注意,这里补充一些常用 configure 参数说明。

1
2
3
4
5
6
7
8
9
10
11
12
--enable-site=SITE 告诉 kbsbbs 采用名为 SITE.h 和 SITE.c 的站
点定制文件,这两个文件必须放在 site/ 目录
--with-mysql[=DIR] 让 kbsbbs 支持 mysql,DIR 为 mysql 库文件
所在目录,如果不指明则自动检测
--without-mysql 不让 kbsbbs 支持 mysql
--with-libesmtp[=DIR] 让 kbsbbs 支持 libesmtp,DIR 为 libesmtp 库
文件所在目录,如果不指明则自动检测
--without-libesmtp 不让 kbsbbs 支持 libesmtp
--with-www=DIR 设定 kbsbbs web 子系统的安装目录,要求 DIR
目录下存在名为 html 或 htdocs 的子目录
--with-php[=DIR] 让 kbsbbs 找到 php 头文件所在目录,如果不
指明 DIR 则自动检测

其中 /home/bbs 赋值给了站点设置所需的 $BBSHOME 变量,而 fb2k-v2 则是使用了刚才默认的站点名。然后就可以安装了,这是一个有点漫长的过程

1
2
make
make install

由于此处由于是新建的 bbs 站点,还需要安装默认的站点文件

1
make install-home

注意今后修改代码编译后只需要执行 make installmake install-home 只需要
首次安装的时候执行,以后再执行将会覆盖掉之前 BBS 的所有数据!

sshbbsd 生成秘钥

即设置 ssh_host_key

1
2
3
cd /home/bbs/etc
touch sshd_config
ssh-keygen -t rsa1 -f ssh_host_key

这里提示我们输入口令时,我们默认为空,即双击 enter

修改 bbs 文件夹的属性

由于之前很多操作都是用 root 执行,可能 bbs 下很多文件的 owner 和 group 不一致,我们一并修改之

1
chown -R bbs:bbs /home/bbs

启动bbs

最后我们就可以启动我们本机上的 bbs 了

1
2
3
4
5
6
7
cd /home/bbs/bin
./miscd daemon
./bbslogd
./bbsd -p 23
./sshbbsd -p 22
cd /opt/lampp/bin
./apachectl start

然后telnet登陆本机

1
telnet 127.0.0.1

不出意外应该可以看到一下画面:

注意事项

写本篇博客时是第二次安装,仍发现几个问题,在此一并说明

  • 由于这里使用的是XAMPP,如果你是分别安装的Apache等,在1.4和1.11中,你的httpd.conf文件和apachectl文件路径可能和这里不一样,请搜索到自己Apache的安装路径,并执行。
  • 在1.11中启动bbs时,执行./miscd daemon命令时,可能遇到BUS error提示,此时重复执行一遍./miscd daemon命令即可。
  • 在1.11中执行./apachectl start命令时,可能报Adress already in use···的错误,此时说明默认的80端口被占用,可以使用netatat -lnp|grep 80命令查看被哪个进程占用,然后kill -pid结束进程,但是这里我试了试,好像是不管用的,说明应该是个僵尸进程,我们可以使用killall httpd杀死该进程,参数是进程名,这个应该就是httpd进程,然后我们再使用netatat -lnp|grep 80,应该80端口已经被释放了,然后使用/opt/lampp/lampp start,如果显示了Starting Apache…ok,则可以再使用./apachectl start命令,此时应该是ok的了。
  • 使用telnet登陆时,首先确保自己安装了telnet服务,如果你是将CentOS装在了虚拟机内,也可以从主机登陆,先确保windows开启了telnet登陆功能,然后在虚拟机中,先解决XAMPP外部访问受限问题,然后关闭CentOS防火墙(iptables stop),就可以从外部输入虚拟机的iptelnet登陆了。

结束语

这是本次参加Byr Team培训过程的一个小结,最后项目是基于nForum论坛源代码,在首页添加一个图片轮播的widget,虽然其中遇到很多困难,但最后总算还是完成了任务,也收获了很多,希望有时间也能总结一下期间的感悟,也希望以后有机会再写一遍关于nForum安装的文章。最后加上自己项目的一段录屏作纪念。

扩展阅读: