此前我已经写了几篇 DokuWiki 的优化文章,关于备案,关于字体,关于样式,这些都是细节,都是手段,我们使用 Wiki 软件,关键还是梳理知识,学习编程,DokuWiki 在这两个方向,得天独厚,它是一套功能强大、设计优雅、代码开源、维护简单的 PHP 软件,把 DokuWiki 研究透了,将收获知识和编程的双重回报。

这一篇文章,回过头来,从 DokuWiki 的安装开始学习,操作系统为 Windows 10。如果您已经用了 Linux 服务器,或者熟练掌握 macOS 的 Homebrew 应用,可以略过本篇,对 Linux 或 FreeBSD 的用户而言,安装 PHP 、nginx 都是基本操作。

准备软件

DokuWiki 依赖 PHP 和 Web Server,根据官方的要求:

  • PHP 7.2+,推荐 8;
  • Web Server 推荐 nginx,可选 Apache,也支持 IIS,lighttpd 等;

本文以 php-8.0.27-Win32-vs16-x64,nginx-1.25.3 为例,推荐到官网下载。

所谓安装,实际为解压,建议先在 D 盘新建文件夹: d:/wiki,将下载的 zip 包复制到 d:/wiki 目录,解压,推荐的路径:

  • d:/wiki/php-8.0.27-Win32-vs16-x64/php.exe
  • d:/wiki/nginx-1.25.3/nginx.exe

Win + R,输入 cdm,回车打开启动命令解释器,输入 CD d:/wiki/nginx-1.25.3/,回车,再输入 d:,即可进入 nginx 安装目录,输入 start nginx,如果命令行不报错,打开浏览器,输入:localhost,正常能看到 nginx 的欢迎页面。

nginx 启动成功以后,再测试 PHP,输入 CD d:/wiki/php-8.0.27-Win32-vs16-x64,目录切换成功以后,输入 php.exe,有可能报错:

PHP Warning: ‘vcruntime140.dll’ 14.0 is not compatible with this PHP build linked with 14.16 in Unknown on line 0

到微软官网下载最新的 Microsoft Visual C++ Redistributable for Visual Studio 2022,安装,重启系统即可。

如果感觉分别安装 PHP、nginx 有难度,也可以尝试 Wamp、XAMPP 等集成环境,但 DokuWiki 不需要 MySQL,也不需要 Perl,更不需要那么多扩展程序,即使安装成功,对系统和软件都是很大的资源浪费。而且因为 Windows 10 复杂的安全设置,Apache 很有可能启动失败。

还有一个更简单的可选方案,下载 Resin 4.0.66 GPLv3 版,支持 PHP 的 Web Server。

Resin is a high-performance, scalable Java/PHP application server. We release two versions of Resin: an open source version under the GPL, and a professional version with enhanced performance, clustering, and reliability features.

准备环境的过程,可能会遭遇各种错误,不要灰心,解决问题的过程,就是学习进步的过程。事实上,哪怕是专业的程序员,也至少有一半时间是在处理各种报错。软件开发,或者说任何创造意义的工作,都是失败无数次以后才能取得成功,一帆风顺是偶然。

第三步,从 DokuWiki 官网下载最新的程序包:dokuwiki-stable.tgz

tgz 文件后缀,是启用 gzip 压缩的 tar 备份文件,用 WinRAR 或 7Zip 都可以解压,建议最终路径:

d:/wiki/dokuwiki/index.php

集成环境

PHP、nginx、DokuWiki 都准备好之后,接下来将三者集成起来。

第一步,将 PHP 目录下 php.ini-development 改为名 php.ini,作为默认配置文件,为以后可能的扩展作准备;

第二步,用文本编辑器(推荐 Sublime),打开 nginx/conf 目录下的 nginx.conf,对照以下参考配置修改:

server {
    listen 80;
    server_name localhost;
    index index.php;
    error_log d:/wiki/nginx-1.25.3/logs/localhost.error.log;
    access_log d:/wiki/nginx-1.25.3/logs/localhost.access.log;
    root d:/wiki/dokuwiki/;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
    }
}

第三步,启动服务:

d:/wiki/php-8.0.27-Win32-vs16-x64/php-cgi.exe -b 127.0.0.1:9000

d:/wiki/nginx-1.25.3/nginx.exe -s stop
d:/wiki/nginx-1.25.3/nginx.exe

127.0.0.1:9000 表示 CGI 在 9000 端口接收 nginx 转发的请求,PHP 处理完成以后返回给浏览器。

如果一切顺利,浏览器打开 localhost,就能访问 DokuWiki 的首页,但此时没有完成安装,可访问:

http://localhost/install.php,根据提示完成基本的配置。

简化程序

DokuWiki 已经可以正常运行,但是 PHP CGI 以守护进程启动,CMD 命令提示符窗口不能关闭,可参考博客园刘杰的文章,用 BAT 命令简化操作。

首先下载 RunHiddenConsole,推荐去 Github 下载,这是源程序地址

Hide console window for Windows programs.

点击 Code => Download ZIP,解压,将 bin\x64\RunHiddenConsole.exe 拷贝到 c:/Windows/System32,然后参考以下程序,编写自己的批处理代码:

启动 PHP 和 nginx:

@echo off
color 3

echo Start Php-cgi...
@ping -n 2 127.0.0.1 >nul
"c:\Windows\System32\RunHiddenConsole.exe" "d:\wiki\php-8.0.27-Win32-vs16-x64\php-cgi.exe" -b 127.0.0.1:9000 -c "d:\wiki\php-8.0.27-Win32-vs16-x64\php.ini"
echo Start Nginx...
"c:\Windows\System32\RunHiddenConsole.exe" "d:\wiki\nginx-1.25.3\nginx.exe" -p "d:\wiki\nginx-1.25.3"
@ping -n 2 127.0.0.1 >nul

exit

停止 PHP 和 nginx:

@echo off
echo Stopping nginx...  
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit

过程中发现任何问题,都不要沮丧,对照错误提示,上谷歌搜索即可,程序官网、StackOverflow 都有可借鉴的解决方案。譬如 PHP 和 nginx 在 Windows 环境的集成,就有官网文章

不推荐用百度搜索。百度不是真正的搜索引擎,而是付费的流量推广平台。如果没有条件科学上网,也尽量使用微软必应。

最后修改:2023 年 11 月 09 日
如果觉得我的文章对你有用,请随意赞赏