发信人: JulyClyde (七月), 信区: BBSMan_Dev
标  题: Debian版kbsbbs安装指南
发信站: 水木社区 (Wed Nov 30 11:23:38 2005), 转信

                  kbsbbs 在 Debian Linux 3.1 上的安装指南

    本文由 JulyClyde 创作,介绍了 Debian Linux 3.1 上 kbsbbs 的编译和安装。
    与以往安装方法不同的是,本文的方法尽可能使用 Debian 自带的软件,例如 
apache 和 libapache-mod-php4 等。

0. 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 界面支持才需要(自动安装其它图形库)

autoconf                如果从 cvs 下载源代码编译安装则必需
automake1.6或以上       如果从 cvs 下载源代码编译安装则必需
libtool                 如果从 cvs 下载源代码编译安装则必需
bison或byacc            有时候编译转信部分需要

libmysqlclient10-dev    安装Blog、通讯录需要
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 \
              --without-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库安装的情况。