Ubuntu 22.04 安装 DokuWiki 2026-07-14c 指南

Ubuntu 22.04 从零安装 DokuWiki 2026-07-14c:Nginx+PHP-FPM 与 Apache 双方案、PHP 8.2+ 排障、权限修正、安装向导、升级回滚与卸载,全部实测。

DokuWikiDokuWiki2026/10/22

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/

二、前置条件

开始安装前,先确认服务器具备以下条件:

  1. 一台 Ubuntu 22.04 服务器,具备 sudo 权限的账户(本文以 root 演示);
  2. 服务器可访问外网(下载 DokuWiki 安装包;若经代理出网,见 4.3 的代理配置方法);
  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 对应 tagrelease-2026-07-14cshields.io 版本徽章 https://img.shields.io/github/v/tag/splitbrain/dokuwiki.json(返回 release-2026-07-14c)
官方源码仓库https://github.com/splitbrain/dokuwikiGitHub 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 languageen向导与站点界面语言,可改 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.36Apache 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 不可逆。

十一、参考链接