| 1 | $Id$ |
|---|
| 2 | 水木代码安装指南 |
|---|
| 3 | |
|---|
| 4 | 本文由 KBS 开发组负责维护,介绍了 kbs bbs 在类 Unix 操作系统(包括 Linux、 |
|---|
| 5 | FreeBSD、Solaris 8/9 for X86/SPARC 等)上的编译和安装,主要讨论用完全定制的方 |
|---|
| 6 | 式进行安装。 |
|---|
| 7 | |
|---|
| 8 | 0. ChangeLog |
|---|
| 9 | 2005.8.19 |
|---|
| 10 | flyriver 使命名约定前后一致,另外加入一些婆婆妈妈的说明 |
|---|
| 11 | |
|---|
| 12 | 2004.7.20 |
|---|
| 13 | flyriver v1.2.1 更新 libesmtp 的说明,加入常用 configure 参数说明 |
|---|
| 14 | |
|---|
| 15 | 2004.1.1 |
|---|
| 16 | flyriver v1.2 重写这个安装文档 |
|---|
| 17 | |
|---|
| 18 | 2002.7.31 |
|---|
| 19 | COMMAN 加入对 ssh 部分的说明, 修正 pop3s 的说明 |
|---|
| 20 | |
|---|
| 21 | 2002.7.27 |
|---|
| 22 | KCN v1.1 加入pop3s,ssh部分的说明 |
|---|
| 23 | |
|---|
| 24 | 2002.6.29 |
|---|
| 25 | flyriver v1.0 |
|---|
| 26 | |
|---|
| 27 | 1. 需要的软件 |
|---|
| 28 | zlib 必须 |
|---|
| 29 | libesmtp > 0.8 可选 |
|---|
| 30 | autoconf-2.57 可选 如果从 svn 下载源代码编译安装则必需 |
|---|
| 31 | automake-1.6.X 可选 如果从 svn 下载源代码编译安装则必需 |
|---|
| 32 | libtool-1.4.X 可选 如果从 svn 下载源代码编译安装则必需 |
|---|
| 33 | apache_1.3.X 可选 选择 web 界面支持才需要 |
|---|
| 34 | or apache2 |
|---|
| 35 | php >= 4.3.0 可选 选择 web 界面支持才需要 |
|---|
| 36 | libxml2 可选 选择 web 界面支持才需要 |
|---|
| 37 | libiconv 可选 选择 web 界面支持才需要 |
|---|
| 38 | libjpeg 可选 选择 web 界面支持才需要 |
|---|
| 39 | libpng 可选 选择 web 界面支持才需要 |
|---|
| 40 | freetype2 可选 选择 web 界面支持才需要 |
|---|
| 41 | gd 可选 选择 web 界面支持才需要 |
|---|
| 42 | openssl 可选 选择 pop3d 支持 pop3s 才需要 |
|---|
| 43 | gmp-4.X 可选 选择 ssh 方式支持才需要 |
|---|
| 44 | mysql 可选 选择个人文集等功能支持才需要 |
|---|
| 45 | |
|---|
| 46 | 2. 安装 |
|---|
| 47 | 本节介绍 kbsbbs 的 telnet/ssh/web 方式在类 Unix 操作系统上的安装。注意 |
|---|
| 48 | 本文后面给出的命令除了特别说明的之外都不需要 root 权限。 |
|---|
| 49 | |
|---|
| 50 | 2.1 一些约定 |
|---|
| 51 | $(BBSHOME) 表示 bbs 的安装目录,在本文中指定为 /home/bbs |
|---|
| 52 | $(WWWHOME) 表示 apache 的安装目录,在本文中指定为 /home/www |
|---|
| 53 | $(PHPHOME) 表示 php 的安装目录,在本文中指定为 /home/www/php |
|---|
| 54 | $(SRCDIR) 表示存放 kbsbbs、apache 和 php 源代码的目录,可自己设 |
|---|
| 55 | 定一个,例如放在自己 home 目录的某个子目录下 |
|---|
| 56 | |
|---|
| 57 | 注意,这里提到的 $(BBSHOME) 等单词并不是 Makefile 或其他脚本语言的变量, |
|---|
| 58 | 仅仅是一种命名约定。在后面出现 $(BBSHOME) 等单词的地方,应把它们替换成对应的 |
|---|
| 59 | 实际名字,而不是直接输入 $(BBSHOME)。 |
|---|
| 60 | |
|---|
| 61 | 例 1: |
|---|
| 62 | 如果本文中有一个命令是这样的: |
|---|
| 63 | ./configure --prefix=$(BBSHOME) |
|---|
| 64 | |
|---|
| 65 | 那么你不能直接在 shell 里面原封不动的输入上述命令,而应该根据你的实际情 |
|---|
| 66 | 况,比如你想把 kbsbbs 安装在 /home/bbs 目录,那么 $(BBSHOME) 就被约定为 |
|---|
| 67 | /home/bbs,于是在实际执行上述命令时,应把 $(BBSHOME) 替换为 /home/bbs,上述 |
|---|
| 68 | 命令实际是指: |
|---|
| 69 | ./configure --prefix=/home/bbs |
|---|
| 70 | |
|---|
| 71 | 例 2: |
|---|
| 72 | 如果本文中有一句话是这样的:把文件复制到 $(BBSHOME)/bin 目录。假设 |
|---|
| 73 | $(BBSHOME) 还是被约定为 /home/bbs,那么“把文件复制到 $(BBSHOME)/bin 目录” |
|---|
| 74 | 的意思是“把文件复制到 /home/bbs/bin 目录”。 |
|---|
| 75 | |
|---|
| 76 | 在开始安装以前,需要在系统内创建 bbs 用户和组,上述相关目录如果没有的话应 |
|---|
| 77 | 该手工创建,并设置 bbs 用户为目录属主并可以读写。 |
|---|
| 78 | |
|---|
| 79 | |
|---|
| 80 | 2.2 安装 libesmtp 和 gmp |
|---|
| 81 | libesmtp 建议从源代码编译安装,configure 的时候建议加上 --disable-pthreads |
|---|
| 82 | 参数,但不加也可以,然后运行 make 和 make install 命令。 |
|---|
| 83 | 注:从 kbsbbs-1.2.1 版本开始,libesmtp 不再是必须安装的了,但如果不使用 |
|---|
| 84 | libesmtp 的话,则系统中必须安装有 sendmail 程序。 |
|---|
| 85 | |
|---|
| 86 | gmp 可以直接使用操作系统自带的软件包。 |
|---|
| 87 | |
|---|
| 88 | 2.3 下载 kbsbbs、apache 和 php 的代码包 |
|---|
| 89 | 下载 kbsbbs 的源代码有两种方法,一种是通过 svn 方式获取,另一种是下载每 |
|---|
| 90 | 日更新的 kbsbbs-snapshot 代码包。用 svn 方式下载源代码请参考 doc/README.svn |
|---|
| 91 | 文件。把 kbsbbs、apache 和 php 的代码包放在 $(SRCDIR) 目录,然后分别解开。 |
|---|
| 92 | |
|---|
| 93 | 注意在 site/ 子目录里面有名字为 fb2k-v2.c 和 fb2k-v2.h 的文件,这两个文件 |
|---|
| 94 | 是站点定制文件,本文以这两个文件为例子进行讲解。注意验证 fb2k-v2.h 文件中 |
|---|
| 95 | BBSUID 和 BBSGID 与本地系统的 bbs 用户的 uid gid 是否一致,如果不一致请调整到 |
|---|
| 96 | 一致。 |
|---|
| 97 | |
|---|
| 98 | 用如下命令可以验证这些 ID 是否一致: |
|---|
| 99 | grep "^#define.*BBSUID" fb2k-v2.h |
|---|
| 100 | grep "^#define.*BBSGID" fb2k-v2.h |
|---|
| 101 | grep "^bbs:" /etc/passwd |
|---|
| 102 | |
|---|
| 103 | 注:如果看不懂命令执行的结果,请先阅读 C 语言及 Unix 方面的书籍,再尝试安 |
|---|
| 104 | 装 kbsbbs。 |
|---|
| 105 | |
|---|
| 106 | 2.4 安装 apache 和 php |
|---|
| 107 | 首先切换目录到 $(SRCDIR)。为了节省篇幅,下面直接以命令表示。 |
|---|
| 108 | cd apache_1.3.X |
|---|
| 109 | ./configure --prefix=$(WWWHOME) --enable-module=so |
|---|
| 110 | make |
|---|
| 111 | make install |
|---|
| 112 | |
|---|
| 113 | cd ../php-4.3.X |
|---|
| 114 | ./configure --prefix=$(PHPHOME) \ |
|---|
| 115 | --with-apxs=$(WWWHOME)/bin/apxs --disable-debug \ |
|---|
| 116 | --enable-pic --disable-rpath --enable-inline-optimization \ |
|---|
| 117 | --with-dom --with-gd --with-freetype-dir \ |
|---|
| 118 | --with-png-dir --with-iconv --with-jpeg-dir --with-zlib \ |
|---|
| 119 | --enable-track-vars |
|---|
| 120 | make |
|---|
| 121 | make install |
|---|
| 122 | |
|---|
| 123 | [补充] 如果使用 apache2,以上步骤中需要修改的地方是: |
|---|
| 124 | apache 的 configure 命令改成: |
|---|
| 125 | ./configure --prefix=$(WWWHOME) --enable-so |
|---|
| 126 | php 的 configure 命令里面的 --with-apxs=$(WWWHOME)/bin/apxs 改成: |
|---|
| 127 | --with-apxs2=$(WWWHOME)/bin/apxs |
|---|
| 128 | [补充] php5 不默认编译 mysql 支持,所以如果需要 mysql 支持的话,应该 |
|---|
| 129 | 在 php 的 configure 命令中加入 --with-mysql |
|---|
| 130 | [补充] 在64位下编译的时候有时候会碰到找不到64位库的问题。 |
|---|
| 131 | 在 php 的 configure 命令中加入 --with-libdir=lib64 强制它在链接lib64 |
|---|
| 132 | 目录下的库 |
|---|
| 133 | |
|---|
| 134 | 2.5 安装 kbsbbs |
|---|
| 135 | 同样切换到 $(SRCDIR) 目录,进入 kbsbbs 的源代码目录。 |
|---|
| 136 | |
|---|
| 137 | 然后执行下面的一系列命令: |
|---|
| 138 | ./configure --prefix=$(BBSHOME) --enable-site=fb2k-v2 \ |
|---|
| 139 | --with-php=$(PHPHOME) --with-mysql --enable-ssh --enable-ssl |
|---|
| 140 | make |
|---|
| 141 | make install |
|---|
| 142 | |
|---|
| 143 | make install-home |
|---|
| 144 | chown -R bbs:bbs $(BBSHOME) (最好用 root 执行) |
|---|
| 145 | |
|---|
| 146 | 注意,这里最后两个命令的作用是把源代码 bbshome 目录下的重要数据文件复制到 |
|---|
| 147 | $(BBSHOME) 下去,创建必要的子目录并确保设置正确的权限。以后更改源代码的话,只 |
|---|
| 148 | 需要在源代码目录下执行 make; make install; 即可,千万不要执行 |
|---|
| 149 | make install-home,因为执行的话就会丢失 bbs 数据! |
|---|
| 150 | |
|---|
| 151 | 注:一些常用 configure 参数说明。 |
|---|
| 152 | --enable-site=SITE 告诉 kbsbbs 采用名为 SITE.h 和 SITE.c 的站 |
|---|
| 153 | 点定制文件,这两个文件必须放在 site/ 目录 |
|---|
| 154 | --with-mysql[=DIR] 让 kbsbbs 支持 mysql,DIR 为 mysql 库文件 |
|---|
| 155 | 所在目录,如果不指明则自动检测 |
|---|
| 156 | --without-mysql 不让 kbsbbs 支持 mysql |
|---|
| 157 | --with-libesmtp[=DIR] 让 kbsbbs 支持 libesmtp,DIR 为 libesmtp 库 |
|---|
| 158 | 文件所在目录,如果不指明则自动检测 |
|---|
| 159 | --without-libesmtp 不让 kbsbbs 支持 libesmtp |
|---|
| 160 | --with-php[=DIR] 让 kbsbbs 找到 php 的安装目录,如果不 |
|---|
| 161 | 指明 DIR 则自动检测 |
|---|
| 162 | |
|---|
| 163 | 2.6[不推荐] 将 phpbbslib 放入 php 并再次编译安装 php |
|---|
| 164 | 同样切换到 $(SRCDIR) 目录,进入 php 的源代码目录。 |
|---|
| 165 | mkdir ext/kbs_bbs |
|---|
| 166 | |
|---|
| 167 | 然后将 kbsbbs 源代码目录 php/ 下的 config.m4、php_kbs_bbs.h |
|---|
| 168 | 和所有的 .c 文件复制到 ext/kbs_bbs 目录,然后执行: |
|---|
| 169 | ./buildconf --force |
|---|
| 170 | |
|---|
| 171 | 再次编译安装 php 重复 2.4 节中的步骤即可,但 php 的 configure 命令应该 |
|---|
| 172 | 附加上 --enable-kbs_bbs 的参数。 |
|---|
| 173 | |
|---|
| 174 | 注:我们不推荐执行步骤 2.6,但在某些系统上 (比如 cygwin),要把 |
|---|
| 175 | phpbbslib 编译成可以动态执行的模块比较困难,则 2.6 就是必须执行的步骤了。 |
|---|
| 176 | |
|---|
| 177 | 2.7[可选] 初始化 BBS |
|---|
| 178 | 以 $(BBSUID) 或者 root 身份执行 $(BBSHOME)/bin/bootstrap 以初始化 BBS |
|---|
| 179 | 此程序会自动注册 guest 和 SYSOP,并建立 sysop 等系统基本版面 |
|---|
| 180 | |
|---|
| 181 | 3. 运行之前的配置 |
|---|
| 182 | 本节主要说明 ssh 方式和 web 方式的配置。 |
|---|
| 183 | |
|---|
| 184 | 3.1 ssh 方式 |
|---|
| 185 | 请参考 doc/INSTALL.ssh 文件。 |
|---|
| 186 | 懒人可以用如下命令产生最简单的可用的配置文件(不推荐): |
|---|
| 187 | touch $(BBSHOME)/etc/sshd_config |
|---|
| 188 | ssh-keygen -t rsa1 -f $(BBSHOME)/etc/ssh_host_key |
|---|
| 189 | |
|---|
| 190 | 3.2 web 方式 |
|---|
| 191 | apache 的配置文件为 $(WWWHOME)/conf/httpd.conf,编辑该文件,加入 |
|---|
| 192 | AddType application/x-httpd-php .php |
|---|
| 193 | |
|---|
| 194 | 修改 Port 参数为 80,把 User 和 Group 参数都修改为 bbs。 |
|---|
| 195 | 请把 KeepAlive 参数设为 Off. |
|---|
| 196 | 如果使用 apache2,建议加入 AddDefaultCharset gb2312. |
|---|
| 197 | |
|---|
| 198 | 如果你使用的是 snapshot: |
|---|
| 199 | 将 kbsbbs 源代码目录 bbs2www/html 下的文件复制到 $(WWWHOME)/htdocs。 |
|---|
| 200 | 如果你使用的是 svn: |
|---|
| 201 | 在 $(WWWHOME) 目录下 checkout www2 模块,并将 www2 目录改名为 htdocs。 |
|---|
| 202 | |
|---|
| 203 | php 的配置文件可以从 php 源代码目录得到,将 php.ini-dist 复制为 |
|---|
| 204 | $(PHPHOME)/lib/php.ini,然后编辑 php.ini 文件,将 short_open_tag |
|---|
| 205 | 的值修改为 off,magic_quotes_gpc 也应该设置成 off。 |
|---|
| 206 | |
|---|
| 207 | 如果没有执行上面的 2.6 步骤,那么再执行下面的操作: |
|---|
| 208 | 修改 php.ini 文件,将 |
|---|
| 209 | extension_dir = ./ |
|---|
| 210 | 注释掉,再加入一行 |
|---|
| 211 | extension=libphpbbslib.so |
|---|
| 212 | PHP 将会使用默认的扩展库路径,可以用 php-config --extention-dir 查看。 |
|---|
| 213 | |
|---|
| 214 | 4. 运行 |
|---|
| 215 | |
|---|
| 216 | 注意只有需要开 < 1024 端口号服务的程序需要用 root 来启动,具体来说, |
|---|
| 217 | bbsd (23端口),sshbbsd (22端口),apachectl (80端口) 需要用 root 身份来启动。 |
|---|
| 218 | |
|---|
| 219 | 4.1 运行 kbsbbs |
|---|
| 220 | cd $(BBSHOME)/bin |
|---|
| 221 | ./miscd daemon |
|---|
| 222 | ./bbslogd |
|---|
| 223 | ./bbsd -p 23 |
|---|
| 224 | ./sshbbsd -p 22 |
|---|
| 225 | |
|---|
| 226 | 然后 telnet localhost,注册 SYSOP 和 guest 两个帐号。 |
|---|
| 227 | 如果执行了步骤 2.7,则可跳过 SYSOP 和 guest 账号的注册。 |
|---|
| 228 | |
|---|
| 229 | 4.2 运行 apache |
|---|
| 230 | $(WWWHOME)/bin/apachectl start |
|---|
| 231 | |
|---|
| 232 | 5. 其他 |
|---|
| 233 | pop3s的支持在 configure 的时候加上 --with-openssl[=path],生成的 newpop3d |
|---|
| 234 | 将自动包含 pop3 和 pop3s 的支持。pop3s 支持需要一个证书,可以用 openssl 生成 |
|---|
| 235 | 并放在 $(BBSHOME)/etc/bbs.crt 和 $(BBSHOME)/etc/bbs.key,比如: |
|---|
| 236 | openssl genrsa -out $(BBSHOME)/etc/bbs.key |
|---|
| 237 | openssl req -x509 -days 3650 -new -key bbs.key -out $(BBSHOME)/etc/bbs.crt |
|---|
| 238 | |
|---|
| 239 | 转信支持请参考 doc/INSTALL.innbbsd 文档。 |
|---|
| 240 | |
|---|
| 241 | bbs 用户还需要一个 crontab 以便完成一些日常事务,请参考 doc/README.SYSOP。 |
|---|
| 242 | |
|---|
| 243 | 其它问题请到 水木社区(newsmth.net) 的 BBSMan_Dev 版面讨论。 |
|---|