MediaWiki 是一个百科类的程序,众所周知的维基百科就是用的这个程序,同时这个程序也是由他们维基媒体基金会以及众多志愿者在开发和维护着的,可以说一提到搭建 wiki类网站,很多人的第一反应就是 MediaWiki,正如说搭建博客用 WordPress 一样。
具体的介绍我就不多说了,这篇博文主要就是把自己搭建和配置的过程记录下来,方便有这方面需求的朋友参考。
一、服务器有关配置
这个其实和本文关系不大,我也不打算详细说了,只是想告诉大家,网站不是装好程序就可以的,服务器还是有很多有关安全的东西需要去做的,在正式开始建站之前,我个人建议先把服务器本身的一些东西弄一下,比如 SSH 什么的……当然,要说绝对安全是不可能的,但折腾一下总比什么不做要强一点。另外,如果你在安装 LNMP 的时候有些个人的小需求,有些也是要在服务器上做配置的,这里提醒一下~
二、LNMP 环境安装&虚拟主机创建
这个我也不多说了,有能力的可以自己编译什么的,我是为了省事+没能力,选择现成的脚本,也就是军哥的 LNMP 一键安装包。
教程可以参考官网:https://lnmp.org/install.html
或者我以前自己写的一个教程:[Debian]服务器搭建 LNMP 环境&创建虚拟主机教程(日期:20180415)
还是前面说的,这个只是教你怎么装,有特殊需求的肯定还是需要你自己动手啦。
三、MediaWiki 安装
安装部分可以参考下官方提供的安装指南:https://www.mediawiki.org/wiki/Manual:Installation_guide/zh
这里我先说一下 MediaWiki 对环境的一点要求,主要需要注意的就是数据库:
- 使用MySQL 的,需要 MySQL 5.5.8 或更高版本
- 使用 MariaDB 的,需要 MariaDB 5.1 或更高版本
- 使用 PostgreSQL 的,需要 PostgreSQL 9.2 或更高版本
下面我来说说具体的安装过程,LNMP 创建虚拟主机那部分我就不说了哈,第二步那里的链接有说的。
- 创建数据库
这个其实也挺简单的,前面我们安装好了 LNMP 并添加了虚拟主机之后,直接在浏览器里输入你 VPS 的 IP/phpmyadmin,并用开始安装 LNMP 时设置的 Root 用户和密码登录,如下图一样创建一个数据库就可以了。
注意:如果自己改动过 phpmyadmin 的目录名称,phpmyadmin 的访问地址就应该是 IP/自定义目录名称。另外如果在添加虚拟主机的时候创建过数据库的,这一步可以不做,下一步也是。
- 创建数据库专属用户
虽然 Root 用户拥有全局数据库访问权限,不过咱们为了安全还是创建一个专属的 wiki 数据库用户比较好。
除了前四个要填,别的都不要改,或者说是底下的全局权限,创建同名数据库之类的都不要勾选,然后直接点击页面最底下的执行就增加了一个用户了。
新增用户之后回到前面的那个账户页面,可以看到你新增的那个用户,点击它后面的修改权限。
新页面里按上图操作,数据库部分搞定~
- 下载并解压 MediaWiki 安装包
这一步我个人建议在 SSH 命令行里进行,因为简单实在。如果不会的话,你自己去官网下载好安装包,解压上传到 Web 目录(LNMP 添加的虚拟主机目录一般是:/home/wwwroot/XXXX.com 这种)也没问题,不过那样做最好注意一下各个文件和文件夹的所有者和权限是否正确,不正确的话还需要你去改。
我这里就用命令行的方式来说了,因为是配合 LNMP 的,所以后面改文件和文件夹所有者这个根据情况不同可能你不需要做。
cd /home/wwwroot/xxxx.com
cd 后面接的目录记得改成你自己虚拟主机的 Web 目录路径。
wget https://releases.wikimedia.org/mediawiki/1.31/mediawiki-1.31.1.tar.gz
PS:下载链接记得去官网找最新的。
tar xvzf mediawiki-*.tar.gz
解压之后我们会发现程序的文件都是在一个子目录里,我们要移出来放在根目录下:
mv /home/wwwroot/xxxx.com/mediawiki/* /home/wwwroot/xxxx.com
再次提醒:mediawiki 这个子目录名称路径请根据自己的来写,后面记得加上/*,最后那个路径填写你需要移动到的文件夹。
修改所有者和组为 www:www:
chown -R www:www /home/wwwroot/xxxx.com
记得替换路径名称!后面不再说了~
- MediaWiki 初始配置
前面做好之后(这里还有一步是给你的域名添加对应的解析记录,不在本文说明范围内),直接浏览器输入你的域名,就能看到这样的初始页面了,点箭头那里开始配置:
配置这部分要说的应该不多,毕竟是搭建网站的话,大家或多或少应该懂一点吧?然后又是全中文的……所以后面我就只挑重要的部分来说了。
环境检查这部分告诉我们通过了,可以安装,不过看提示还是有些小问题的,后面我再来研究怎么一个一个修复。
不出意外的话,按上图中的操作。
数据库名称:写咱们之前创建的那个数据库名称。
数据库表前缀:就像它提示说的,一个人用一个数据库的话,留空没什么毛病,写一个也没什么影响,看你自己。填什么也无所谓,英文&数字都可以。
这里的用户名和密码写之前我们创建的那个用户名和用户名密码。
后面还有个 SQLite 的设置,这个和我们的关系不大,不用管它,直接继续就可以了。
⬆根据网页的提示来。
wiki的名称:俗称的网页标题,根据自己的情况来写。
项目名字空间:保持默认就行了,除非你有特别的需求且知道自己在干什么。
后面就没有什么好说的了,基本照着提示做就行,搞定了之后大概就会看到这么个页面,并提示下载:
把这个 LocalSettings.php 上传到咱们添加的虚拟主机根目录下就可以了。
OK!说到这里基本上就算是安装完成了,当然,就像是我前面说的,环境检查那一步提示咱们还存在一些小问题,这个咱们后面来说,安装和简单配置部分到这里就算是结束了。
四、MediaWiki 进阶配置
前面安装 MediaWiKi 的时候,环境检查那里有一些提示,后面我们就根据它的提示,一条一条的来把这些问题解决掉。
- 警告:找不到APCu或WinCache。对象缓存未启用。
这个很简单,我们直接在服务器上安装好 APCu 就可以了。首先先用 cd 命令进入 lnmp 的安装目录,比如我这里是/root/lnmp1.5:
cd /root/lnmp1.5
然后运行附件安装命令,安装 APCu:
./addons.sh
选择 6 安装,并输入一个密码(别忘了哦!):
- 找不到 GNU diff3。
20200729 更新:根据经验猜测,问题可能是出在 LNMP 默认开启了 open_basedir 防跨目录功能这里,因为该功能会限制网站程序可以访问的目录,所以可能会导致 MediaWiki 找不到系统相关组件,移除该功能的方法可以看 LNMP 有关的教程,或者使用 LNMP 自带的脚本移除,因为我有点懒,这次就只想更新下说明所以不想写太多,未来有时间再折腾吧。如果还是不行,可尝试手动指定组件路径来解决,配置说明在这里:https://www.mediawiki.org/wiki/Manual:Configuration_settings
- 已找到内建的 GD 图形库。如果你启用了上传功能,缩略图功能也将被启用。
20200729 更新:MediaWiki 可以使用 GD 或者 ImageMagick 库来处理图片,GD 库 PHP 自带的不用担心,但是官方更推荐需要自己装的 ImageMagick 来达到更好的处理效果。ImageMagick 安装方法看上面安装 APCu 的教程,选择安装第 7 个就可以了,安装完成后,可以根据这个教程来让 MediaWiki 用 ImageMagick 来处理图片:https://www.mediawiki.org/wiki/Manual:Installing_third-party_tools#ImageMagick
- Git版本控制软件未找到。
同上面的 GNU diff3 那个。
- 警告:您的默认上传目录/home/wwwroot/xxxx.com/images/存在允许执行任意脚本的漏洞。尽管MediaWiki会对所有已上传的文件进行安全检查,但我们仍然强烈建议您在启用上传功能前关闭该安全漏洞。
这个处理起来比较简单,编辑你网站的 Nginx 配置文件(文件一般是/usr/local/nginx/conf/vhost/xxxx.com.conf 这个,后面的 xxxx.com 根据你的网站域名会有所不同)就能搞定,我只贴出重要的部分。
我们要加入的内容是:
location ^~ /images/ { }
具体添加的位置:
server { listen 80; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ^~ /images/ { } location ~ /\. { deny all; } access_log } server { listen 443 ssl http2; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ^~ /images/ { } location ~ /\. { deny all; } access_log }
PS:注意到了吗?我们加了两次,因为要使得 HTTP 和 HTTPS 访问都能生效。
上面这些小问题搞定之后,先别急,让我们再次访问一下配置页面,看看都搞定了没有。配置页面举例:XXXX.com/mw-config(总之就是访问你 MediaWiKi 程序目录下的 MW-Config 这个文件夹)。访问之后应该可以在环境检查那一步看到我们前面看到的一些提示都没了,这时只要按照原步骤来一遍,更新一下配置文件就行了。如果在中途问你升级密钥的话,到前面我们生成的那个 LocalSettings.php 文件里,找到 $wgUpgradeKey = "1234567890";
这一行,把其中的 1234567890
这一部分复制上去就可以了。
不能提交成功,我可以把我的这个文件发您,您帮我review一下吗?
呃,你是说的修改配置文件 Nginx 报错,还是说修改了配置文件之后 MediaWiKi 仍然报错的?
您好!
关于 警告:您的默认上传目录/home/wwwroot/xxxx.com/images/存在允许执行任意脚本的漏洞。尽管MediaWiki会对所有已上传的文件进行安全检查,但我们仍然强烈建议您在启用上传功能前关闭该安全漏洞。
这个我也学习您的修改,但是修改总是报错,这是怎么回事呢?谢谢
具体是报的什么错呢?
搞定了😊