本教程适用于以下操作系统版本
- Debian 12(Bookworm)
- Debian 11(Bullseye)
- Debian 9(Stretch)
本页内容
- 准备工作
- 安装依赖项
- 配置 UFW
- 配置 php.ini
- 配置 MariaDB 服务器
- 下载 DokuWiki 源代码
- 配置 Apache2 虚拟主机
- 使用 SSL/TLS 证书加固 DokuWiki
- 通过 Web 安装程序安装 DokuWiki
- 总结
DokuWiki 是一款简单、多功能的开源维基软件,无需数据库支持。它以易于维护、可读性强以及用户管理方便而著称,非常适合在企业或协作环境中创建和管理文档。DokuWiki 基于 PHP 构建,这款多功能的维基软件内置访问控制(ACL)功能,并支持主流的身份验证驱动。DokuWiki 提供了简便的管理方式,易于安装、维护,也便于在不同主机之间备份迁移。
在本指南中,我们将逐步指导你在 Debian 12 服务器上安装 DokuWiki。你将使用 LAMP 技术栈(Apache2、MariaDB 和 PHP)、UFW 防火墙,并通过 Let's Encrypt 配置 SSL/TLS 证书来安装 DokuWiki。
准备工作
在开始本指南之前,请确保你已具备以下条件:
- 一台 Debian 12 服务器。
- 一个具有管理员权限的非 root 用户。
- 一个已解析到服务器 IP 地址的域名。
安装依赖项
默认情况下,DokuWiki 软件包在 Debian 软件仓库中可用。但为了确保安装的是最新版本的 DokuWiki,你将在 Debian 服务器上手动安装 DokuWiki。
在本节中,你将安装 DokuWiki 所需的依赖项,包括 LAMP 技术栈软件包(Apache2、MariaDB 和 PHP)、UFW 防火墙以及 Certbot。
在开始之前,请使用以下命令更新你的 Debian 软件仓库。
sudo apt update
使用以下 apt install 命令安装 LAMP 技术栈、UFW 和 Certbot 软件包。出现提示时,输入 Y 并按回车键。
sudo apt install apache2 mariadb-server php libapache2-mod-php php-xml php-mbstring php-zip php-intl php-gd ufw certbot python3-certbot-apache

安装完成后,请验证 Apache 和 MariaDB 服务的状态,以确保服务正在运行。
执行以下命令检查 apache2 服务。
sudo systemctl is-enabled apache2
sudo systemctl status apache2
当 apache2 正在运行时,你应该会看到 'active (running)' 的输出。而 'enabled' 的输出则确认 apache2 将在系统启动时自动启动。

现在执行以下命令验证 mariadb 服务。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
请确保你的 Debian 系统上 mariadb 服务处于 'enabled' 且 'active (running)' 状态。

配置 UFW
在本指南中,你将使用 UFW(Uncomplicated Firewall,简易防火墙)来保护你的 Debian 服务器。为此,你必须开放 SSH 端口以便远程访问,并开放 HTTP 和 HTTPS 协议所使用的端口来运行 DokuWiki 安装。
运行以下命令,将 OpenSSH 和 'WWW Full' 配置文件添加到 UFW。
OpenSSH 配置文件将开放默认的 SSH 端口 22,而 'WWW Full' 配置文件则会同时开放 HTTP 和 HTTPS 端口。
sudo ufw allow OpenSSH
sudo ufw allow 'WWW Full'
现在,运行以下命令在 Debian 系统上启动并启用 UFW。
sudo ufw enable
当被询问是否确认时,输入 y,你应该会看到类似 'Firewall is active and enabled on system startup' 的输出。UFW 将在系统启动时自动运行。

最后,运行以下命令验证 UFW 状态。请确保在你已启用的 UFW 规则中列出了 OpenSSH 和 'WWW Full' 这两个配置文件。
sudo ufw status

配置 php.ini
在接下来的小节中,你将通过修改默认的 php.ini 文件,并调整部分配置来为 DokuWiki 安装配置 PHP。
运行以下 nano 编辑器命令,打开 PHP 配置文件 '/etc/php/8.2/apache2/php.ini'。
sudo nano /etc/php/8.2/apache2/php.ini
使用以下内容修改默认配置。请务必根据你的服务器当前内存(RAM)调整 memory_limit 参数。
memory_limit=256M upload_max_filesize=32M post_max_size=32M max_execution_time=60
完成后,保存并关闭文件。
现在,运行以下 systemctl 命令以重启 apache2 服务,使你的修改生效。
sudo systemctl restart apache2
配置 MariaDB 服务器
既然已经完成了 PHP 的配置,下一步就是配置你的 MariaDB 服务器安装,然后创建一个供 DokuWiki 使用的新数据库和用户。
执行以下 mariadb-secure-installation 命令,开始 MariaDB 的配置过程。
sudo mariadb-secure-installation
当被询问是否将新配置应用到 MariaDB 时,输入 Y;你也可以输入 n(No)来拒绝。以下是你会被提示进行的 MariaDB 配置项:
- MariaDB 默认安装没有密码,在提示输入密码时直接按回车键。
- 现在输入 Y 来设置 MariaDB 的 root 密码。然后输入 MariaDB 的新密码并重复输入一次。
- 输入 Y 以从 MariaDB 安装中移除匿名用户。
- 在提示禁用 MariaDB root 用户的远程登录时,再次输入 Y。
- 输入 Y 以从 MariaDB 中移除默认的 test 数据库。
- 最后,输入 Y 以重新加载表权限并应用新的更改。
MariaDB 配置完成后,你需要创建一个供 DokuWiki 使用的新数据库和用户。
执行以下 mariadb 命令登录 MariaDB 服务器。出现提示时,输入你的 MariaDB root 密码。
sudo mariadb -u root -p
现在运行以下查询,创建新数据库 dokuwikidb、用户 dokuwiki,密码为 'p4ssword'。请务必将密码替换为你自己的新密码。
CREATE DATABASE dokuwikidb;
CREATE USER dokuwiki@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON dokuwikidb.* TO dokuwiki@localhost;
FLUSH PRIVILEGES;

接下来,验证用户 dokuwiki 是否拥有对数据库 dokuwikidb 的权限。
SHOW GRANTS FOR dokuwiki@localhost;
在以下输出中,你已为用户 dokuwiki 配置了针对数据库 dokuwikidb 的全部权限。

最后,输入 quit 退出 MariaDB 服务器,进入下一步。
下载 DokuWiki 源代码
在本节中,你将下载 DokuWiki 源代码,并设置具有适当权限的安装目录。
切换到 /var/www/ 目录,并使用以下 wget 命令下载 DokuWiki 的最新稳定版本。
cd /var/www/
wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
现在解压 dokuwiki-stable.tgz 文件,并将解压出的目录重命名为 dokuwiki。这样,你的 DokuWiki 安装目录将位于 /var/www/dokuwiki。
tar xzvf dokuwiki-stable.tgz
sudo mv dokuwiki-*a dokuwiki
最后,运行以下命令,将 /var/www/dokuwiki 目录的所属用户修改为 www-data。这样,你的 Apache2 Web 服务器才能读取 DokuWiki 的源代码。
sudo chown -R www-data:www-data /var/www/dokuwiki
配置 Apache2 虚拟主机
下载 DokuWiki 之后,你现在需要创建一个新的 Apache2 虚拟主机文件来运行 DokuWiki。在开始之前,请确保你已准备好域名。在本示例中,我们将使用域名 wiki.howtoforge.local。
现在,运行以下 nano 编辑器命令,创建新的 Apache2 虚拟主机配置文件 /etc/apache2/sites-available/dokuwiki.conf。
sudo nano /etc/apache2/sites-available/dokuwiki.conf
插入以下配置内容,并务必将域名 wiki.howtoforge.local 替换为你自己的域名。
<VirtualHost *:80> ServerName wiki.howtoforge.local DocumentRoot /var/www/dokuwiki <Directory ~ "/var/www/dokuwiki/(bin/|conf/|data/|inc/)"> <IfModule mod_authz_core.c> AllowOverride All Require all denied </IfModule> <IfModule !mod_authz_core.c> Order allow,deny Deny from all </IfModule> </Directory> ErrorLog /var/log/apache2/wiki.howtoforge.local_error.log CustomLog /var/log/apache2/wiki.howtoforge.local_access.log combined </VirtualHost>
完成后,保存并关闭文件。
接下来,运行以下命令启用 dokuwiki.conf 虚拟主机,并验证 Apache 配置语法以确保没有错误。
sudo a2ensite dokuwiki.conf
sudo apachectl configtest
如果语法正确且没有错误,你将看到 'Syntax OK' 的输出。

最后,运行以下命令重启 Apache2 服务器,使你的修改生效。
sudo systemctl restart apache2
使用 SSL/TLS 证书加固 DokuWiki
此时,你的 DokuWiki 已经运行并可访问。但为了确保安装的安全性,你将通过 Let's Encrypt 配置 SSL/TLS 证书。
执行以下 certbot 命令,为你的 DokuWiki 域名生成 SSL/TLS 证书。请务必将邮箱地址和域名替换为你自己的信息。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email
[email protected]
-d wiki.howtoforge.local
该过程完成后,你的 DokuWiki 安装应已自动配置好 HTTPS。而你的 SSL/TLS 证书应位于 /etc/letsencrypt/live/yourdomain.com 目录中。
通过 Web 安装程序安装 DokuWiki
打开你的网页浏览器,访问你的 DokuWiki 安装域名,例如 https://wiki.howtoforge.local/install.php。你应该会看到 DokuWiki 的 Web 安装界面。
选择“启用 ACL”选项,输入你的 DokuWiki 管理员用户名、邮箱和密码,然后点击“保存”。

安装成功后,你应该会看到“配置已成功完成。”的输出。
图片

现在回到你的终端,使用以下命令删除 install.php 脚本。
sudo rm /var/www/dokuwiki/install.php
接下来,点击“你的新 DokuWiki”链接以继续。你应该会看到类似下图的 DokuWiki 主页。

现在点击“登录”按钮,你应该会看到类似下图的 DokuWiki 登录页面。

输入你的管理员用户名和密码,然后点击“登录”。登录成功后,你将进入 DokuWiki 仪表盘。

总结
恭喜!你已成功在 Debian 12 服务器上完成 DokuWiki 的安装。你使用 LAMP 技术栈(Apache2、MariaDB 和 PHP)安装了 DokuWiki,并通过 UFW(Uncomplicated Firewall,简易防火墙)以及来自 Let's Encrypt 的 SSL/TLS 证书加固了你的 DokuWiki 安装。