![升级到 Ubuntu 16.04 删除了我的 MediaWiki 安装,如何恢复它?](https://linux22.com/image/989549/%E5%8D%87%E7%BA%A7%E5%88%B0%20Ubuntu%2016.04%20%E5%88%A0%E9%99%A4%E4%BA%86%E6%88%91%E7%9A%84%20MediaWiki%20%E5%AE%89%E8%A3%85%EF%BC%8C%E5%A6%82%E4%BD%95%E6%81%A2%E5%A4%8D%E5%AE%83%EF%BC%9F.png)
我已经从 Ubuntu 14.04 升级到 16.04,我发现没有mediawiki
包裹, 因为Debian 于 2015 年 12 月放弃了它,因为它已经过时了,而且没人愿意维护它。
我昨天安装了 MediaWiki,现在升级后却不行了。我该如何让它恢复运行?
答案1
这个答案假定您从现在开始愿意自己维护 MediaWiki。
此外,它会将 MediaWiki 安装在您的 Web 服务器的真实文档根目录中。以前,这将是一个别名,而真正的安装路径将位于 下/var/lib/mediawiki
,但现在由您而不是 Debian/Ubuntu 维护者来维护它,因此最简单的方法是将其放在其真实路径下。
在此答案中,网站的文档根目录是/srv/apache2/public_html
,而 wiki 在 Web 服务器上的位置是/wiki
(例如http://myserver/wiki
),因此完整路径为/srv/apache2/public_html/wiki
。您需要调整这些路径以适合您自己的设置。
下载最新的 MediaWiki并将其直接解压到您的 Web 服务器上应有的路径。
wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.2.tar.gz
tar xvf mediawiki-1.26.2.tar.gz
mv mediawiki-1.26.2 /srv/apache2/public_html/wiki
cd /srv/apache2/public_html/wiki
chown -R www-data:www-data .
编辑文件LocalSettings.php
并将设置更改MW_INSTALL_PATH
为/var/lib/mediawiki
新路径。
在文件中执行相同操作/etc/apache2/conf-available/mediawiki.conf
如果你将任何图像上传到你的 wiki,你将images
在 中有一个目录/var/lib/mediawiki
。将其复制到新的安装目录:
cp -a /var/lib/mediawiki/images .
您会发现 MediaWiki 所依赖的几个 PHP 软件包未安装在 PHP 7 上,这是 Ubuntu 16.04 的新标准 PHP 版本。MediaWiki 可以在 PHP 7 上正常工作,但您需要手动安装这些软件包并启用它们:
apt-get install libapache2-mod-php7.0 php-apcu php-gd php-json php-mysql php-xml
phpenmod apcu gd json pdo_mysql dom
a2enmod php7.0
a2enconf mediawiki
我使用 APC缓存,我发现 MediaWiki 使用的是传统的 APC 模块,而 PHP 7 中不包含该模块。我改用 APCu 模块解决了这个问题。在 MediaWiki 的代码中,将调用替换apc_*
为apcu_*
:
sed -i 's/apc_/apcu_/g' includes/libs/objectcache/APCBagOStuff.php
sed -i 's/apc_/apcu_/g' includes/objectcache/ObjectCache.php
运行升级脚本来更新MediaWiki的数据库结构:
cd maintenance/
php update.php
如果您用于 wiki 的数据库用户没有修改数据库结构的权限,则脚本将失败。使用脚本--dbuser
和--dbpass
选项为 MySQL 用户提供更多权限。如果您有文件AdminSettings.php
,请使用其中的详细信息 - MediaWiki 不再读取此文件本身,从现在起您应该删除此文件。
现在可以重新启动 Apache 并在您的网站上查看您的 wiki:
service apache2 restart
我在访问我的 wiki 时遇到的最后一个问题:MediaWiki 1.25+ 禁用皮肤自动发现并告诉我要wfLoadSkin( 'Vector' );
在我的中添加一个明确的内容LocalSettings.php
。