通过 Docker 成功部署 Moinmoin

前天晚上有了个想法,用 Docker 在我的 VPS 上部署 Moinmoin。昨天晚上实施成功。

我之前用的维基系统就是 Moinmoin,之前也部署过其他系统,不过 Moinmoin 用的时间最长,写的也最多,也是我最喜欢的一个系统。原因之前我写过,现在想来,还是跟 Zoom.Quiet 把啄木鸟社区维护的太好了有关系。不过 MoinMoin 也有自己的问题,它的维护更新挺不好的。就像 Perl 6 一样,我想 MoinMoin 团队把目标设的太高了,MoinMoin 2.0 得多少年了,还没有出来。1.x 系列不温不火的更新着,到目前还是用的 Python 2.7。我在前年把维基系统换成了 MediaWiki,其中原因之一就是不想在 VPS 上安装这么多 Python 2.7 的包。

前几天尝试部署博客的评论系统让我又实践了一些 Docker 的操作。之前虽然知道 Docker,但一直没有入门,过去也尝试了几次,纷纷以失败告终,在特别是配置 Nginx 访问的这一步,老是想不明白。前几天没有部署 Remark42 成功,但对 Docker 的了解又多了一些,前天晚上想到的就是,我既然不想在 VPS 上安装多个版本的 Python,那么让 MoinMoin 在 Docker 里面跑不就行了吗?

在心里模拟了一遍,感觉似乎没有什么问题了。昨天白天我送了孩子去上课,在手机上搜索了一下关键词,找到了一篇知乎文章,里面把一些问题说的挺清楚了,至少证明了这么做是可行的。不过文章的网络配置里用了我没听说过的 traefik,搜索了一下感觉似乎没什么必要,于是就不用文章的配置,改用文章的思路。

文章里用的是 olavgg/moinmoin-wiki 的镜像,我看了一下文档,里面还有 SSL 的配置,我感觉更加复杂,有些问题也没弄明白,于是自己找了一个镜像,是 takumaw/moinmoin-docker,至少它的 docker-compose.yml 文件够简单,文档写的也挺明白,至少我是弄明白了一些。运行了实例后,在 liuf.net:8080 的确看到了 MoinMoin 的界面,不过这是第一步,还要配置好 Nginx 反向代理才是我的目标。

不过这一步也没费我很多功夫,因为我过去的维基记录里挺详细的记录了每一步的配置,包括 Nginx 的配置代码。我把代码复制过来,把之前 uwsgi_pass 的参数从 UNIX sock 文件改成了 IP:端口号,简单几次就成功了。之后我也没管太多,手动复制了之前博客的页面文件,然后照着调整了一下 wikiconfig.py 文件,过去的页面就都能看了。

我在登录的时候遇到了问题,1Password 里保存的用户名和密码输进去提示密码错误。我当时想的是或许 MoinMoin 初始化的时候是不是随机生成的 salt 值不一样。然后找重置密码的方法。找到了一行命令执行出错,仔细看却是 MoinMoin 2.0 的命令,1.x 没法从命令行指定新密码。然后用系统本身的忘记密码功能,却得知需要发邮件。我过去配置过 VPS 发送邮件,这个 VPS 都没有配置,于是又配置 Exim4。好在之前的维基里也有记录,照着弄了一通有问题,把 mutt 之类的都加上了做测试,最终发现给 liuf.net 之外的域名发可以,给自己的域名发送就不行,查文档估计是 hostname 配置没配好,反正现在还没有解决。我偶然用之前的密码进行测试,竟然成功登录了,这才想明白,1Password 里存的密码是我切换到 MediaWiki 后生成的随机密码,之前的 MoinMoin 还是老密码。

还遇到一个问题,一些默认的页面失效了。这一点我并不是很肯定,因为也有两年多没用了。MoinMoin 的一些特殊页面,比如 RecentChanges,点进去后显示新建页面,似乎就没有这个东西。我记不清这些页面是系统自带还是自己创建的了,反正我从官方维基上看页面源代码,把模板复制过来,页面倒也是能用,但我印象里似乎过去不需要这么麻烦的,目前还没有找到解决方法。

另外,还有一个稍微小点的问题,应该好解决,但我还没有着手实施。就是 VPS 重启后,Docker 实例不会自动启动,需要我登录 SSH 手动运行。昨天晚上查了一下,在 docker-compose.yml 文件里加上了 restart: always 参数,不过测试了还不要用。也有说用 systemctl 来启动的,应该可以,不过我还没有去研究具体方法,目前来看问题不是很大。

之后我应该会更新一下 MoinMoin 安装记录这个维基页面,把用 Docker 部署的方式加进去。不过还是希望 MoinMoin 的新版本早点到来,之前 MoinMoin 中文检索不行的问题也不知道解决了没有,还没有测试。

这次部署也提振了我使用 Docker 的信心,之前部署失败的 Wallabag、Tiny Tiny RSS、TiddlyWiki 也可以尝试尝试了,我甚至还考虑把 WordPress 也这么部署了,不过还没有下定决心。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据