BMYBBS 是 YTHT 代码的一个分支,被使用在西安交通大学兵马俑 BBS。 当前开发和运行环境使用的是 Ubuntu 20.04 / gcc 9.3.0,测试环境使用的是 Ubuntu 20.04 / gcc 10.2.0。
BMYBBS 已经和最初的 YTHT 系统不兼容。由于能力和精力有限,本项目未提供升级或者转换程序,同时代码中或许移除掉了一些可移植性相关的宏或者代码,因此本项目亦不能保证在其他 Linux 发行版或者 POSIX 系统上运行。
如果您仅需要反馈问题,可以前往 issues 查找是否已被反馈,或者提交新的 issue 。如果对于 BMYBBS 的开发、运行感兴趣,以下指南或许可以给您帮助。
在编译过程中需要使用到的一些工具和库
sudo apt install build-essential libtool cmake gdb chrpath \
apache2 libapache2-mod-perl2 mysql-server redis-server \
libmysqlclient-dev libpcre3-dev libjson-c-dev libhiredis-dev \
libxml2-dev libgmp-dev libcurl4-openssl-dev
以下工具亦可能带来帮助:
sudo apt install language-pack-zh-hans git zsh tmux
本项目还依赖于 libghthash、onion 以及 check ,相关编译安装可以在 GitHub CI 配置文件 找到。
BMYBBS 运行使用 bbs 用户身份,其 UID/GID 均为 999。如果系统中已有用户和组使用了这些 ID,例如在 Ubuntu 20.04 中被 systemd-coredump
占用,可以参照如下命令:
sudo groupmod -g 1999 systemd-coredump
sudo usermod -u 1999 systemd-coredump
使用如下命令创建 bbs 用户和用户组:
sudo groupadd -g 999 bbs
sudo adduser --uid 999 --gid 999 bbs
以下是典型的使用,其中某些值可能已经作为常量写入了代码,建议除了 LOCALIP
外保持一致。
BBS_HOME=/home/bbs \
HTMPATH=/home/apache/htdocs/bbs \
CGIPATH=/home/apache/cgi-bin/bbs \
LOCALIP=202.117.1.8 \
sudo -E ./PrepDirs.sh
# 假设您已经在 bmybbs 代码根目录
mkdir build
cd build
cmake ..
make
这里的编译应该是成功的。单元测试中一些验证码相关的用例会因为您缺少数据而不通过,因此您可以忽略执行单元测试。
已知问题: 当前使用 cmake 构建的 sshbbsd 会在建立连接后断开并终止子进程,因此需要使用原先的 Makefile 方式。建议参考 编译sshbbsd的过程.txt 。
参考 install_binaries_and_libraries.sh,典型使用方法:
# 整体安装,此处假设您位于上一步编译的目录下(即 build 目录)
../install_binaries_and_libraries.sh .
# 单独更新,例如 libytht.so 和 bbsd,此处假设您位于上一步编译的目录下(即 build 目录)
../install_binaries_and_libraries.sh libytht/libytht.so /home/bbs/lib/libytht.so
../install_binaries_and_libraries.sh src/bbsd/bbsd /home/bbs/bin/bbsd
- 在
/etc/apache2/envvars
中设置APACHE_RUN_USER
和APACHE_RUN_GROUP
为bbs
。 - 使用
a2enmod(8)
启用rewrite
和cgid
两个模块。
重启 apache2 以生效。
BBS 存在很多缺陷,难免会意外终止程序,这时借助 gdb 和转储文件可以帮助很多。参考以下配置:
ulimit -c unlimited
sysctl -w kernel.core_pattern='/core/%e.%t.%u.%g.%s.%p'
如果您在编译安装中遇到未提及的情况,可能在如下文档中能找到帮助信息: