| 1 | $Id$ |
|---|
| 2 | |
|---|
| 3 | kbsbbs 在 Debian GNU/Linux 4.0 上的安装指南 |
|---|
| 4 | |
|---|
| 5 | 本文介绍了 Debian GNU/Linux 4.0 上 kbsbbs 的编译和安装。 |
|---|
| 6 | 与以往安装方法不同的是,本文的方法尽可能使用 Debian 自带的软件,例如 |
|---|
| 7 | apache2 和 libapache2-mod-php5 等。 |
|---|
| 8 | |
|---|
| 9 | 0. ChangeLog |
|---|
| 10 | 2008.01.13 |
|---|
| 11 | fancyrabbit 修改并加入 svn。 |
|---|
| 12 | |
|---|
| 13 | 2006.04.21 |
|---|
| 14 | JulyClyde 修正了一些关于 MySQL 的错误。其实早就逐渐修正了,只不过今天趁着修 |
|---|
| 15 | 正加上了 ChangeLog 而已。 |
|---|
| 16 | |
|---|
| 17 | 2005.11.29 |
|---|
| 18 | JulyClyde 写了这个文档的初始版本。参考资料为郑州大学的包子写的 Debian 版安装 |
|---|
| 19 | 指南以及昨天晚上的实验经验。 |
|---|
| 20 | |
|---|
| 21 | 2005.11.28 |
|---|
| 22 | JulyClyde 在解放军信息工程大学做实验。 |
|---|
| 23 | |
|---|
| 24 | 1. 需要的软件: |
|---|
| 25 | zlib1g 系统自带 |
|---|
| 26 | exim4 系统自带 |
|---|
| 27 | |
|---|
| 28 | zlib1g-dev 必需 |
|---|
| 29 | autoconf 如果从 svn 下载源代码编译安装则必需 |
|---|
| 30 | automake 如果从 svn 下载源代码编译安装则必需 |
|---|
| 31 | libtool 如果从 svn 下载源代码编译安装则必需 |
|---|
| 32 | |
|---|
| 33 | libgmp3c2 选择 ssh 方式支持才需要 |
|---|
| 34 | libgmp3-dev 选择 ssh 方式支持才需要 |
|---|
| 35 | openssl 选择 pop3d 支持 pop3s 才需要 |
|---|
| 36 | |
|---|
| 37 | apache 选择 web 界面支持才需要 |
|---|
| 38 | 或 apache2 |
|---|
| 39 | libapache-mod-php4 选择 web 界面支持才需要 |
|---|
| 40 | 或 libapache2-mod-php4 |
|---|
| 41 | 或 libapache-mod-php5 |
|---|
| 42 | 或 libapache2-mod-php5 |
|---|
| 43 | |
|---|
| 44 | php4-dev 选择 web 界面支持才需要(提供 php 的头文件) |
|---|
| 45 | 或 php5-dev |
|---|
| 46 | php4-gd 选择 web 界面支持才需要(自动安装其它图形库) |
|---|
| 47 | 或 php5-gd |
|---|
| 48 | php4-domxml 选择 web 界面支持才需要 |
|---|
| 49 | |
|---|
| 50 | bison 或 byacc 有时候编译转信部分需要 |
|---|
| 51 | |
|---|
| 52 | libmysqlclient15-dev 选择 Blog 等功能支持才需要 |
|---|
| 53 | php4-mysql |
|---|
| 54 | 或 php5-mysql |
|---|
| 55 | |
|---|
| 56 | 以上软件都可以直接用 apt-get 或 aptitude 安装。 |
|---|
| 57 | |
|---|
| 58 | 2. 安装 |
|---|
| 59 | 本节介绍 kbsbbs 的 telnet/ssh/web 方式在 Debian Linux 4.0 上的安装。注意本 |
|---|
| 60 | 文后面给出的命令除了特别说明的之外都不需要 root 权限。 |
|---|
| 61 | |
|---|
| 62 | 2.1 一些约定 |
|---|
| 63 | $(BBSHOME) 表示 bbs 的安装目录,在本文中指定为 /home/bbs |
|---|
| 64 | $(SRCDIR) 表示存放 kbsbbs、apache 和 php 源代码的目录,可自己设 |
|---|
| 65 | 定一个,例如放在自己 home 目录的某个子目录下 |
|---|
| 66 | |
|---|
| 67 | 注意,这里提到的 $(BBSHOME) 等单词并不是 Makefile 或其他脚本语言的变量, |
|---|
| 68 | 仅仅是一种命名约定。在后面出现 $(BBSHOME) 等单词的地方,应把它们替换成对应的 |
|---|
| 69 | 实际名字,而不是直接输入 $(BBSHOME)。 |
|---|
| 70 | |
|---|
| 71 | 例 1: |
|---|
| 72 | 如果本文中有一个命令是这样的: |
|---|
| 73 | ./configure --prefix=$(BBSHOME) |
|---|
| 74 | |
|---|
| 75 | 那么你不能直接在 shell 里面原封不动的输入上述命令,而应该根据你的实际情 |
|---|
| 76 | 况,比如你想把 kbsbbs 安装在 /home/bbs 目录,那么 $(BBSHOME) 就被约定为 |
|---|
| 77 | /home/bbs,于是在实际执行上述命令时,应把 $(BBSHOME) 替换为 /home/bbs,上述 |
|---|
| 78 | 命令实际是指: |
|---|
| 79 | ./configure --prefix=/home/bbs |
|---|
| 80 | |
|---|
| 81 | 例 2: |
|---|
| 82 | 如果本文中有一句话是这样的:把文件复制到 $(BBSHOME)/bin 目录。假设 |
|---|
| 83 | $(BBSHOME) 还是被约定为 /home/bbs,那么“把文件复制到 $(BBSHOME)/bin 目录” |
|---|
| 84 | 的意思是“把文件复制到 /home/bbs/bin 目录”。 |
|---|
| 85 | |
|---|
| 86 | 在开始安装以前,需要在系统内创建 bbs 用户和组,上述相关目录如果没有的话应 |
|---|
| 87 | 该手工创建,并设置 bbs 用户为目录属主并可以读写。 |
|---|
| 88 | |
|---|
| 89 | 2.2 安装 Debian |
|---|
| 90 | 建议使用直连的网络安装,或者使用 debian-40r2-i386-binary-1.iso 安装盘安装。 |
|---|
| 91 | 这样,在基本系统安装完之后,还会自动装上编译器,make 等工具。 |
|---|
| 92 | 如使用 debian-40r2-i386-businesscard.iso 或者 debian-40r2-i386-netinst.iso |
|---|
| 93 | 请确保安装过程中重启动之后能够连接网络。 |
|---|
| 94 | |
|---|
| 95 | exim4 是 Debian 中默认的 MTA,可以伪装成 sendmail 程序运行,并且提供和 |
|---|
| 96 | sendmail 兼容的功能,因此不需要再安装 sendmail 。 |
|---|
| 97 | |
|---|
| 98 | libgmp3 库可以使用 |
|---|
| 99 | aptitude install libgmp3c2 libgmp3-dev |
|---|
| 100 | 命令安装。 |
|---|
| 101 | zlib1g-dev 库可以使用 |
|---|
| 102 | aptitude install zlib1g-dev |
|---|
| 103 | 命令安装。 |
|---|
| 104 | |
|---|
| 105 | 注意 php4-dev/php5-dev 自动安装的 automake 包是 1.4 版,在安装转信部分时会 |
|---|
| 106 | 产生错误的 Makefile。安装 automake1.7 或以上版本之后要用 update-alternative 命 |
|---|
| 107 | 令将默认的 automake 设置为高版本的。 |
|---|
| 108 | |
|---|
| 109 | 2.3 下载 kbsbbs 代码包 |
|---|
| 110 | 下载 kbsbbs 的源代码有两种方法,一种是通过 SVN 方式获取,另一种是下载每日 |
|---|
| 111 | 更新的 kbsbbs-snapshot 代码包。用 SVN 方式获取请参考 doc/README.svn 文件。 |
|---|
| 112 | 把 kbsbbs 的代码包放在 $(SRCDIR) 目录,然后解开。 |
|---|
| 113 | |
|---|
| 114 | 注意在 site/ 子目录里面有名字为 fb2k-v2.c 和 fb2k-v2.h 的文件,这两个文件 |
|---|
| 115 | 是站点定制文件,本文以这两个文件为例子进行讲解。注意验证 fb2k-v2.h 文件中 |
|---|
| 116 | BBSUID 和 BBSGID 与本地系统的 bbs 用户的 uid gid 是否一致,如果不一致请调整到 |
|---|
| 117 | 一致。一般来说,Debian 上创建的用户的 UID 都在 1000 号以上,和默认的 500 不同, |
|---|
| 118 | 请注意修改。 |
|---|
| 119 | |
|---|
| 120 | 用如下命令可以验证这些 ID 是否一致: |
|---|
| 121 | grep "^#define.*BBSUID" fb2k-v2.h |
|---|
| 122 | grep "^#define.*BBSGID" fb2k-v2.h |
|---|
| 123 | grep "^bbs:" /etc/passwd |
|---|
| 124 | |
|---|
| 125 | 注:如果看不懂命令执行的结果,请先阅读 C 语言及 Unix 方面的书籍,再尝试安 |
|---|
| 126 | 装 kbsbbs。 |
|---|
| 127 | |
|---|
| 128 | 2.4 安装 apache 和 php |
|---|
| 129 | 以 apache2 和 php5 为例说明,参照以下命令进行安装: |
|---|
| 130 | aptitude install apache2 libapache2-mod-php5 |
|---|
| 131 | aptitude install php5-dev php5-gd |
|---|
| 132 | |
|---|
| 133 | 如果使用 php4,以上步骤中需要修改的地方是: |
|---|
| 134 | php4 的安装命令改成: |
|---|
| 135 | aptitude install php4-dev php4-gd php4-domxml |
|---|
| 136 | 依此类推。 |
|---|
| 137 | |
|---|
| 138 | 2.5 安装 kbsbbs |
|---|
| 139 | 同样切换到 $(SRCDIR) 目录,进入 kbsbbs 的源代码目录。 |
|---|
| 140 | |
|---|
| 141 | 然后执行下面的一系列命令: |
|---|
| 142 | ./configure --prefix=$(BBSHOME) --enable-site=fb2k-v2 \ |
|---|
| 143 | --with-php --with-mysql --enable-ssh --enable-customizing |
|---|
| 144 | make |
|---|
| 145 | make install(用 root 执行) |
|---|
| 146 | |
|---|
| 147 | make install-home |
|---|
| 148 | chown -R bbs:bbs $(BBSHOME) (用 root 执行) |
|---|
| 149 | |
|---|
| 150 | 注意,这里最后两个命令的作用是把源代码 bbshome 目录下的重要数据文件复制到 |
|---|
| 151 | $(BBSHOME) 下去,创建必要的子目录并确保设置正确的权限。以后更改源代码的话,只 |
|---|
| 152 | 需要在源代码目录下执行 make; make install 即可,千万不要执行 make install-home |
|---|
| 153 | ,因为执行的话就会丢失 bbs 数据! |
|---|
| 154 | |
|---|
| 155 | 注:一些常用 configure 参数说明。 |
|---|
| 156 | --enable-site=SITE 告诉 kbsbbs 采用名为 SITE.h 和 SITE.c 的站 |
|---|
| 157 | 点定制文件,这两个文件必须放在 site/ 目录 |
|---|
| 158 | --with-mysql[=DIR] 让 kbsbbs 支持 MySQL,DIR 为 MySQL 库文件 |
|---|
| 159 | 所在目录,如果不指明则自动检测 |
|---|
| 160 | --without-mysql 不让 kbsbbs 支持 MySQL |
|---|
| 161 | --with-php[=DIR] 让 kbsbbs 找到 php 安装目录,如果不指明 DIR |
|---|
| 162 | 则自动检测 |
|---|
| 163 | --enable-customizing 设置运行期更改系统设置的功能。这样站名可以统 |
|---|
| 164 | 一在 sysconf.ini 中设置;否则需要修改 site.h |
|---|
| 165 | |
|---|
| 166 | 3. 运行之前的配置 |
|---|
| 167 | 本节主要说明 ssh 方式和 web 方式的配置。 |
|---|
| 168 | 下面这些步骤有些需要 root 权限,为方便起见,直接切换到 root 用户。 |
|---|
| 169 | |
|---|
| 170 | 3.1 ssh 方式 |
|---|
| 171 | 请参考 doc/INSTALL.ssh 文件。 |
|---|
| 172 | 懒人可以用如下命令产生最简单的可用的配置文件(不推荐): |
|---|
| 173 | touch $(BBSHOME)/etc/sshd_config |
|---|
| 174 | ssh-keygen -t rsa1 -f $(BBSHOME)/etc/ssh_host_key |
|---|
| 175 | 以上命令需要安装 openssh-client 包。 |
|---|
| 176 | |
|---|
| 177 | 3.2 web 方式 |
|---|
| 178 | apache2 的配置文件为 /etc/apache2/apache2.conf,打开该文件, |
|---|
| 179 | 把 User 和 Group 参数都修改为 bbs。 |
|---|
| 180 | 请把 KeepAlive 参数设为 Off。 |
|---|
| 181 | 建议加入 AddDefaultCharset gb2312 |
|---|
| 182 | |
|---|
| 183 | 使用 apache 时,在其配置文件 /etc/apache/httpd.conf 中,确定 |
|---|
| 184 | AddType application/x-httpd-php .php |
|---|
| 185 | 这一行没有被注释掉(apache2 不需要检查此设置) |
|---|
| 186 | |
|---|
| 187 | 使用 apache2 时,在 /etc/apache2/sites-enabled/000-default 文件中,注释掉 |
|---|
| 188 | RedirectMatch ^/$ /apache2-default/ |
|---|
| 189 | 一行以去除默认的重定向(apache 不需要做此项设置) |
|---|
| 190 | |
|---|
| 191 | 如果使用下载 snapshot 包的方式获得源码,则 |
|---|
| 192 | 将 kbsbbs 源代码目录 bbs2www/html 下的文件复制到 /var/www/ |
|---|
| 193 | 如果使用 SVN 方式获取源码,则 |
|---|
| 194 | 将 www2 模块 checkout 为 /var/www/ 目录 |
|---|
| 195 | |
|---|
| 196 | php5 的配置文件在 /etc/php5/apache2/php.ini,打开该文件, |
|---|
| 197 | 将 short_open_tag 的值修改为 Off,magic_quotes_gpc 也应该设置成 Off。 |
|---|
| 198 | 将 session.save_path 目录(如 /var/lib/php5/)设置成 bbs 用户可写。 |
|---|
| 199 | 在 /etc/php5/conf.d/ 目录里面建立 kbs.ini 文件,内容只有一行: |
|---|
| 200 | extension=libphpbbslib.so |
|---|
| 201 | |
|---|
| 202 | 4. 运行 |
|---|
| 203 | 注意只有需要开 < 1024 端口号服务的程序需要用 root 来启动,具体来说,bbsd |
|---|
| 204 | (23 端口),sshbbsd (22 端口) 需要用 root 身份来启动;另外,apache 服务需要用 |
|---|
| 205 | root 身份启动。 |
|---|
| 206 | |
|---|
| 207 | 4.1 运行 kbsbbs |
|---|
| 208 | cd $(BBSHOME)/bin |
|---|
| 209 | ./miscd daemon |
|---|
| 210 | ./bbslogd |
|---|
| 211 | ./bbsd -p 23 |
|---|
| 212 | ./sshbbsd -p 22 |
|---|
| 213 | |
|---|
| 214 | 然后 telnet localhost,注册 SYSOP 和 guest 两个帐号。 |
|---|
| 215 | |
|---|
| 216 | 4.2 运行 apache2 |
|---|
| 217 | /etc/init.d/apache2 restart |
|---|
| 218 | |
|---|
| 219 | 5. 其它 |
|---|
| 220 | pop3s 的支持在 configure 的时候加上 --with-openssl[=path],生成的 newpop3d |
|---|
| 221 | 将自动包含 pop3 和 pop3s 的支持。pop3s 支持需要一个证书,可以用 openssl 生成并 |
|---|
| 222 | 放在$(BBSHOME)/etc/bbs.crt 和 $(BBSHOME)/etc/bbs.key,比如: |
|---|
| 223 | openssl genrsa -out $(BBSHOME)/etc/bbs.key |
|---|
| 224 | openssl req -x509 -days 3650 -new -key bbs.key -out $(BBSHOME)/etc/bbs.crt |
|---|
| 225 | |
|---|
| 226 | 转信支持请参考 doc/INSTALL.innbbsd 文档。 |
|---|
| 227 | |
|---|
| 228 | bbs 用户还需要一个 crontab 以便完成一些日常事务,请参考 doc/README.SYSOP。 |
|---|
| 229 | |
|---|
| 230 | 某些系统默认共享内存太小(比如 Ubuntu),会导致启动 miscd 时 Bus Error,用 |
|---|
| 231 | 下面的办法调大(用 root 执行): |
|---|
| 232 | $ echo 268435456 > /proc/sys/kernel/shmmax |
|---|
| 233 | $ echo "kernel.shmmax = 268435456" >> /etc/sysctl.conf |
|---|
| 234 | |
|---|
| 235 | 6. 出现故障 |
|---|
| 236 | 下面的方法可用来检查 kbsbbs 的 phpbbslib extension 是否起作用。 |
|---|
| 237 | |
|---|
| 238 | 编写 info.php 文件,置于 /var/www 目录中,内容如下: |
|---|
| 239 | |
|---|
| 240 | <?php |
|---|
| 241 | phpinfo(); |
|---|
| 242 | ?> |
|---|
| 243 | |
|---|
| 244 | 然后在浏览器中输入地址 http://server_address/info.php,查看输出页面,如果 |
|---|
| 245 | 页面中没有 kbs_bbs support enabled 这一行,说明 kbsbbs 的 phpbbslib extension |
|---|
| 246 | 没有起作用。另外在这里也可以看到 gd 库和 domxml 库安装的情况。 |
|---|
| 247 | 另外 apache 的 error log 也可能有有用的信息:/var/log/apache2/error.log。 |
|---|
| 248 | |
|---|
| 249 | 其它问题请到水木社区 (newsmth.net) BBSMan_Dev 版讨论。 |
|---|
| 250 | |
|---|