在WSL2部署mediaWiki(一)
最近在探索一个小型团队可用的wiki系统,一开始准备用VuePress,思来想去感觉纯前端的静态系统还是不太适合。于是研究了当下主流选择,wiki.js、confluence、dokuwiki、Gitbook云云。最后的决定是用mediaWiki,主要因为这几点:
服务器端渲染,可以实现登录鉴权,以及简单的用户管理,保护数据安全
拥有Navigation popups(或者Page Previews),快速预览词条,在我看来是wiki的灵魂
界面接受度高,只要用过wikiPedia就不会感觉太陌生,毕竟
让大家写文档比选个好用的 wiki 要难的多
接下来就是实战了,本来准备在vps上搞,无奈内存太小,放弃。想到要在win10笔电上跑PHP就头大,好在有WSL这个神器,于是正式开始折腾。
a. 最终效果
本着在兼容的前提下尽量安装更新的版本(减少bug),最后完成的程序清单如下
WSL2/ Debian 10(buster)
zsh 5.7.1
Apache 2.4.38
Nginx 1.19.10PHP 7.4.18
Mariadb 10.5
mediaWiki 1.35.2
WSL
和Windows Terminal Preview
的安装过程略去,最好是照着微软官方文档撸下来。至于为什么装Debian而不用Ubuntu,可能单纯图新鲜吧(后面发现网络资源上和Ubuntu真的没法比,有点后悔了)
b. proxy/ zsh/ apt源配置
首先设置root密码,更换apt国内源,安装curl、wget、vim、git。至于Proxy,这里参考ZingLix同学的脚本实现快速切换。
然后安装ZSH,注意chsh -s $(which zsh)
不要在root状态下执行。重新登陆后根据说明设定好,再安装oh-my-zsh
,之后的操作就要方便很多。注意设置Proxy的alias要在.zshrc
里进行添加。
c. 安装nginx/ PHP 7.4
mediaWiki官方建议装PHP 7.4.3之后的版本,并且不建议上8.0。一开始按照网上Ubuntu的教程没有走通,Debian 10下推荐这样:
|
Nginx的安装类似:
|
修改nginx的配置,略去不表,最头疼的权限问题来了。
首先top一下观察nginx和php-fpm运行在哪个用户名,最后决定统一在www-data
用户组下
|
然后在根目录建立phpinfo,用来测试php能否跑通。浏览器打开,运气好的话你就能看见熟悉的紫色表格。
d. 安装Mariadb和mediaWiki
参考了官方教程,直接上代码吧
1 |
|
e. 重要Bug
按照忆兰居士的介绍,配置好后看上去一切正常,然而VisualEditor却不工作,一直报错「Error contacting the Parsoid/RESTBase server: http-bad-status」。一番搜索发现是共性问题,测试后发现,和配置里的$wgGroupPermissions['*']['read'] = false;
有关。也即这个问题出现在私有wiki中。因为是在WSL上搭建的,所以无法验证是不是跟本地访问有关。最后的解决办法是,在LocationSettings.php
最后加上这个
|
并且,只有从nginx换到apache2才起作用。而且这个方案不是对所有人有效,不过暂时是可以使用编辑器了。最后献上默认的菊花Logo,建站完成第一件事就是替换掉它
2021.05.27更新
终于搞明白了apache2、php、nginx三者之间的关系了。似乎装php的时候libapache2-mod-php7.4
默认也附带上了,有了这个其实就可以愉快的玩耍php了(debian10 默认安装了apache2)只需要控制apache2的开关就能附带控制php。php7.4-fpm
是搭配Nginx用的,不启用也没关系。
参考
我想给团队搭建一个 wiki,大家有什么方便使用的开源 wiki 推荐吗 ? - V2EX
Debian 10 Buster 国内常用镜像源 - 云+社区 - 腾讯云 (tencent.com)
WSL2 中访问宿主机 Windows 的代理 - ZingLix Blog
Installing ZSH · ohmyzsh/ohmyzsh Wiki (github.com)
How to Install Nginx and PHP 7.4 on Debian 10 | Hostup
Upgrade to MariaDB Community Server 10.5 on Debian 10 — MariaDB Enterprise documentation
Installing Apache, MariaDB And PHP In Debian 10 — mercurial | by Sizil Krishna | Medium
Error contacting the Parsoid/RESTBase server: http-bad-status on Extension talk:VisualEditor (mediawiki.org)
MediaWiki简介及安装 - 知乎 (zhihu.com)