kbsbbs 在 Debian Linux 3.1 上的安装指南
本文由 JulyClyde 创作,介绍了 Debian Linux 3.1 上 kbsbbs 的编译和安装。
与以往安装方法不同的是,本文的方法尽可能使用 Debian 自带的软件,例如
apache 和 libapache-mod-php4 等。
0. ChangeLog
2006.04.21
JulyClyde修正了一些关于mysql的错误。其实早就逐渐修正了,只不过今天趁着修正加上了ChangeLog而已。
2005.11.29
JulyClyde写了这个文档的初始版本。参考资料为郑州大学的包子写的debian版安装指
南以及昨天晚上的实验经验。
2005.11.28
JulyClyde在解放军信息工程大学做实验。
1. 需要的软件:
zlib1g 系统自带
exim4 系统自带
zlib1g-dev 必须
libgmp3 选择 ssh 方式支持才需要
libgmp3-dev 选择 ssh 方式支持才需要
apache 选择 web 界面支持才需要
或apache2
libapache-mod-php4 选择 web 界面支持才需要
或libapache2-mod-php4
php4-dev 选择 web 界面支持才需要(提供php4的头文件)
php4-gd 选择 web 界面支持才需要(自动安装其它图形库)
php4-domxml 选择 web 界面支持才需要
autoconf 如果从 cvs 下载源代码编译安装则必需
automake1.6或以上 如果从 cvs 下载源代码编译安装则必需
libtool 如果从 cvs 下载源代码编译安装则必需
bison或byacc 有时候编译转信部分需要
libmysqlclient10-dev 安装Blog、通讯录需要
php4-mysql
2. 安装
本节介绍 kbsbbs 的 telnet/ssh/web 方式在 Debian Linux 3.1 上的安装。注意本
文后面给出的命令除了特别说明的之外都不需要 root 权限。
2.1 一些约定
(略)
2.2 安装 Debian
建议使用直连的网络安装,或者使用debian-31r0a-i386-binary-1.iso安装盘安装。
这样,在基本系统安装完之后,还会自动装上编译器、make等工具。
如果使用debian-31r0a-i386-businesscard.iso或者debian-31r0a-i386-netinst.is
o请确保安装过程中重启动之后能够连接网络。
exim4是 Debian 中默认的 MTA,可以伪装成 sendmail 程序运行,并且提供和
sendmail兼容的功能,因此不需要再安装sendmail。
libgmp3 库可以使用
aptitude install libgmp3 libgmp3-dev
命令安装。
zlib1g-dev 库可以使用
aptitude install zlib1g-dev
命令安装。
注意php4-dev自动安装的automake包是1.4版,在安装转信部分时会产生错误的Makefil
e。安装automake1.6或以上版本之后要用update-alternative命令将默认的automake设置为
高版本的。
2.3 下载 kbsbbs 的代码包
下载 kbsbbs 的源代码有两种方法,一种是通过 cvs 方式获取,另一种是下载每日
更新的kbsbbs-snapshot 代码包。用 cvs 方式下载源代码请参考 doc/README.cvs文件。
把 kbsbbs的代码包放在 $(SRCDIR) 目录,然后解开。
注意在 site/ 子目录里面有名字为 fb2k-v2.c 和 fb2k-v2.h 的文件,这两个文件
是站点定制文件,本文以这两个文件为例子进行讲解。注意验证 fb2k-v2.h 文件中
BBSUID 和 BBSGID 与本地系统的 bbs 用户的 uid gid 是否一致,如果不一致请调整到
一致。一般来说,Debian上后创建的用户的UID都在1000号以上,和默认的500不同,请注
意修改。
用如下命令可以验证这些 ID 是否一致:
grep "^#define.*BBSUID" fb2k-v2.h
grep "^#define.*BBSGID" fb2k-v2.h
grep "^bbs:" /etc/passwd
注:如果看不懂命令执行的结果,请先阅读 C 语言及 Unix 方面的书籍,再尝试安
装 kbsbbs。
2.4 安装 apache 和 php
aptitude install apache libapache-mod-php4
aptitude install php4-dev php4-gd php4-domxml
[补充] 如果使用 apache2,以上步骤中需要修改的地方是:
apache 的安装命令改成:
aptitude install apache2 libapache2-mod-php4
(php5未实验)
2.5 安装 kbsbbs
同样切换到 $(SRCDIR) 目录,进入 kbsbbs 的源代码目录。
然后执行下面的一系列命令:
./configure --prefix=$(BBSHOME) --enable-site=fb2k-v2 \
--with-www=/var/www --with-php=/usr/include/php4 \
--with-mysql --enable-ssh --enable-customizing
make
make install
make install-home
chown -R bbs:bbs $(BBSHOME) (最好用 root 执行)
注意,这里最后两个命令的作用是把源代码 bbshome 目录下的重要数据文件复制到
$(BBSHOME) 下去,创建必要的子目录并确保设置正确的权限。以后更改源代码的话,只
需要在源代码目录下执行 make; make install; 即可,千万不要执行make install-home
,因为执行的话就会丢失 bbs 数据!
注:一些常用 configure 参数说明。
--enable-site=SITE 告诉 kbsbbs 采用名为 SITE.h 和 SITE.c 的站
点定制文件,这两个文件必须放在 site/ 目录
--with-mysql[=DIR] 让 kbsbbs 支持 mysql,DIR 为 mysql 库文件
所在目录,如果不指明则自动检测
--without-mysql 不让 kbsbbs 支持 mysql
--with-www=DIR 设定 kbsbbs web 子系统的安装目录,要求 DIR
目录下存在名为 html 或 htdocs 的子目录
--with-php[=DIR] 让 kbsbbs 找到 php 头文件所在目录,如果不
指明 DIR 则自动检测
这里的检测机制似乎有问题,一般都检测不到。
--enable-customizing 设置运行期更改系统设置的功能。这样站名可以统一
在sysconf.ini中设置;否则需要再修改site.h
3. 运行之前的配置
本节主要说明 ssh 方式和 web 方式的配置。
3.1 ssh 方式
请参考 doc/INSTALL.ssh 文件。
懒人可以用如下命令产生最简单的可用的配置文件(不推荐):
touch $(BBSHOME)/etc/sshd_config
ssh-keygen -t rsa1 -f $(BBSHOME)/etc/ssh_host_key
3.2 web 方式
apache 的配置文件为 /etc/apache/httpd.conf,打开该文件,找到
#AddType application/x-httpd-php .php
这一行,把#号去掉
apache2不需要设置。
把 User 和 Group 参数都修改为 bbs。
请把 KeepAlive 参数设为 Off.
建议加入 AddDefaultCharset gb2312.
将 kbsbbs 源代码目录 bbs2www/html 下的文件复制到 /var/www/,并执行
chown -R bbs:bbs /var/www
php 的配置文件在/etc/php4/apache/。编辑 php.ini 文件,将 short_open_tag 的
值修改为 off,magic_quotes_gpc 也应该设置成 off。
(1) 执行命令
cd /usr/lib/php4/20020429
ln -s /var/www/libexec/bbs/libphpbbslib.so
(2) 修改 php.ini 文件,加入一行
extension=libphpbbslib.so
(注意这里和原版安装指南不一样,因为我试验似乎extension_dir只能有一个,而默认
的gd等模块就在这里,因此把符号链接建到php目录里面去了)
4. 运行
注意只有需要开 < 1024 端口号服务的程序需要用 root 来启动,具体来说,bbsd
(23端口),sshbbsd (22端口),apache (80端口) 需要用 root 身份来启动。
4.1 运行 kbsbbs
cd $(BBSHOME)/bin
./miscd daemon
./bbslogd
./bbsd -p 23
./sshbbsd -p 22
然后 telnet localhost,注册 SYSOP 和 guest 两个帐号。
4.2 运行 apache
/etc/init.d/apache restart
5. 其他(未经实验)
pop3s的支持在 configure 的时候加上 --with-openssl[=path],生成的 newpop3d
将自动包含 pop3 和 pop3s 的支持。pop3s 支持需要一个证书,可以用 openssl 生成并
放在$(BBSHOME)/etc/bbs.crt 和 $(BBSHOME)/etc/bbs.key,比如:
openssl genrsa -out $(BBSHOME)/etc/bbs.key
openssl req -x509 -days 3650 -new -key bbs.key -out $(BBSHOME)/etc/bbs.crt
转信支持请参考 doc/INSTALL.innbbsd 文档。
bbs 用户还需要一个 crontab 以便完成一些日常事务,请参考 doc/README.SYSOP。
6. 出现故障
下面的方法可用来检查 kbsbbs 的 phpbbslib extension 是否起作用。
编写 info.php 文件,置于 /var/www/html 目录中,内容如下:
<?php
phpinfo();
?>
然后在浏览器中输入地址
http://server_address/info.php,查看输出页面,如果
页面中没有 smth_bbs support enabled 这一行,说明 kbsbbs 的 phpbbslibextension
没有起作用。另外在这里也可以看到gd库和domxml库安装的情况。
--
修改:JulyClyde FROM 218.28.14.*
FROM 218.28.14.*