$Id: INSTALL.debian 10174 2008-01-20 04:50:38Z fancy $ kbsbbs 在 Debian GNU/Linux 4.0 上的安装指南 本文介绍了 Debian GNU/Linux 4.0 上 kbsbbs 的编译和安装。 与以往安装方法不同的是,本文的方法尽可能使用 Debian 自带的软件,例如 apache2 和 libapache2-mod-php5 等。 0. ChangeLog 2008.01.13 fancyrabbit 修改并加入 svn。 2006.04.21 JulyClyde 修正了一些关于 MySQL 的错误。其实早就逐渐修正了,只不过今天趁着修 正加上了 ChangeLog 而已。 2005.11.29 JulyClyde 写了这个文档的初始版本。参考资料为郑州大学的包子写的 Debian 版安装 指南以及昨天晚上的实验经验。 2005.11.28 JulyClyde 在解放军信息工程大学做实验。 1. 需要的软件: zlib1g 系统自带 exim4 系统自带 zlib1g-dev 必需 autoconf 如果从 svn 下载源代码编译安装则必需 automake 如果从 svn 下载源代码编译安装则必需 libtool 如果从 svn 下载源代码编译安装则必需 libgmp3c2 选择 ssh 方式支持才需要 libgmp3-dev 选择 ssh 方式支持才需要 openssl 选择 pop3d 支持 pop3s 才需要 apache 选择 web 界面支持才需要 或 apache2 libapache-mod-php4 选择 web 界面支持才需要 或 libapache2-mod-php4 或 libapache-mod-php5 或 libapache2-mod-php5 php4-dev 选择 web 界面支持才需要(提供 php 的头文件) 或 php5-dev php4-gd 选择 web 界面支持才需要(自动安装其它图形库) 或 php5-gd php4-domxml 选择 web 界面支持才需要 bison 或 byacc 有时候编译转信部分需要 libmysqlclient15-dev 选择 Blog 等功能支持才需要 php4-mysql 或 php5-mysql 以上软件都可以直接用 apt-get 或 aptitude 安装。 2. 安装 本节介绍 kbsbbs 的 telnet/ssh/web 方式在 Debian Linux 4.0 上的安装。注意本 文后面给出的命令除了特别说明的之外都不需要 root 权限。 2.1 一些约定 $(BBSHOME) 表示 bbs 的安装目录,在本文中指定为 /home/bbs $(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 安装 Debian 建议使用直连的网络安装,或者使用 debian-40r2-i386-binary-1.iso 安装盘安装。 这样,在基本系统安装完之后,还会自动装上编译器,make 等工具。 如使用 debian-40r2-i386-businesscard.iso 或者 debian-40r2-i386-netinst.iso 请确保安装过程中重启动之后能够连接网络。 exim4 是 Debian 中默认的 MTA,可以伪装成 sendmail 程序运行,并且提供和 sendmail 兼容的功能,因此不需要再安装 sendmail 。 libgmp3 库可以使用 aptitude install libgmp3c2 libgmp3-dev 命令安装。 zlib1g-dev 库可以使用 aptitude install zlib1g-dev 命令安装。 注意 php4-dev/php5-dev 自动安装的 automake 包是 1.4 版,在安装转信部分时会 产生错误的 Makefile。安装 automake1.7 或以上版本之后要用 update-alternative 命 令将默认的 automake 设置为高版本的。 2.3 下载 kbsbbs 代码包 下载 kbsbbs 的源代码有两种方法,一种是通过 SVN 方式获取,另一种是下载每日 更新的 kbsbbs-snapshot 代码包。用 SVN 方式获取请参考 doc/README.svn 文件。 把 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 以 apache2 和 php5 为例说明,参照以下命令进行安装: aptitude install apache2 libapache2-mod-php5 aptitude install php5-dev php5-gd 如果使用 php4,以上步骤中需要修改的地方是: php4 的安装命令改成: aptitude install php4-dev php4-gd php4-domxml 依此类推。 2.5 安装 kbsbbs 同样切换到 $(SRCDIR) 目录,进入 kbsbbs 的源代码目录。 然后执行下面的一系列命令: ./configure --prefix=$(BBSHOME) --enable-site=fb2k-v2 \ --with-php --with-mysql --enable-ssh --enable-customizing make make install(用 root 执行) 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-php[=DIR] 让 kbsbbs 找到 php 安装目录,如果不指明 DIR 则自动检测 --enable-customizing 设置运行期更改系统设置的功能。这样站名可以统 一在 sysconf.ini 中设置;否则需要修改 site.h 3. 运行之前的配置 本节主要说明 ssh 方式和 web 方式的配置。 下面这些步骤有些需要 root 权限,为方便起见,直接切换到 root 用户。 3.1 ssh 方式 请参考 doc/INSTALL.ssh 文件。 懒人可以用如下命令产生最简单的可用的配置文件(不推荐): touch $(BBSHOME)/etc/sshd_config ssh-keygen -t rsa1 -f $(BBSHOME)/etc/ssh_host_key 以上命令需要安装 openssh-client 包。 3.2 web 方式 apache2 的配置文件为 /etc/apache2/apache2.conf,打开该文件, 把 User 和 Group 参数都修改为 bbs。 请把 KeepAlive 参数设为 Off。 建议加入 AddDefaultCharset gb2312 使用 apache 时,在其配置文件 /etc/apache/httpd.conf 中,确定 AddType application/x-httpd-php .php 这一行没有被注释掉(apache2 不需要检查此设置) 使用 apache2 时,在 /etc/apache2/sites-enabled/000-default 文件中,注释掉 RedirectMatch ^/$ /apache2-default/ 一行以去除默认的重定向(apache 不需要做此项设置) 如果使用下载 snapshot 包的方式获得源码,则 将 kbsbbs 源代码目录 bbs2www/html 下的文件复制到 /var/www/ 如果使用 SVN 方式获取源码,则 将 www2 模块 checkout 为 /var/www/ 目录 php5 的配置文件在 /etc/php5/apache2/php.ini,打开该文件, 将 short_open_tag 的值修改为 Off,magic_quotes_gpc 也应该设置成 Off。 将 session.save_path 目录(如 /var/lib/php5/)设置成 bbs 用户可写。 在 /etc/php5/conf.d/ 目录里面建立 kbs.ini 文件,内容只有一行: extension=libphpbbslib.so 4. 运行 注意只有需要开 < 1024 端口号服务的程序需要用 root 来启动,具体来说,bbsd (23 端口),sshbbsd (22 端口) 需要用 root 身份来启动;另外,apache 服务需要用 root 身份启动。 4.1 运行 kbsbbs cd $(BBSHOME)/bin ./miscd daemon ./bbslogd ./bbsd -p 23 ./sshbbsd -p 22 然后 telnet localhost,注册 SYSOP 和 guest 两个帐号。 4.2 运行 apache2 /etc/init.d/apache2 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 目录中,内容如下: 然后在浏览器中输入地址 http://server_address/info.php,查看输出页面,如果 页面中没有 kbs_bbs support enabled 这一行,说明 kbsbbs 的 phpbbslib extension 没有起作用。另外在这里也可以看到 gd 库和 domxml 库安装的情况。 另外 apache 的 error log 也可能有有用的信息:/var/log/apache2/error.log。 其它问题请到水木社区 (newsmth.net) BBSMan_Dev 版讨论。