准备重新启动我的Minecraft服务器了。想着打算开一个服务器的Wiki,记录服务器配置与规则、模组之类的信息,供玩家们查阅。
我不太想在VPS上再运行一些带数据库的Web服务,除非用SQLite,所以选择了Dokuwiki,虽然最后发现并不太合适(可能还不如用Typecho+SQLite,奈何Typecho没有我比较喜好的主题)
安装
这次还是使用我喜爱的Webinoly运维脚本配置,和上次搭建Blessing Skin的过程类似,一行site命令,使用标准的php模板并配置SSL证书,一气呵成:
site [domain.ltd] -php -ssl=on
打开 Dokuwiki 的官网下载页面,可以选择自定义最小化的编译版本,仅保留需要的插件和语言:
然后点击下载,会自动转到下载页面,下载编译的压缩包,并提示如果没有自动下载则点击链接,复制这个链接即为wget下载链接。注意有下载时限,过一段时间后会过期,因此我也无法提供下载链接。
使用 tar -xvzf
解压后获得名为 dokuwiki
的目录,将其替换默认的 htdocs目录(也可以在nginx配置文件改成 dokuwiki ),并递归设置目录所有者为www-data以取得权限。
tar -xvzf dokuwiki-*.tgz chown -R www-data:www-data ./htdocs nginx -s reload
此时已经可以在浏览器中访问了,在域名后面输入 install.php
就能够访问安装器页面,出于安全原因,这个安装器只能在全新的Dokuwiki使用一次,配置以后还需要移走 install.php 以阻止访问。
URL重写
参考Dokuwiki上的Rewrite页。可以通过URL重写移除链接中的doku.php字样,需要在配置页 > 高级设置中设定userewrite项为 .htaccess(2),以及打开canonical 完全标准的URL。
虽然userewrite表述为.htaccess,但并不是Apache HTTP Server特有的重写配置,同样也支持IIS、Nginx等多个其他的Web服务器。在此附上启用Nginx重写功能的片段,顺便设置敏感目录的阻止访问。
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&$args last; } location ~ \.php$ { if (!-f $request_filename) { return 404; } include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; fastcgi_pass 127.0.0.1:9000; } location ~ /(data|conf|bin|inc|vendor)/ { deny all; }
需注意的是,第一行的 location 配置与 Webinoly自带的 common/phpx.conf 相冲突,需要在站点Nginx主配置注释include后者以识别 @dokuwiki 。
这时URL重写便已经配置好了,如同WP的伪静态一样简单。
主题
Dokuwiki可以安装很多模板主题 (Template) ,它们以Wikipedia的风格居多,也有少数现代扁平化的设计。我比较喜欢 SprintDoc 模板,是德国人开发的,基于Material设计语言,简单而优雅,而且有著浓厚的德国工业文件的风格。
在扩展管理器中搜索 SprintDoc 就可以直接下载,然后去配置页启用template,当然也可以自己下载上传压缩包安装。
结尾
最后,我还是放弃了使用Dokuwiki,研究了一会发现,Dokuwiki的结构并不是很适合我。
尽管Dokuwiki是一种纯文件架构(Flat-file CMS)的程序,比较类似的是Grav CMS,但是并不代表从服务器下载文件就能直接所见即所得,除非直接离线存储整个网页。
Dokuwiki特有的synatx格式与富文本编辑器也不太好用,虽说有插件支持Markdown,但不是文件格式存储,依然没什么优势。
其次,Dokuwiki对于英语/拉丁语以外的语言体系的支持并不算好,虽然并不是完全不支持亚洲语系,但是URL只能设定为英文。分类的功能也不太好用,不像Mediawiki的几个站点。
最初的初衷只是为了想要记录一些服务端、客户端区分的MC模组,然而本来就有先人在mcmod百科上记载了,而且也被很多支持BMCLAPI的启动器所引用,我为何不直接写文笔记附上mcmod.cn的链接呢?
可能还是担忧突然一夜之间内容消失的重创。
虽然对一个小服务器没什么影响……我还是用OneNote吧。其实,支持metaweblog发布到WP功能的旧版Word更适合记录啊。