$Id$
水木代码安装指南
本文由 KBS 开发组负责维护,介绍了 kbs bbs 在类 Unix 操作系统(包括 Linux、
FreeBSD、Solaris 8/9 for X86/SPARC 等)上的编译和安装,主要讨论用完全定制的方
式进行安装。
0. ChangeLog
2005.8.19
flyriver 使命名约定前后一致,另外加入一些婆婆妈妈的说明
2004.7.20
flyriver v1.2.1 更新 libesmtp 的说明,加入常用 configure 参数说明
2004.1.1
flyriver v1.2 重写这个安装文档
2002.7.31
COMMAN 加入对 ssh 部分的说明, 修正 pop3s 的说明
2002.7.27
KCN v1.1 加入pop3s,ssh部分的说明
2002.6.29
flyriver v1.0
1. 需要的软件
zlib 必须
libesmtp > 0.8 可选
autoconf-2.57 可选 如果从 svn 下载源代码编译安装则必需
automake-1.6.X 可选 如果从 svn 下载源代码编译安装则必需
libtool-1.4.X 可选 如果从 svn 下载源代码编译安装则必需
apache_1.3.X 可选 选择 web 界面支持才需要
or apache2
php >= 4.3.0 可选 选择 web 界面支持才需要
libxml2 可选 选择 web 界面支持才需要
libiconv 可选 选择 web 界面支持才需要
libjpeg 可选 选择 web 界面支持才需要
libpng 可选 选择 web 界面支持才需要
freetype2 可选 选择 web 界面支持才需要
gd 可选 选择 web 界面支持才需要
openssl 可选 选择 pop3d 支持 pop3s 才需要
gmp-4.X 可选 选择 ssh 方式支持才需要
mysql 可选 选择个人文集等功能支持才需要
2. 安装
本节介绍 kbsbbs 的 telnet/ssh/web 方式在类 Unix 操作系统上的安装。注意
本文后面给出的命令除了特别说明的之外都不需要 root 权限。
2.1 一些约定
$(BBSHOME) 表示 bbs 的安装目录,在本文中指定为 /home/bbs
$(WWWHOME) 表示 apache 的安装目录,在本文中指定为 /home/www
$(PHPHOME) 表示 php 的安装目录,在本文中指定为 /home/www/php
$(SRCDIR) 表示存放 kbsbbs、apache 和 php 源代码的目录,可自己设
定一个,例如放在自己 home 目录的某个子目录下
注意,这里提到的 $(BBSHOME) 等单词并不是 Makefile 或其他脚本语言的变量,
仅仅是一种命名约定。在后面出现 $(BBSHOME) 等单词的地方,应把它们替换成对应的
实际名字,而不是直接输入 $(BBSHOME)。
例 1:
如果本文中有一个命令是这样的:
./configure --prefix=$(BBSHOME)
那么你不能直接在 shell 里面原封不动的输入上述命令,而应该根据你的实际情
况,比如你想把 kbsbbs 安装在 /home/bbs 目录,那么 $(BBSHOME) 就被约定为
/home/bbs,于是在实际执行上述命令时,应把 $(BBSHOME) 替换为 /home/bbs,上述
命令实际是指:
./configure --prefix=/home/bbs
例 2:
如果本文中有一句话是这样的:把文件复制到 $(BBSHOME)/bin 目录。假设
$(BBSHOME) 还是被约定为 /home/bbs,那么“把文件复制到 $(BBSHOME)/bin 目录”
的意思是“把文件复制到 /home/bbs/bin 目录”。
在开始安装以前,需要在系统内创建 bbs 用户和组,上述相关目录如果没有的话应
该手工创建,并设置 bbs 用户为目录属主并可以读写。
2.2 安装 libesmtp 和 gmp
libesmtp 建议从源代码编译安装,configure 的时候建议加上 --disable-pthreads
参数,但不加也可以,然后运行 make 和 make install 命令。
注:从 kbsbbs-1.2.1 版本开始,libesmtp 不再是必须安装的了,但如果不使用
libesmtp 的话,则系统中必须安装有 sendmail 程序。
gmp 可以直接使用操作系统自带的软件包。
2.3 下载 kbsbbs、apache 和 php 的代码包
下载 kbsbbs 的源代码有两种方法,一种是通过 svn 方式获取,另一种是下载每
日更新的 kbsbbs-snapshot 代码包。用 svn 方式下载源代码请参考 doc/README.svn
文件。把 kbsbbs、apache 和 php 的代码包放在 $(SRCDIR) 目录,然后分别解开。
注意在 site/ 子目录里面有名字为 fb2k-v2.c 和 fb2k-v2.h 的文件,这两个文件
是站点定制文件,本文以这两个文件为例子进行讲解。注意验证 fb2k-v2.h 文件中
BBSUID 和 BBSGID 与本地系统的 bbs 用户的 uid gid 是否一致,如果不一致请调整到
一致。
用如下命令可以验证这些 ID 是否一致:
grep "^#define.*BBSUID" fb2k-v2.h
grep "^#define.*BBSGID" fb2k-v2.h
grep "^bbs:" /etc/passwd
注:如果看不懂命令执行的结果,请先阅读 C 语言及 Unix 方面的书籍,再尝试安
装 kbsbbs。
2.4 安装 apache 和 php
首先切换目录到 $(SRCDIR)。为了节省篇幅,下面直接以命令表示。
cd apache_1.3.X
./configure --prefix=$(WWWHOME) --enable-module=so
make
make install
cd ../php-4.3.X
./configure --prefix=$(PHPHOME) \
--with-apxs=$(WWWHOME)/bin/apxs --disable-debug \
--enable-pic --disable-rpath --enable-inline-optimization \
--with-dom --with-gd --with-freetype-dir \
--with-png-dir --with-iconv --with-jpeg-dir --with-zlib \
--enable-track-vars
make
make install
[补充] 如果使用 apache2,以上步骤中需要修改的地方是:
apache 的 configure 命令改成:
./configure --prefix=$(WWWHOME) --enable-so
php 的 configure 命令里面的 --with-apxs=$(WWWHOME)/bin/apxs 改成:
--with-apxs2=$(WWWHOME)/bin/apxs
[补充] php5 不默认编译 mysql 支持,所以如果需要 mysql 支持的话,应该
在 php 的 configure 命令中加入 --with-mysql
[补充] 在64位下编译的时候有时候会碰到找不到64位库的问题。
在 php 的 configure 命令中加入 --with-libdir=lib64 强制它在链接lib64
目录下的库
2.5 安装 kbsbbs
同样切换到 $(SRCDIR) 目录,进入 kbsbbs 的源代码目录。
然后执行下面的一系列命令:
./configure --prefix=$(BBSHOME) --enable-site=fb2k-v2 \
--with-php=$(PHPHOME) --with-mysql --enable-ssh --enable-ssl
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-libesmtp[=DIR] 让 kbsbbs 支持 libesmtp,DIR 为 libesmtp 库
文件所在目录,如果不指明则自动检测
--without-libesmtp 不让 kbsbbs 支持 libesmtp
--with-php[=DIR] 让 kbsbbs 找到 php 的安装目录,如果不
指明 DIR 则自动检测
2.6[不推荐] 将 phpbbslib 放入 php 并再次编译安装 php
同样切换到 $(SRCDIR) 目录,进入 php 的源代码目录。
mkdir ext/kbs_bbs
然后将 kbsbbs 源代码目录 php/ 下的 config.m4、php_kbs_bbs.h
和所有的 .c 文件复制到 ext/kbs_bbs 目录,然后执行:
./buildconf --force
再次编译安装 php 重复 2.4 节中的步骤即可,但 php 的 configure 命令应该
附加上 --enable-kbs_bbs 的参数。
注:我们不推荐执行步骤 2.6,但在某些系统上 (比如 cygwin),要把
phpbbslib 编译成可以动态执行的模块比较困难,则 2.6 就是必须执行的步骤了。
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 的配置文件为 $(WWWHOME)/conf/httpd.conf,编辑该文件,加入
AddType application/x-httpd-php .php
修改 Port 参数为 80,把 User 和 Group 参数都修改为 bbs。
请把 KeepAlive 参数设为 Off.
如果使用 apache2,建议加入 AddDefaultCharset gb2312.
如果你使用的是 snapshot:
将 kbsbbs 源代码目录 bbs2www/html 下的文件复制到 $(WWWHOME)/htdocs。
如果你使用的是 svn:
在 $(WWWHOME) 目录下 checkout www2 模块,并将 www2 目录改名为 htdocs。
php 的配置文件可以从 php 源代码目录得到,将 php.ini-dist 复制为
$(PHPHOME)/lib/php.ini,然后编辑 php.ini 文件,将 short_open_tag
的值修改为 off,magic_quotes_gpc 也应该设置成 off。
如果没有执行上面的 2.6 步骤,那么再执行下面的操作:
修改 php.ini 文件,将
extension_dir = ./
注释掉,再加入一行
extension=libphpbbslib.so
PHP 将会使用默认的扩展库路径,可以用 php-config --extention-dir 查看。
4. 运行
注意只有需要开 < 1024 端口号服务的程序需要用 root 来启动,具体来说,
bbsd (23端口),sshbbsd (22端口),apachectl (80端口) 需要用 root 身份来启动。
4.1 运行 kbsbbs
cd $(BBSHOME)/bin
./miscd daemon
./bbslogd
./bbsd -p 23
./sshbbsd -p 22
然后 telnet localhost,注册 SYSOP 和 guest 两个帐号。
4.2 运行 apache
$(WWWHOME)/bin/apachectl start
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。
其它问题请到 水木社区(newsmth.net) 的 BBSMan_Dev 版面讨论。
最近更新记录
<pre>/trunk/kbs_bbs/doc/INSTALL,2</pre>
