
最近想找个地方记录经验和想法,输出一些东西,就想本地化搭一个B/S架构的知识库。首先想到的是 confluence,这个很好用,但是比较重而且收费,所以找到了它的轻量化版 BookStack,这里记录下搭建的注意事项。
在官网上,找到了安装文档:https://www.bookstackapp.com/docs/admin/installation/
文档介绍的很清楚,BookStack需要一些组件:PHP、MySQL 或 MariaDB、Composer,还需要一个支持php的服务器,Apache 或是 nginx 都可以。知识库是要长期使用的,稳定性很重要,所以建议搞一个独立机器来装。
文档很贴心,给了安装脚本,怕麻烦的可以用这个来安装。不过需要在纯净的系统上用,安装前要提前做好快照。脚本(ubuntu-2404版本):https://codeberg.org/bookstack/devops/src/branch/main/scripts/installation-ubuntu-24.04.sh
搭建环境是新装的Ubuntu-24.04虚拟机,发现脚本中有几处需要注意:
14行 获取ip操作,取不到ip。`ip addr` 的输出没有 “state UP” 这个字符串,改成查找 'BROADCAST' 能正常取到(这可能和设备或版本有关)
# Get the current machine IP address
CURRENT_IP=$(ip addr | grep 'state UP' -A4 | grep 'inet ' | awk '{print $2}' | cut -f1 -d'/') 90行 启动MySQL服务,无法启动。服务名不对,应把 “mysql-server.service” 改为 “mysql.service”。(这里报错安装脚本不会退出,但后续数据库相关的配置都会异常)
# Set up database
function run_database_setup() {
# Ensure database service has started
systemctl start mysql-server.service
sleep 3 107行 获取安装脚本的校验码,无法取到。可能是国内网络的原因,这里大概率会报错,导致安装脚本退出。我的做法是,注释掉获取校验码以及后面校验部分的代码。
# Install composer
function run_install_composer() {
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
then
>&2 echo 'ERROR: Invalid composer installer checksum'
rm composer-setup.php
exit 1
fi 安装时注意tail下日志,看有没有异常;安装完,测试能否正常访问。如果用域名访问异常,可以尝试配一下hosts。

安装脚本中没有设置开机启动,可按如下配置:
设置 Apache2 MySQL PHP8.3-FPM 自启
sudo systemctl enable apache2
sudo systemctl enable mysql
sudo systemctl enable php8.3-fpm 由于是单机使用,安全方面配置就没必要了;另外还可以做定时任务来定时备份,后面有需要再做吧。