Ubuntu 22.04 安装 DokuWiki 2026-07-14c 指南
Ubuntu 22.04 从零安装 DokuWiki 2026-07-14c:Nginx+PHP-FPM 与 Apache 双方案、PHP 8.2+ 排障、权限修正、安装向导、升级回滚与卸载,全部实测。
Ubuntu 22.04 安装 DokuWiki 2026-07-14c 指南
目标:在 Ubuntu 22.04 服务器上从零安装官方最新稳定版 DokuWiki 2026-07-14c "Mort",覆盖 Nginx + PHP-FPM 主线方案、Apache2 备用方案、目录权限、安装向导、升级与卸载全流程,全部命令与回显均在 Ubuntu 22.04 实测环境逐条验证通过。
一、环境信息
本文所有命令在以下环境实测通过,回显均为真实输出:
- 操作系统:Ubuntu 22.04(x86_64,jammy)
- DokuWiki:2026-07-14c "Mort"(官方最新稳定版,实查官方下载通道,查询日期 2026-10-22)
- Web 服务器:Nginx 1.18.0(方案 A)、Apache 2.4.52(方案 B)
- PHP:8.3.36(deb.sury.org 源,php8.3-fpm / libapache2-mod-php8.3)
- 部署路径:
/var/www/dokuwiki/ - 服务端口:80(方案 A)、8080(方案 B 演示端口,生产可改回 80)
- 示例管理员:
admin,密码q1w2e3r4 - 数据存储:无数据库,纯文件存储于
/var/www/dokuwiki/data/
二、前置条件
开始安装前,先确认服务器具备以下条件:
- 一台 Ubuntu 22.04 服务器,具备 sudo 权限的账户(本文以 root 演示);
- 服务器可访问外网(下载 DokuWiki 安装包;若经代理出网,见 4.3 的代理配置方法);
- 已知或已配置的域名(可选,无域名时用服务器 IP 访问)。
先用一条命令确认系统版本,确保与本文环境一致:
lsb_release -a
实测回显:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
再确认 PHP 版本基线。DokuWiki 官方 requirements 明确要求:当前稳定版需要 PHP 8.2 或更高版本(来源 https://www.dokuwiki.org/requirements ,页面最后修改 2026-07-15,查询日期 2026-10-22)。而 Ubuntu 22.04 官方仓库自带的 PHP 是 8.1,不满足要求——这是本指南最重要的前置坑,处理方法见 4.3 节排障实录。
三、版本选型说明
DokuWiki 版本号采用「发布日期 + 修订字母」格式。本文撰写时(2026-10-22)实查官方下载通道得到最新稳定版:
| 项目 | 实查结果 | 获取方式 |
|---|---|---|
| 最新稳定版 | 2026-07-14c "Mort" | curl -sI https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz 直接下载后查看包内 VERSION 文件 |
| 包根目录名 | dokuwiki-2026-07-14c/ | tarball 解压后 ls |
| GitHub 对应 tag | release-2026-07-14c | shields.io 版本徽章 https://img.shields.io/github/v/tag/splitbrain/dokuwiki.json(返回 release-2026-07-14c) |
| 官方源码仓库 | https://github.com/splitbrain/dokuwiki | GitHub Releases |
关键差异解读:DokuWiki 没有「LTS/最新」双轨之分,dokuwiki-stable.tgz 永远指向当前推荐稳定版;生产环境直接用该地址即可。如果需要锁定某一具体版本,把 URL 中的 dokuwiki-stable.tgz 换成 dokuwiki-2026-07-14c.tgz 这样的具体版本号即可。版本历史见官方 https://www.dokuwiki.org/changes 。
四、方案 A:Nginx + PHP-FPM + 官方 tarball 在线安装
4.1 方案说明
本方案是 Linux 服务器上最常见的主流组合:Nginx 提供 Web 服务,PHP-FPM 以 FastCGI 方式执行 DokuWiki 的 PHP 代码,DokuWiki 本体从官方下载通道取最新稳定版 tarball 解压部署。全程不需要数据库。后续 4.2~4.8 小节按「装 Web 层 → 装 PHP → 下载数据包 → 配权限 → 配站点 → 跑向导 → 验证」的顺序完整走一遍。
4.2 安装 Nginx
先更新软件源索引,再安装 Nginx:
apt-get update
apt-get install -y nginx
实测回显(节选):
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
nginx-common
...
Setting up nginx (1.18.0-0ubuntu1.4+...) ...
安装完成后确认 Nginx 版本:
nginx -v
实测回显:
nginx version: nginx/1.18.0 (Ubuntu)
4.3 安装 PHP 8.3(含 PHP 版本排障实录)
排障实录:Ubuntu 22.04 官方源 PHP 8.1 无法运行 DokuWiki 2026-07-14c。
如果直接用官方源安装 PHP 并跳过本节升级,访问 install.php 时会得到 HTTP 500,页面内容如下(实测原文):
Composer detected issues in your platform:
Your Composer dependencies require a PHP version ">= 8.2.0".
这与官方 requirements 的声明一致(PHP >= 8.2)。解决方法是添加 deb.sury.org 软件源安装 PHP 8.3。标准做法是使用 ondrej/php PPA,但实测中 PPA 的 CDN 出现过持续 503:
E: Failed to fetch https://ppa.launchpadcontent.net/ondrej/php/ubuntu/pool/main/p/php8.3/php8.3-xml_8.3.36-1%2bubuntu22.04.1%2bdeb.sury.org%2b1_amd64.deb 503 Service Unavailable
此时改用其官方同步镜像 deb.sury.org 软件源,步骤如下。
先装 HTTPS 下载工具与基础组件,再导入 sury.org 签名密钥并添加源:
apt-get install -y curl gnupg
curl -s -o /etc/apt/trusted.gpg.d/sury.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ jammy main" > /etc/apt/sources.list.d/sury-php.list
apt-get update
安装 PHP 8.3-FPM 及 DokuWiki 需要的扩展(xml/multibyte/gd/curl):
apt-get install -y php8.3-fpm php8.3-xml php8.3-mbstring php8.3-gd php8.3-curl
实测回显(节选,关键行):
Processing triggers for php8.3-fpm (8.3.36-1+ubuntu22.04.1+deb.sury.org+1) ...
验证 PHP 版本与 FPM 进程池:
php8.3 -v
实测回显:
PHP 8.3.36 (cli) (built: Oct 21 2026 14:31:50) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.36, Copyright (c) Zend Technologies
with Zend OPcache v8.3.36, Copyright (c), by Zend Technologies
⚠️ 注意:若服务器上同时存在 PHP 8.1 与 8.3,Nginx 站点配置里的 FastCGI socket 路径必须指向
/run/php/php8.3-fpm.sock(见 4.6 节)。socket 文件是否就位可用ls /run/php/ | grep sock确认,正常应看到php8.3-fpm.sock。
若服务器经代理出网导致 apt 下载失败,可给 apt 配置代理后重试:
printf 'Acquire::http::Proxy "http://<代理地址>:<端口>";\nAcquire::https::Proxy "http://<代理地址>:<端口>";\n' > /etc/apt/apt.conf.d/99proxy
4.4 下载并部署 DokuWiki
从官方下载通道取最新稳定版 tarball 并解压。先下载:
cd /tmp
curl -L -o dokuwiki-stable.tgz https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
实测回显(下载耗时与结果):
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4168k 100 4168k 0 0 1268k 0 0:00:03 0:00:03 --:--:-- 1268k
下载的 tarball 约 4 MB。解压并把版本目录改名为标准部署路径 /var/www/dokuwiki:
tar xzf dokuwiki-stable.tgz
ls -d dokuwiki-*/
cat dokuwiki-2026-07-14c/VERSION
mv dokuwiki-2026-07-14c /var/www/dokuwiki
实测回显:
dokuwiki-2026-07-14c/
2026-07-14c "Mort"
💡 说明:
VERSION文件输出「版本号 + 代号」,2026-07-14c 的代号是 "Mort"。tarball 根目录名自带版本号,若下载到不同版本,mv的源目录名按实际为准。
确认部署后的目录结构:
ls /var/www/dokuwiki
实测回显:
COPYING README SECURITY.md VERSION bin conf data doku.php feed.php inc index.php install.php lib vendor
关键目录解读:conf/ 存放全部配置(含用户与 ACL),data/ 存放页面/媒体/历史版本(纯文本文件),bin/ 是命令行工具,inc/ 与 vendor/ 是程序核心,install.php 是一次性安装向导。
4.5 配置目录属主与权限
排障实录:data 目录属主为 root 导致安装器报错。 部署后若不修正属主,访问 install.php 会出现如下报错(实测原文):
DokuWiki Setup Error
The datadir ('pages') at /var/www/dokuwiki/data/pages is not found, isn't accessible or writable.
You should check your config and permission settings.
Or maybe you want to run the installer?
原因:tarball 解压出的文件属主是 root,而 PHP-FPM 工作进程以 www-data 身份运行,无法写入 data/(页面与附件)、conf/(向导要写入生成的 local.php)与 lib/plugins/(插件安装)。把这三个目录递归交给 www-data:
chown -R www-data:www-data /var/www/dokuwiki/data /var/www/dokuwiki/conf /var/www/dokuwiki/lib/plugins
验证属主已修正:
ls -ld /var/www/dokuwiki/data/pages
实测回显:
drwxr-xr-x 4 www-data www-data 4096 Oct 21 22:18 /var/www/dokuwiki/data/pages
💡 技术拓展:目录授权粒度不止本文采用的「三个关键目录交给 www-data」一种,常见做法对比——
做法 原理/特点 适用场景 关键目录授权(本文采用) 仅 data/conf/lib/plugins 交给 Web 用户,其余 root 只读 生产推荐,最小写入面 整站授权 chown -R www-data /var/www/dokuwiki,程序升级方便单人维护的小站 setfacl 细粒度 对指定目录加 ACL,保留原属主 多服务共用目录、权限审计严格 本文采用「关键目录授权」,理由是写入面最小且不影响程序升级时的文件替换。
4.6 Nginx 站点配置
创建 /etc/nginx/sites-available/dokuwiki,内容如下(实测配置,含 DokuWiki 官方推荐的伪静态规则与安全拦截):
server {
listen 80;
server_name _;
root /var/www/dokuwiki;
index doku.php index.php index.html;
client_max_body_size 15m;
client_body_buffer_size 128k;
location / {
try_files $uri $uri/ @dokuwiki;
}
location @dokuwiki {
rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
rewrite (.*) /doku.php?id=$1 last;
}
location ~ ^/lib/.*\.(js|css|png|jpg|jpeg|gif|webp|svg|xml|gz|tgz|zip|mp3|ogg|m4v|flv|swf|ttf|woff|woff2|otf|eot)$ {
expires 30d;
}
location ~ ^/(data|conf|bin|inc)/ {
deny all;
}
location ~ /\.ht {
deny all;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
逐项说明:
root:DokuWiki 部署根目录;try_files $uri $uri/ @dokuwiki:先匹配真实文件,未命中走@dokuwiki伪静态;@dokuwiki中的四条 rewrite:把/_media/、/_detail/、/_export/与页面短链接统一改写进doku.php/fetch.php(需要配合 7 节的userewrite=1才能启用短链接);deny all段:必须保留,阻止从 Web 直接访问data/、conf/、bin/、inc/,否则页面原文与配置可被任意下载;client_max_body_size 15m:放宽上传附件的体积限制(默认 1m);fastcgi_pass:指向 PHP 8.3 的 FPM socket,若只装了 8.3 按默认路径即可。
启用站点并停用默认站点,然后校验配置并重载:
ln -sf /etc/nginx/sites-available/dokuwiki /etc/nginx/sites-enabled/dokuwiki
rm -f /etc/nginx/sites-enabled/default
nginx -t
nginx -s reload
实测回显:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
4.7 运行安装向导
浏览器访问 http://<服务器IP>/install.php 打开安装向导。表单字段(实测解析自 2026-07-14c 的向导页面)如下:
| 字段 | 实测填写值 | 说明 |
|---|---|---|
| Choose your language | en | 向导与站点界面语言,可改 zh |
Wiki Name(d[title]) | Quzuo Lab Wiki | 站点名称,显示在标题栏 |
Enable ACL(d[acl]) | 勾选 | 启用访问控制,管理员后台的前提 |
superuser(d[superuser]) | admin | 超级用户登录名 |
Your full name(d[fullname]) | Wiki Administrator | 管理员显示名 |
E-Mail(d[email]) | admin@example.com | 管理员邮箱 |
password / retype(d[password]/d[confirm]) | q1w2e3r4 | 管理员密码,生产请用强口令 |
Initial ACL policy(d[policy]) | Public: read for all(值 1) | 全站可读、注册用户可写;也可选 Closed(0)或 Open(2) |
Content License(d[license]) | CC Attribution-Share Alike(cc-by-sa) | 页面内容授权声明 |
发送匿名统计(d[pop]) | 不勾选 | 向官方回报匿名使用数据,按需选择 |
也可以等价地用 curl 直接提交表单完成安装(与浏览器操作逐字段对应):
curl -X POST http://<服务器IP>/install.php \
--data-urlencode "l=en" \
--data-urlencode "d[title]=Quzuo Lab Wiki" \
--data-urlencode "d[acl]=1" \
--data-urlencode "d[superuser]=admin" \
--data-urlencode "d[fullname]=Wiki Administrator" \
--data-urlencode "d[email]=admin@example.com" \
--data-urlencode "d[password]=q1w2e3r4" \
--data-urlencode "d[confirm]=q1w2e3r4" \
--data-urlencode "d[policy]=1" \
--data-urlencode "d[license]=cc-by-sa" \
--data-urlencode "d[pop]=0" \
--data-urlencode "submit="
提交成功后向导返回的确认段落(实测原文):
The configuration was finished successfully. You may delete the install.php file now. Continue to your new DokuWiki.
按官方提示删除一次性安装脚本:
rm -f /var/www/dokuwiki/install.php
⚠️ 注意:
install.php完成安装后继续保留有被外人重跑的风险,务必删除。
向导做了什么?它把表单值写进 conf/local.php(本地覆盖配置)、conf/users.auth.php(用户账本)与 conf/acl.auth.php(访问控制表)。查看生成结果:
cat /var/www/dokuwiki/conf/local.php
实测回显:
<?php
/**
* Dokuwiki's Main Configuration File - Local Settings
* Auto-generated by install script
* Date: Wed, 21 Oct 2026 22:30:22 +0000
*/
$conf['title'] = 'Quzuo Lab Wiki';
$conf['lang'] = 'en';
$conf['license'] = 'cc-by-sa';
$conf['useacl'] = 1;
$conf['superuser'] = '@admin';
$conf['disableactions'] = 'register';
配置体系的完整说明见《DokuWiki 2026-07-14c 配置参数详解》。
4.8 首次验证
依次验证首页、登录与页面落盘,确认安装闭环。
验证首页可访问且标题正确:
curl -s -o /dev/null -w "首页 HTTP %{http_code}\n" http://<服务器IP>/doku.php
curl -s http://<服务器IP>/ | grep -oE '<title>[^<]*</title>'
实测回显:
首页 HTTP 200
<title>start [Quzuo Lab Wiki]</title>
验证管理员登录(先取登录页 Cookie,再提交账密):
curl -s -c /tmp/dw-cookie.txt "http://<服务器IP>/doku.php?do=login" > /dev/null
curl -s -b /tmp/dw-cookie.txt -D - -X POST "http://<服务器IP>/doku.php" \
--data-urlencode "do=login" \
--data-urlencode "u=admin" \
--data-urlencode "p=q1w2e3r4" -o /dev/null | grep -iE "^HTTP|^Location"
实测回显(302 跳转回 start 即登录成功):
HTTP/1.1 302 Found
Location: http://<服务器IP>/doku.php?id=start
验证纯文件存储:登录后在浏览器里创建命名空间 lab 下的页面 lab:install-test(或用 curl 带会话 Cookie 提交编辑表单),保存后到服务器上确认落盘文件:
cat /var/www/dokuwiki/data/pages/lab/install-test.txt
实测回显(内容即页面源码原文,逐字节落盘):
====== 安装验证页 ======
本页面由安装实测流程创建。
* 列表项一
* 列表项二
DokuWiki 的页面就是这样的纯文本文件——没有数据库,备份即拷贝目录。
五、方案 B:Apache2 + mod_php 在线安装
5.1 方案说明
Apache 2.4 是 DokuWiki 官方发行包适配最好的 Web 服务器(发行包内的 .htaccess 防护规则就是为 Apache 设计的,装完即生效,无需手工写安全拦截),适合熟悉 Apache 或需要复用既有 Apache 环境的团队。PHP 侧用 libapache2-mod-php8.3(mod_php)模块方式,比 FPM 少一层 socket 配置,部署最简。
5.2 安装 Apache2 与 PHP 模块
同一台服务器与方案 A 二选一即可(Apache 默认监听 80,与 Nginx 冲突;本节演示改用 8080 端口,生产单服务器环境直接用 80):
apt-get install -y apache2 libapache2-mod-php8.3
实测回显(节选,确认版本):
Setting up apache2 (2.4.52-1ubuntu4.25) ...
Setting up libapache2-mod-php8.3 (8.3.36-1+ubuntu22.04.1+deb.sury.org+1) ...
启用 rewrite 与 PHP 模块:
a2enmod rewrite php8.3
实测回显(模块已在多数发行版中默认启用):
Module php8.3 already enabled
5.3 站点配置
把 Apache 的演示监听端口从 80 改为 8080(真实单栈服务器可跳过此步保留 80):
sed -i 's/^Listen 80$/Listen 8080/' /etc/apache2/ports.conf
创建 /etc/apache2/sites-available/dokuwiki.conf:
<VirtualHost *:8080>
ServerName dokuwiki.local
DocumentRoot /var/www/dokuwiki
<Directory /var/www/dokuwiki>
Options -Indexes
AllowOverride All
Require all granted
</Directory>
<FilesMatch "^(\.htaccess|\.htaccess\.dist|\.git|\.json|\.md|\.txt)$">
Require all denied
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/dokuwiki-error.log
CustomLog ${APACHE_LOG_DIR}/dokuwiki-access.log combined
</VirtualHost>
逐项说明:
AllowOverride All:让 DokuWiki 发行包内的.htaccess规则生效(含对conf/、data/、bin/、inc/的访问拒绝与伪静态);FilesMatch兜底拒绝.txt等敏感文件直接下载(页面文件是 .txt,防直读的最后一道闸);Options -Indexes:关闭目录列表。
启用站点、校验并启动 Apache:
a2ensite dokuwiki
apachectl -t
apachectl -k start
实测回显:
Enabling site dokuwiki.
To activate the new configuration, you need to run:
service apache2 reload
Syntax OK
⚠️ 注意:
apachectl -t会附带一条AH00558: Could not reliably determine the server's fully qualified domain name提示,这是未设置全局 ServerName 的常规警告,不影响运行;需要消除时在/etc/apache2/conf-available/servername.conf写ServerName localhost并a2enconf servername。
5.4 验证
curl -s -o /dev/null -w "Apache 方案首页 HTTP %{http_code}\n" http://localhost:8080/doku.php
curl -s http://localhost:8080/doku.php | grep -oE '<title>[^<]*</title>'
实测回显:
Apache 方案首页 HTTP 200
<title>start [Quzuo Lab Wiki]</title>
方案 B 使用与方案 A 相同的 /var/www/dokuwiki 数据目录与安装向导流程(4.5 与 4.7 节步骤同样适用),数据无需迁移。
六、方案对比与选择建议
| 维度 | 方案 A:Nginx + PHP-FPM | 方案 B:Apache2 + mod_php |
|---|---|---|
| 实测软件版本 | Nginx 1.18.0 + PHP-FPM 8.3.36 | Apache 2.4.52 + mod_php 8.3.36 |
| 部署方式 | tarball + 手写站点配置 | tarball + 站点配置(.htaccess 自动生效) |
| 伪静态 | 需手写 rewrite(4.6 节配置已含) | .htaccess 内置,开 AllowOverride All 即可 |
| 安全拦截 | 站点配置 deny all 手写 | 发行包 .htaccess 自动生效 |
| 资源占用 | FPM 进程池,内存占用更平稳 | mod_php 每进程常驻 PHP,内存略高 |
| 高并发静态资源 | 强(事件驱动,静态资源 30d 缓存头) | 一般(worker/prefork 取决于 MPM) |
| 适用人群 | 追求性能与配置透明的运维 | 有既有 Apache 体系、要快速上线的场景 |
选择建议:新装服务器优先方案 A(Nginx + PHP-FPM),性能与内存表现更好、配置显式可控;已有 Apache 栈或希望「零伪静态配置」直奔主题时选方案 B。两方案共用同一套 DokuWiki 目录,切换 Web 层不需要动数据。
七、安装后配置说明
安装完成后最常见的两类调整:界面语言与短链接 URL。两者都在 /var/www/dokuwiki/conf/local.php 中追加(该文件是官方推荐的本地覆盖配置,切勿直接改 conf/dokuwiki.php 默认值文件):
cat >> /var/www/dokuwiki/conf/local.php << 'EOF'
$conf['lang'] = 'zh';
$conf['userewrite'] = 1;
$conf['useslash'] = 1;
EOF
lang=zh:界面语言改为简体中文,实测刷新后导航出现「登录 / 工具 / 最近更改」;userewrite=1:启用伪静态短链接,配合 4.6 节 Nginx rewrite 规则(方案 B 依赖.htaccess);useslash=1:命名空间分隔符由冒号:换成斜杠/,URL 形如/lab/install-test。
验证短链接已生效(返回 200 说明 rewrite 正常):
curl -s -o /dev/null -w "短链接 HTTP %{http_code}\n" "http://<服务器IP>/lab/install-test"
实测回显:
短链接 HTTP 200
⚠️ 注意:修改
local.php后无需重启 PHP-FPM,保存即生效(每次请求都会读配置)。全部配置参数的含义、默认值与调优建议见《DokuWiki 2026-07-14c 配置参数详解》。
八、升级与回滚
8.1 升级前备份
DokuWiki 无数据库,升级备份只需打包 conf/(配置、用户、ACL)与 data/(页面、媒体、历史版本)两个目录:
tar czf /root/dw-backup-conf-data.tgz -C /var/www/dokuwiki conf data
ls -la /root/dw-backup-conf-data.tgz
实测回显:
-rw-r--r-- 1 root root 118034 Oct 21 22:32 /root/dw-backup-conf-data.tgz
8.2 从旧版本升级到 2026-07-14c(实测)
以下流程在真实环境从 2023-04-04a "Jack Jackrum" 升级到 2026-07-14c "Mort" 完整实测通过。核心原则:新版本核心程序覆盖,conf/ 与 data/ 两个数据目录原样保留。
先下载新版本 tarball 并解压到临时目录:
cd /tmp
curl -L -o dokuwiki-2026-07-14c.tgz https://download.dokuwiki.org/src/dokuwiki/dokuwiki-2026-07-14c.tgz
mkdir /tmp/dw-new && tar xzf dokuwiki-2026-07-14c.tgz -C /tmp/dw-new --strip-components=1
cat /tmp/dw-new/VERSION
实测回显:
2026-07-14c "Mort"
确认当前运行版本(升级前):
cat /var/www/dokuwiki/VERSION
实测回显:
2023-04-04a "Jack Jackrum"
执行升级:rsync 覆盖时排除 conf/ 与 data/,其余文件全部替换为 2026-07-14c(含 --delete 清理旧版遗留文件):
rsync -a --delete --exclude=/conf/ --exclude=/data/ /tmp/dw-new/ /var/www/dokuwiki/
cat /var/www/dokuwiki/VERSION
chown -R www-data:www-data /var/www/dokuwiki/inc /var/www/dokuwiki/lib /var/www/dokuwiki/vendor /var/www/dokuwiki/bin
实测回显:
2026-07-14c "Mort"
升级后逐项验证:首页 200、升级前创建的页面仍在、登录页正常:
curl -s -o /dev/null -w "升级后首页 HTTP %{http_code}\n" http://<服务器IP>/doku.php
curl -s "http://<服务器IP>/doku.php?id=lab:install-test" | grep -oE '<title>[^<]*</title>'
curl -s -o /dev/null -w "升级后登录页 HTTP %{http_code}\n" "http://<服务器IP>/doku.php?do=login"
实测回显:
升级后首页 HTTP 200
<title>lab:install-test [Quzuo Lab Wiki]</title>
升级后登录页 HTTP 200
💡 说明:跨多个大版本的升级(如 2023-04-04a → 2026-07-14c)也走同一流程,DokuWiki 的页面与配置格式向后兼容;升级后建议进管理后台执行一次「清除缓存与过期数据」。
8.3 回滚
升级失败需要回滚时,利用 8.1 的备份与旧版本 tarball 反向执行同样的覆盖流程:
cd /tmp
curl -L -o dokuwiki-old.tgz "https://download.dokuwiki.org/src/dokuwiki/dokuwiki-<旧版本号>.tgz"
mkdir /tmp/dw-old && tar xzf dokuwiki-old.tgz -C /tmp/dw-old --strip-components=1
rsync -a --delete --exclude=/conf/ --exclude=/data/ /tmp/dw-old/ /var/www/dokuwiki/
conf/、data/ 因始终未被覆盖,回滚后内容与升级前一致;若需恢复到备份时刻的配置与数据,再解包备份并覆盖这两个目录:
tar xzf /root/dw-backup-conf-data.tgz -C /var/www/dokuwiki/
chown -R www-data:www-data /var/www/dokuwiki/conf /var/www/dokuwiki/data
九、常见问题(FAQ)
Q1:访问 install.php 报 Your Composer dependencies require a PHP version ">= 8.2.0" 且 HTTP 500?
Ubuntu 22.04 官方源只有 PHP 8.1,而 DokuWiki 2026-07-14c 依赖要求 PHP >= 8.2(官方 requirements 明确声明)。按 4.3 节添加 sury.org 源安装 php8.3-fpm,并把 Nginx 的 fastcgi_pass 指向 /run/php/php8.3-fpm.sock。
Q2:添加 ondrej/php PPA 后 apt 报 503 无法下载 PHP 8.3 包?
实测中 PPA 的 launchpadcontent.net CDN 出现过持续 503。改用其官方同步源 deb.sury.org(同一维护者、同一批包),导入 https://packages.sury.org/php/apt.gpg 签名密钥后 apt-get update 重装即可;若代理环境下载仍失败,按 4.3 节给 apt 配置 Acquire::https::Proxy 后重试。
Q3:安装向导报 The datadir ('pages') at ... is not found, isn't accessible or writable?
data/、conf/、lib/plugins/ 属主不是 PHP-FPM 的运行用户。按 4.5 节执行 chown -R www-data:www-data 修正后刷新向导即可。
Q4:安装完成页面提示删除 install.php,不删有风险吗?
有。install.php 在站点已初始化的情况下被再次访问会暴露安装环境信息,官方在完成页明确提示 You may delete the install.php file now,按 4.7 节删除。
Q5:Nginx 下上传附件被 413 拒绝?
Nginx 默认 client_max_body_size 1m,4.6 节配置已放宽到 15m;若还需更大,同步调大该值与 conf/local.php 中的上传限制(maxuploadsize 参数)。
Q6:userewrite=1 后页面 404?
短链接依赖 Web 层 rewrite:Nginx 用 4.6 节 @dokuwiki 段;Apache 需 AllowOverride All 且 a2enmod rewrite。只改配置不配 rewrite 必 404。
Q7:升级后页面打不开或样式异常?
先确认 VERSION 文件已是新版本(8.2 节),再确认 data/、conf/ 未被覆盖(页面标题可访问即数据完好),最后清空缓存目录:rm -rf /var/www/dokuwiki/data/cache/*(cache 目录会被自动重建)。
十、卸载与清理
完整卸载分三步:移除 Web 站点 → 删除 DokuWiki 目录 → (可选)卸载 PHP 包。
Nginx 环境移除站点并重载:
rm -f /etc/nginx/sites-enabled/dokuwiki
nginx -t
nginx -s reload
实测回显:
nginx: configuration file /etc/nginx/nginx.conf test is successful
Apache 环境移除站点并重载:
a2dissite dokuwiki
apachectl -k graceful
实测回显:
Site dokuwiki disabled.
To activate the new configuration, you need to run:
service apache2 reload
删除 DokuWiki 本体(删除前确认已有 8.1 节的备份,conf/ 与 data/ 被删即页面与用户全部丢失):
rm -rf /var/www/dokuwiki
(可选)清理不再使用的 PHP 8.3 包与 sury.org 源:
apt-get remove -y php8.3-fpm php8.3-xml php8.3-mbstring php8.3-gd php8.3-curl
rm -f /etc/apt/sources.list.d/sury-php.list /etc/apt/trusted.gpg.d/sury.gpg
apt-get update
⚠️ 注意:卸载前务必先做 8.1 节的
conf/+data/备份并转移到本机之外;rm -rf /var/www/dokuwiki不可逆。
十一、参考链接
- 官方安装文档(含本指南两方案的官方对照):https://www.dokuwiki.org/install
- 官方系统要求(PHP >= 8.2 声明,页面修改于 2026-07-15):https://www.dokuwiki.org/requirements
- 官方下载通道(stable tarball 与各历史版本):https://download.dokuwiki.org
- 官方源码仓库:https://github.com/splitbrain/dokuwiki
- 安装器说明页:https://www.dokuwiki.org/installer
- 升级指引:https://www.dokuwiki.org/upgrade
- 官方配置索引:https://www.dokuwiki.org/config
- 本系列文档:《DokuWiki 2026-07-14c 介绍与选型指南》、《DokuWiki 2026-07-14c 配置参数详解》、《DokuWiki 2026-07-14c 常用 CLI 命令与工具详解》