本页内容

  • 前提条件
  • 安装依赖项
  • 配置 PHP
  • 配置 MariaDB 服务器
  • 下载 BookStack
  • 配置 Apache2 虚拟主机
  • 使用 SSL/TLS 证书保护 BookStack 安全
  • 访问 BookStack
  • 结语

BookStack 是一款免费且开源的 wiki 软件,使用 PHP 和 Laravel Web 框架编写。BookStack 旨在成为一个简单且可自托管的平台,用于存储和组织信息。

在本教程中,我们将一步步指导你在 Debian 12 服务器上完成 BookStack 的安装过程,以便你拥有自己的类 wiki 平台来发布信息。

前提条件

在开始之前,请确保你已具备以下条件:

  • 一台 Debian 12 服务器。
  • 一个具有 sudo 管理员权限的非 root 用户。
  • 一个指向服务器 IP 地址的域名。

安装依赖项

BookStack 是一个使用 PHP 和 MySQL/MariaDB 编写的 wiki 平台。目前,它完全支持 PHP 8.2。在此阶段,你将安装 BookStack 的依赖项,包括 LAMP Stack(Apache2、MariaDB、PHP)软件包、Git 和 Composer。

使用以下命令更新并刷新你的 Debian 软件包索引。

sudo apt update

在 Debian 12 上安装 BookStack 知识管理wiki平台

仓库更新后,执行以下 apt install 命令来安装 BookStack 的软件包依赖项。通过该命令,你将安装 LAMP Stack 软件包、Composer 和 Git。

sudo apt install apache2 mariadb-server composer curl php php-xml libapache2-mod-php php-fpm php-curl php-mbstring php-ldap php-tidy php-zip php-gd php-mysql git

输入 y 以继续安装。

在 Debian 12 上安装 BookStack 知识管理wiki平台

依赖项安装完成后,通过执行以下命令来验证每个依赖项。

通过以下 systemctl 命令验证 apache2 服务,确保该服务正在运行且已启用。

sudo systemctl is-enabled apache2
sudo systemctl status apache2

以下输出将确认 apache2 服务正在运行且已启用。

在 Debian 12 上安装 BookStack 知识管理wiki平台

现在使用以下命令验证 mariadb 服务。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

输出应显示 mariadb 服务在你的系统上正在运行且已启用。

在 Debian 12 上安装 BookStack 知识管理wiki平台

接下来,使用以下命令验证 PHP 版本并列出已启用的扩展。

php -v
php -m

根据以下输出,你的系统已安装 PHP 8.2。

在 Debian 12 上安装 BookStack 知识管理wiki平台

最后,使用以下命令验证 Composer。这将定位 Composer 二进制文件并检查其版本。

which composer
sudo -u www-data composer -v

你应该会看到 Composer 2.5.5 已安装在 /usr/bin/composer 。

在 Debian 12 上安装 BookStack 知识管理wiki平台

配置 PHP

安装依赖项后,下一步是通过修改你 Debian 机器上的 php.ini 文件来配置 PHP 安装。

使用以下 nano 编辑器命令打开默认的 PHP 配置文件 /etc/php/8.2/apache2/php.ini 。

sudo nano /etc/php/8.2/apache2/php.ini

使用以下配置更改一些默认设置。请务必根据你的服务器环境调整 date.timezone 和 memory_limit 参数。

date.timezone = Europe/Amsterdam
memory_limit = 512M

完成后保存文件并退出编辑器。

现在运行以下 systemctl 命令来重启 apache2 服务并应用你所做的更改。

sudo systemctl restart apache2

配置 MariaDB 服务器

既然已经配置好了 PHP,下一步你将使用 mariadb-secure-installation 实用工具来配置 MariaDB 服务器安装,该工具可让你为 MariaDB 设置基本安全性。随后,你还将创建一个供 BookStack 使用的新数据库和用户。

执行以下 mariadb-secure-installation 命令来保护你的 MariaDB 安装。

sudo mariadb-secure-installation

在此过程中,系统会询问你一些配置。输入 Y 表示同意并应用新的更改,或输入 n(否)以拒绝该配置。

  • 对于默认未设置 root 密码的 MariaDB 服务器安装,当被询问密码时,按 ENTER 键。
  • MariaDB root 用户的本地身份验证默认是安全的,当被询问是否将身份验证方法更改为 'unix_socket' 时,输入 'n' 。
  • 输入 'Y' 以创建新的 MariaDB root 密码。然后,输入你的 MariaDB root 用户的强密码并重复输入。
  • 当被询问是否禁用 MariaDB root 用户的远程身份验证时,输入 'Y' 表示同意。
  • 默认的 MariaDB 服务器安装自带 'test' 数据库,并允许匿名用户访问它。对这两项设置都输入 'Y' ,以删除默认的 'test' 数据库并移除匿名权限。
  • 最后,输入 'Y' 以确认重新加载表权限。

配置完 MariaDB 后,你将通过 mariadb 客户端命令创建一个供 BookStack 使用的新 MariaDB 数据库和用户。

使用以下 mariadb 命令登录到 MariaDB 服务器。当系统提示时,输入你的 MariaDB root 密码。

sudo mariadb -u root -p

现在运行以下查询,为 BookStack 创建一个新数据库和用户。在本示例中,你将创建一个名为 bookstack 的新数据库和用户,密码为 p4ssword 。

CREATE DATABASE bookstack;
CREATE USER bookstack@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL ON bookstack.* TO bookstack@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

在 Debian 12 上安装 BookStack 知识管理wiki平台

接下来,运行以下查询来验证用户 bookstack 的权限。

SHOW GRANTS FOR bookstack@localhost;

你应该会看到用户 bookstack 被允许访问和管理将由 BookStack 使用的 bookstack 数据库。

在 Debian 12 上安装 BookStack 知识管理wiki平台

输入 quit 退出 MariaDB 服务器。

下载 BookStack

既然已经配置好了 PHP 和 MariaDB 服务器,你就可以安装 BookStack 了。在本节中,你将通过 Git 和 Composer 安装 BookStack。

首先,创建新目录 /var/www/.config 和 /var/www/.cache ,供 Composer 用于存储依赖项缓存和配置。然后,你还必须将这两个目录的所有权更改为 www-data 用户。

mkdir -p /var/www/{.config,.cache}
sudo chown -R www-data /var/www/{.config,.cache}

切换到 /var/www 目录,并将 BookStack 源代码下载到 bookstack 目录。你的 BookStack 安装目录应为 /var/www/bookstack 。

cd /var/www
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch bookstack

现在将 /var/www/bookstack 目录的所有权更改为 www-data 用户,并进入该目录。

sudo chown -R www-data:www-data /var/www/bookstack
cd /var/www/bookstack

在 Debian 12 上安装 BookStack 知识管理wiki平台

接下来,将 .env.example 文件复制为 .env ,并使用以下 nano 编辑器命令打开新文件。

sudo -u www-data cp .env.example .env
sudo -u www-data nano .env

将你的域名输入到 APP_URL 选项中,并将你的 MariaDB 数据库详细信息输入到下面的 DB_ 设置中。

# The application URL
APP_URL=http://bookstack.howtoforge.local    
# Database values also need to be modified
# If you follow previous command, you only need to add your DB_PASSWORD
DB_DATABASE=bookstack
DB_USERNAME=bookstack
DB_PASSWORD=p4ssword

完成后保存并关闭文件。

接下来,运行以下命令通过 Composer 安装 PHP 依赖项。

sudo -u www-data composer install --no-dev --no-plugins

在安装过程中,将显示以下输出。

在 Debian 12 上安装 BookStack 知识管理wiki平台

PHP 依赖项安装完成后,执行以下命令来生成密钥并迁移数据库。

sudo -u www-data php artisan key:generate --no-interaction --force
sudo -u www-data php artisan migrate --no-interaction --force

.env 文件上的密钥将被更新,以下是数据库迁移过程中的内容。

在 Debian 12 上安装 BookStack 知识管理wiki平台

一切完成后,运行以下命令将某些目录的所有权更改为 www-data 用户,并确保这些目录可写。

sudo chown www-data:www-data -R bootstrap/cache public/uploads storage 
sudo chmod u+rw bootstrap/cache public/uploads storage

最后,运行以下命令将 .env 文件的权限更改为 640 。这将确保只有 www-data 用户能够修改该文件。

sudo chmod -R 640 /var/www/bookstack/.env

配置 Apache2 虚拟主机

在接下来的部分中,你将创建一个新的 Apache2 虚拟主机配置,用于运行 BookStack。因此,你必须确保已经准备好你的域名,并确保其指向服务器 IP 地址。

在创建虚拟主机配置之前,执行以下命令以启用 Apache2 上的 rewrite 模块。

sudo a2enmod rewrite

在 Debian 12 上安装 BookStack 知识管理wiki平台

现在使用以下 nano 编辑器命令创建一个新的虚拟主机配置文件 /etc/apache2/sites-available/bookstack.conf 。

sudo nano /etc/apache2/sites-available/bookstack.conf

插入以下配置,并确保更改 ServerName 选项中的域名。以下示例将使用域名 bookstack.howtoforge.local 进行 BookStack 安装。

<VirtualHost *:80>
    ServerName bookstack.howtoforge.local
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/bookstack/public/
    <Directory /var/www/bookstack/public/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
        <IfModule mod_rewrite.c>
            <IfModule mod_negotiation.c>
                Options -MultiViews -Indexes
            </IfModule>
            RewriteEngine On
            # Handle Authorization Header
            RewriteCond %{HTTP:Authorization} .
            RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
            # Redirect Trailing Slashes If Not A Folder...
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_URI} (.+)/$
            RewriteRule ^ %1 [L,R=301]
            # Handle Front Controller...
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.php [L]
        </IfModule>
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/bookstack-error.log
    CustomLog ${APACHE_LOG_DIR}/bookstack-access.log combined
</VirtualHost>

完成后保存并关闭文件。

接下来,运行以下命令以激活虚拟主机文件 bookstack.conf 并验证你的 Apache2 语法。

sudo a2ensite bookstack.conf
sudo apachectl configtest

如果你使用了正确的语法,输出 "Syntax OK" 将被打印到你的终端上。

在 Debian 12 上安装 BookStack 知识管理wiki平台

最后,运行以下 systemctl 命令来重启 apache2 服务并应用你所做的更改。

sudo systemctl restart apache2

使用 SSL/TLS 证书保护 BookStack 安全

在本指南中,你将使用 SSL/TLS 证书保护 BookStack 的安全,这些证书可以通过 Certbot 工具从 Letsencrypt 生成。

通过以下 apt install 命令安装 Certbot 和 Certbot Apache 插件。输入 y 确认并继续安装。

sudo apt install certbot python3-certbot-apache

在 Debian 12 上安装 BookStack 知识管理wiki平台

现在运行以下 certbot 命令来生成 SSL/TLS 证书并保护你的 BookStack 安装。请务必更改以下命令中的域名和电子邮件地址。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email 
[email protected]
 -d bookstack.howtoforge.local

过程完成后,你的 SSL/TLS 证书将在 /etc/letsencrypt/live/bookstack.howtoforge.local 目录中可用。此外,你的 BookStack 安装将自动配置为使用 HTTPS,这是通过 Certbot Apache 插件配置的。

访问 BookStack

至此,所有内容都已配置完成,你的 BookStack 安装已结束。你现在可以访问你的 BookStack 安装。

启动你的网页浏览器,访问你的 BookStack 安装域名,例如 https://bookstack.howtoforge.local/ ,你将被重定向到 BookStack 登录页面。

输入默认电子邮件地址 [email protected] ,密码为 password ,然后点击 Login 。

在 Debian 12 上安装 BookStack 知识管理wiki平台

如果成功,你应该会看到如下所示的 BookStack 仪表板:

在 Debian 12 上安装 BookStack 知识管理wiki平台

结语

总结一下,你已经在 Debian 12 服务器上一步步成功安装了 BookStack。你通过 Git、Composer 以及 LAMP Stack(Apache2、MariaDB 和 PHP)软件包安装了 BookStack。你还使用来自 Letsencrypt 的 SSL/TLS 证书保护了 BookStack 的安全。从这里开始,你现在可以填充你的信息并构建你自己的文档。