YTHT BBS在Cygwin环境安装手册

来源:互联网 发布:炭知天下 地图 编辑:程序博客网 时间:2024/04/30 13:39
 

YTHT BBS在Cygwin环境安装手册

YTHT BBS 系统维护组

v0.1, 11 May 2004

private build v0.2 Oct 12 2004 by tnds


本文档主要描述如何在MS Windows平台上的Cygwin环境里面安装YTHT BBS软件


1. 概述

2. 初次安装

3. 修改代码后重新安装


1. 概述

1.1 一些约定

为叙述方便,本手册作如下约定:

  • $ : 命令提示符
  • /home/bbs : BBS安装目录,默认为 /home/bbs ,安装时请改为自己选择的目录

1.2 系统环境

  • Microsoft Windows 2000 or XP
  • Cygwin 1.5.7 或以上版本
  • UltraEdit (建议安装 用于改写Unix格式的文本文件)

1.3 YTHT BBS代码概述

YTHT BBS代码中,Cygwin环境下安装涉及到的主要有如下几个部分:

software目录代码概述

主要包括ghthash 、fastcgi 两个库无依赖关系

ythtlib目录代码概述

用于生成YTHT BBS的一个静态库 /home/bbs/bin/libytht.a 无依赖关系

libythtbbs目录代码概述

用于生成YTHT BBS的一个静态库 /home/bbs/bin/libythtbbs.a 无依赖关系

src目录代码概述

BBS 的Telnet登陆部分依赖于 ythtlib 和 libythtbbs

local_utl目录代码概述

BBS 的本地实用工具程序依赖于 ythtlib 和 libythtbbs

nju09目录代码概述

BBS 的Web 登陆部分依赖于 ythtlib 和 libythtbbs

innbbsd目录代码概述

BBS 的转信部分依赖于 ythtlib 和 libythtbbs

yftpd目录代码概述

BBS 的Ftp 服务器部分依赖于 ythtlib 和 libythtbbs

atthttpd目录代码概述

BBS 的Web 附件服务器部分依赖于 ythtlib 和 libythtbbs

smth_sshbbsd目录代码概述

BBS 的ssh 登陆部分依赖于 ythtlib ,libythtbbs 和 src 目录

1.4 关于提问

当您在安装过程中出现无法解决的问题时,请确定您已经详细阅读本手册并按其中叙述的方法安装的,如果问题仍无法解决,您可以在cnbbs.fbnt.dev或 cn.bbs.admin.installbbs 新闻组上提问。提问时请提供尽量详细的操作步骤和错误提示信息,以便发现错误原因,并请附上cygcheck的输出信息,例如:

$ cygcheck -svr > /tmp/check

将Cygwin系统信息输出至/tmp/check文件。(会覆盖该文件)

2. 初次安装

2.1 安装及配置Cygwin

请安装cygwin 1.5.7 或以上版本,使用低版本cygwin可能会带来麻烦。

首先在 http://www.cygwin.com/ 位置下载安装程序setup.exe ,此安装程序将引导您完成后面的Cygwin安装过程。除了Cygwin默认安装的包以外,请至少安装以下列出的包:

  • apache
  • autoconf
  • automake
  • bash
  • bison
  • ctags
  • cvs
  • cygipc
  • gcc
  • gcc-g++
  • gd
  • gdb
  • indent
  • libgd-devel
  • libgd2
  • libiconv
  • libtool
  • make
  • openssh
  • patch
  • vim
  • wget
  • zlib

以您将用来启动bbs服务的用户登入Windows。以下均假设Cygwin已经安装完成,并已启动Cygwin控制台。

$ ln -s /usr/autotool/devel/share/automake-1.7 /usr/share/automake$ ln -s /usr/include/sys/wait.h /usr/include/wait.h

2.2 获得BBS 代码

/*modified by tnds

目前CVS停止服务,最新也是最后的代码可从如下地址下载

http://bbs.zzu.edu.cn/ytht1.rar

http://abcn.net/ytht1.rar

下载后解压至/home/bbs/bbssrc目录

modified end*/

2.3 修改BBS 代码

以下请对照代码,在相应位置进行修改。因为YTHT BBS的代码随时可能发生变化,修改前请对修改内容的含义进行了解。

版面回收模式bug 的修改

因为Windows环境下文件名不区分大小写,造成 /home/bbs/boards/boardname目录下的文件 .DELETED .deleted .deleteD 冲突,修改目标是 .deleted 改为 .del,.deleteD 改为 .deD

Index: bbs/innbbsd/innd/bbspost.c===================================================================RCS file: /home/cvs/bbs/innbbsd/innd/bbspost.c,vretrieving revision 1.30diff -u -r1.30 bbspost.c--- bbs/innbbsd/innd/bbspost.c  19 Mar 2004 02:22:55 -0000      1.30+++ bbs/innbbsd/innd/bbspost.c  10 Apr 2004 15:57:47 -0000@@ -431,7 +431,7 @@sprintf(lockfile, "%s/.dellock", homepath, brdname);sprintf(index, "%s/boards/%s/.DIR", homepath, brdname);sprintf(tmpfile, "%s/.tmpfile", homepath, brdname);-       sprintf(delfile, "%s/.deleted", homepath, brdname);+       sprintf(delfile, "%s/.del", homepath, brdname);if ((fd = open(lockfile, O_RDWR | O_CREAT | O_APPEND, 0644)) == -1)return;Index: bbs/libythtbbs/record.c===================================================================RCS file: /home/cvs/bbs/libythtbbs/record.c,vretrieving revision 1.11diff -u -r1.11 record.c--- bbs/libythtbbs/record.c     22 Feb 2004 12:54:58 -0000      1.11+++ bbs/libythtbbs/record.c     10 Apr 2004 15:57:49 -0000@@ -40,7 +40,7 @@char *ptr, *delfname, *tmpfname;strcpy(tmpfile, filename);-       delfname = ".deleted";+       delfname = ".del";tmpfname = ".tmpfile";if ((ptr = strrchr(tmpfile, '/')) != NULL) {strcpy(ptr + 1, delfname);Index: bbs/local_utl/auto_rm_fakedir.c===================================================================RCS file: /home/cvs/bbs/local_utl/auto_rm_fakedir.c,vretrieving revision 1.3diff -u -r1.3 auto_rm_fakedir.c--- bbs/local_utl/auto_rm_fakedir.c     29 Jun 2003 04:05:18 -0000      1.3+++ bbs/local_utl/auto_rm_fakedir.c     10 Apr 2004 15:57:49 -0000@@ -13,7 +13,7 @@".DIR",".JUNK",".DELETED",-           ".DIGEST", ".deleted", ".deleteD", ".deleteJ", ".", "..", NULL};+           ".DIGEST", ".del", ".deD", ".deJ", ".", "..", NULL};intisfakedir(char *file)Index: bbs/src/bbs.c===================================================================RCS file: /home/cvs/bbs/src/bbs.c,vretrieving revision 1.535diff -u -r1.535 bbs.c--- bbs/src/bbs.c       25 Mar 2004 09:07:02 -0000      1.535+++ bbs/src/bbs.c       10 Apr 2004 15:58:22 -0000@@ -2485,7 +2485,7 @@sprintf(fullpath, "boards/%s/.tmpfile",currboard);unlink(fullpath);-                               sprintf(fullpath, "boards/%s/.deleted",+                               sprintf(fullpath, "boards/%s/.del",currboard);unlink(fullpath);sprintf(fullpath, "boards/%s/.tmpfilD",
==========================
//added by tnds
代码中行数可能有出入,请对照前后代码。
//added end

2.4 目录software的安装

//added by tnds
由于CVS停止服务,因此需要事先获得这两个软件包
fcgidev下载地址:
http://www.smth.edu.cn/bbscon.php?bid=196&id=42866&ap=833
ghthash地址:
http://www.smth.edu.cn/bbscon.php?bid=196&id=42867&ap=906
下载后请将文件分别更名为
fcgi-2.2.2.tar.gz和libghthash-0.5.3.tar.gz
并放入/home/bbs/bbssrc/software目录
//added end
$ cd /home/bbs/bbssrc/software$ make installfcgidev$ make installghthash

2.5 更改BBS 配置

$ cd /home/bbs/bbssrc/site$ cp bbsconfig.sample bbsconfig.mybbs$ cp seclist.txt.sample seclist.mybbs

使用UltraEdit编辑 /home/bbs/bbssrc/site/bbsconfig.mybbs 文件和 /home/bbs/bbssrc/site/seclist.mybbs文件,修改设置使符合贵站需要。

注意bbsconfig文件中,LAST_BBS_UID、LAST_BBS_GID和LAST_BBS_USER请查询/etc/passwd 文件获得,填入当前登入Windows的用户、也就是您将用来启动 bbs服务的用户的信息。

//added by tnds

为方便查找,可以使用

cat /etc/passwd|grep [登陆windows的用户名]

应该会出来如下所示内容:

tnds:unused_by_nt/2000/xp:1005:513:U-TONYBLACK/tnds,S-1-5-21-2694818615-64420223
4-3471302810-1005:/home/tnds:/bin/bash

其中tnds即last_bbs_user所需的用户名,1005:513,前者是uid,后者是gid

//added end

bbsconfig文件中,LAST_MAXUSERS、LAST_MAXBOARD、LAST_MAXACTIVE、 LAST_MAXACTIVERUN 属于资源敏感型的数据,请根据贵站实际需要填写,其它内容请参照/home/bbs/bbssrc/bbsconfig文件中ytht.net的资料进行修改。

//added by tnds

2.5extra 关于seclist

格式为

[分区代号][分区名称]

中间用tab隔开

子分区代号为两位,第一位代表所属主分区,第二位为子分区代号

例如

0 本站系统

0Q  区务管理

下方子分区导读安排格式为

*[分区代号]   [子分区代号1,2,...n]

其中分区代号与子分区代号间用tab隔开

下方descripiton系telnet登陆从分类讨论区选单中进入时显示的分区内容,为美观起见,应该一个分区说明不超过三个。

//added end

2.6 Telnet部分的安装

$ cd /home/bbs/bbssrc$ ./makedist.sh$ ./configure --with-site=mybbs

(如果需要评价文章的功能,请使用 ./configure --with-site=mybbs --with-mysql,mysql需要另外安装)

$ make$ make install

如果本步骤编译过程中出现错误,请修正错误后执行如下命令重新编译安装:

$ cd /home/bbs/bbssrc$ make clean$ make$ make install

2.7 Telnet部分测试运行及配置

$ ipc-daemon2&$ /home/bbs/bin/shminit

(如果成功会提示 everything is just fine)

$ /home/bbs/bin/bbsd

然后Telnet登陆本机测试,如果连接成功,请首先注册SYSOP (大小写敏感) 账号,再注册guest账号。(要保证guest账号是第2个注册)

如果一切顺利,请按如下所示建立bbs 运行所需项目:

  • IDScanRecord版 批账号时发信用
  • Board版 任命斑竹时发信用
  • hell版 地狱(赋予PERM_SPECIAL3 讨论区专用权限)
  • prison版 监狱(赋予PERM_SPECIAL3 讨论区专用权限)
  • millionaire版 MoneyCenter相关
  • /home/bbs/etc/moneyCenter目录 MoneyCenter相关
  • RobUnion俱乐部 MoneyCenter相关
  • deleterequest俱乐部 文章审查
  • allarticle版 所有文章
  • /home/bbs/2nd目录 跳蚤市场相关

//add by tnds

thanks for dinger@ytht

一个附加步骤,如果不这样操作,当使用F转寄站外信件时可能出错。

在/lib目录
建立一个文件叫sendmail
没有扩展名
里面写一行 顶头
#!/bin/sh
后面回车
把这个文件存为unix格式


用uedit里面选中当前文件右键,转换   记得#!/bin/sh要加回车,否则是无效的 

//added end

2.8 Web 部分的安装

本部分安装步骤示例假设您在``更改BBS 配置''一节中对于LAST_CGIPATH和 LAST_HTMPATH采用如下取值:

  • LAST_CGIPATH=/home/httpd/cgi-bin
  • LAST_HTMPATH=/home/httpd/html/2001

如果您更改了这两项设置为其它目录,请自行更改下面的步骤。

$ cd /home/bbs/bbssrc/nju09$ export NOBIG5=1$ make$ mkdir -p /home/httpd/cgi-bin$ mkdir -p /home/httpd/html/2001$ make install

修改/etc/apache/httpd.conf文件,请参照如下修改方法:

--- /etc/apache/httpd.conf.default      2004-01-21 09:02:50.000000000 +0800+++ /etc/apache/httpd.conf      2004-04-29 11:39:30.000000000 +0800@@ -348,7 +348,7 @@# documents. By default, all requests are taken from this directory, but# symbolic links and aliases may be used to point to other locations.#-DocumentRoot "/var/www/htdocs"+DocumentRoot "/home/httpd/html/2001"## Each directory to which Apache has access, can be configured with respect@@ -373,7 +373,7 @@## This should be changed to whatever you set DocumentRoot to.#-+## This may also be "None", "All", or any combination of "Indexes",@@ -638,13 +638,13 @@# The same rules about trailing "/" apply to ScriptAlias directives as to# Alias.#-    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"+    ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"## "/var/www/cgi-bin" should be changed to whatever your ScriptAliased# CGI directory exists, if you have that configured.#-    +    AllowOverride NoneOptions NoneOrder allow,deny@@ -979,6 +979,17 @@#    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi#+RewriteEngine on+RewriteRule ^/Ytht.Net(.*)/bbschat(.*) /cgi-bin/www/bbschat [PT]+RewriteRule ^/Ytht.Net(.*)$ /cgi-bin/www [PT]+RewriteRule  ^/$        /cgi-bin/www [PT]++        SetHandler cgi-script+++        SetHandler cgi-script++### Section 3: Virtual Hosts## VirtualHost: If you want to maintain multiple domains/hostnames on your
=====================
//added by tnds
其中rewrite部分的ytht.net需要替换为您在bbsconfig.mybbs中所定义的smagic值
//added end

测试Web 部分之前,请确保Telnet部分已启动,并且已经有用户登陆上去,见 ``Telnet部分测试运行及配置''一节。然后启动httpd:

$ /usr/sbin/httpd

如果没有异常,请用浏览器访问 http://localhost/,可以看到蔬菜图。

2.9 转信部分的安装

$ cd /home/bbs/bbssrc/innbbsd$ make cygwin$ make install

其它配置请参考 http://cn-bbs.org/的说明。

2.10 Ftp 部分的安装

$ cd /home/bbs/bbssrc/yftpd$ make$ make install

测试Ftp 部分:

$ /home/bbs/ftphome/yftpd

2.11 atthttpd部分的安装

$ cd /home/bbs/bbssrc/atthttpd$ make$ cp *.exe /home/bbs/bin

测试atthttpd部分:

$ /home/bbs/bin/atthttpd

2.12 sshbbsd部分的安装

首先设定环境变量,选择安装sshbbsd 时使用的autotools 版本,如果希望此设定在下次启动cygwin控制台时仍然有效,可以把它写入 /.bash_profile 配置文件,并重新启动cygwin控制台。

$ export WANT_AUTOCONF_VER=2.59$ export WANT_AUTOMAKE_VER=1.7.9

安装cygwin的gmp 4.1.2的二进制包及其源码包,并按以下步骤重新编译gmp:首先修改/usr/src/gmp-4.1.2-1.sh

--- gmp-4.1.2-1.sh.old  2004-06-08 23:33:52.000000000 +0800+++ gmp-4.1.2-1.sh      2004-06-08 23:35:46.000000000 +0800@@ -64,7 +64,7 @@target=i686-pc-cygwinprefix=/usrsysconfdir=/etc-MY_CFLAGS="-O2 -g -fomit-frame-pointer -march=i486 -mcpu=i686"+MY_CFLAGS="-O2 -fomit-frame-pointer -march=i486 -mcpu=i686"MY_LDFLAGS=mkdirs() {

执行如下命令编译gmp:

$ cd /usr/src$ ./gmp-4.1.2-1.sh all

完成后,把在/usr/src目录生成的gmp-4.1.2-1.tar.bz2 压缩包中的文件 usr/bin/cyggmp-3.dll复制到/bin目录,并覆盖原文件。

如果当前使用的windows 用户的cygwin家目录与bbs 安装目录不同,请将bbs 安装目录下的bin 目录符号链接到家目录中。例如,当前windows用户Administrator 家目录为/home/Administrator,如果bbs安装在/home/bbs 目录,则建立如下符号链接:

$ ln -s /home/bbs/bin /home/Administrator

下面开始sshbbsd的编译安装:

$ cd /home/bbs/bbssrc/smth-sshbbsd$ ./makedist.sh$ ./configure$ make$ make generate-host-key$ make update

测试sshbbsd部分:

$ /home/bbs/bin/sshbbsd

2.13 Cron的配置

$ cp /home/bbs/bbssrc/site/crontab.sample /var/cron/tabs

依照贵站具体情况改写/var/cron/tabs/crontab.sample 文件,然后将文件改名为用来运行bbs服务的Windows用户名。

测试:

$ /usr/sbin/cron

2.14 启动BBS 服务

如果按照``初次安装''部分操作,bbs 服务已经启动了。以后要启动bbs 服务,请按如下步骤操作:

$ ipc-daemon2&$ /home/bbs/bin/shminit$ /home/bbs/bin/bbsd$ /home/bbs/bin/bbslogd&$ /usr/sbin/cron$ /usr/sbin/httpd$ /home/bbs/innd/innbbsd$ /home/bbs/ftphome/yftpd

使用如下命令可以察看当前进程情况:

$ ps

3. 修改代码后重新安装

3.1 修改代码的注意事项

做任何修改前请务必备份关键数据。

修改某目录代码后,需要在该目录重新编译安装。如果修改了ythtlib 目录或libythtbbs目录的代码,需要在所有目录重新编译安装;如果修改了src 目录的代码,还需要在smth-sshbbsd目录重新编译安装(如果安装了sshbbsd服务)。

如果修改了共享内存相关的数据结构,需要重新启动所有bbs服务。

不要在/home/bbs/bbssrc目录make install,会破坏现有数据。

3.2 ythtlib目录的修改

$ cd /home/bbs/bbssrc/ythtlib$ make clean$ make$ make install

3.3 libythtbbs目录的修改

$ cd /home/bbs/bbssrc/libythtbbs$ make clean$ make$ make install

3.4 src目录的修改

$ cd /home/bbs/bbssrc/src$ make clean$ make$ install --backup=t *.exe /home/bbs/bin

3.5 local_utl目录的修改

$ cd /home/bbs/bbssrc/local_utl$ make clean$ make depend$ make$ make install

3.6 nju09目录的修改

$ cd /home/bbs/bbssrc/nju09$ export NOBIG5=1$ make clean$ make$ make install

3.7 innbbsd目录的修改

$ cd /home/bbs/bbssrc/innbbsd$ make clean$ make cygwin$ make install

3.8 yftpd目录的修改

$ cd /home/bbs/bbssrc/yftpd$ make clean$ make$ install --backup=t *.exe /home/bbs/ftphome

3.9 atthttpd目录的修改

$ cd /home/bbs/bbssrc/atthttpd$ make clean$ make$ install --backup=t *.exe /home/bbs/bin

3.10 smth-sshbbsd目录的修改

$ cd /home/bbs/bbssrc/smth-sshbbsd$ make clean$ make$ make update