环境:Ubuntu
安装MediaWiki所需环境
sudo apt-get update
sudo apt-get upgrade
# 调整以下php的版本
sudo apt-get install apache2 mariadb-server mariadb-client curl php7.2 php-memcached php-xml memcached phpmyadmin php7.2-intl php7.2-curl
选择apache2.(按空格选择)
默认设置(use dbconfig-common)
设置密码
sudo phpenmod mcrypt
sudo phpenmod mbstring
sudo systemctl restart apache2
sudo systemctl stop mysql.service
sudo systemctl start mysql.service
sudo systemctl enable mysql.service
现在应该可以打开 http://localhost/phpmyadmin
secure MariaDB server
sudo mysql_secure_installation
Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Enter password
Re-enter new password: Repeat password
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Restart MariaDB server
sudo systemctl restart mysql.service
安装MediaWiki
如果是从旧MediaWiki迁移过来,可以还原备份的数据库和文件夹。参见:MediaWiki 备份与迁移。
cd /var/www/html/
# 使用git克隆MediaWiki核心存储库
git clone https://gerrit.wikimedia.org/r/mediawiki/core.git --branch REL1_33 mediawiki
# (可选)重命名mediawiki文件夹为wd
mv mediawiki wd
cd wd
为MediaWiki建立数据库
# 登陆数据库服务器
sudo mysql -u root -p
# 输入密码
# 建一个空的数据库,命名为jie
CREATE DATABASE jie;
# 新建一个名为user123的数据库用户,密码为123123:
CREATE USER 'user123'@'localhost' IDENTIFIED BY '123123';
# 授予用户user123对数据库的完全访问权限:
GRANT ALL ON jie.* TO 'user123'@'localhost' IDENTIFIED BY '123123' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON jie.* TO 'user123'@'localhost';
# 保存设置并退出
FLUSH PRIVILEGES;
EXIT;
配置MediaWiki站点
在浏览器中打开网站,如 https://域名/wd 。按提示安装。
安装插件
MediaWiki 扩展推荐与安装
开启https及免费SSL证书
利用git安装Let's Encrypt客户端:
# 安装Let's Encrypt客户端
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
# 为www.yourdomain.com和yourdomain.com生成Let's Encrypt SSL证书:
cd /opt/letsencrypt
./letsencrypt-auto --apache -d www.yourdomain.com -d yourdomain.com
根据提示,选择将网站的http请求重定向到https。
Let's Encrypt默认情况下证书有效期为90天,可设置cron job定期自动更新证书。
MediaWiki生成站点地图
设置需要列入站点地图的Help:名字空间: 在LocalSettings.php中加入:
$wgSitemapNamespaces = array( 0, 2, 4, 12 );
在站点文件夹中新建sitemap文件夹:
cd /var/www/html/w
sudo mkdir sitemap
php /var/www/html/w/maintenance/generateSitemap.php --fspath=/var/www/html/w/sitemap/ --identifier=wikijieti --urlpath=/w/sitemap/ --server=https://www.wikijieti.com --skip-redirects
设置cron job,实现每天更新网站地图。
权限管理
MediaWiki禁止导出页面
禁用MediaWiki的Special:导出页面:
sudo vi /var/www/html/w/LocalSettings.php
在LocalSettings.php中添加:
function removeExportSpecial(&$aSpecialPages)
{
unset($aSpecialPages['Export']);
return true;
}
$wgHooks['SpecialPage_initList'][] = 'removeExportSpecial';
设置指定分类的页面只允许注册用户查看
通过扩展Extension:Restrict access by category and group实现。
sudo mkdir RestrictAccessByCategoryAndGroup
cd RestrictAccessByCategoryAndGroup
sudo vi groups.php
<?php
// This is a no public category:
$wgGroupPermissions['会员可见']['*'] = true;
在LocalSettings.php中添加:
require_once "$IP/extensions/RestrictAccessByCategoryAndGroup/RestrictAccessByCategoryAndGroup.php";
$wgGroupPermissions['会员可见']['*'] = true;
请管理员在Special:用户权限为指定用户添加“会员可见”的用户组。
在页面X添加分类。
此时,只有属于“会员可见”用户组的用户才能查看页面X。
性能优化
官方网站提到的MediaWiki优化方法:
使用PHP accelerator
- APCu、XCache、WinCache等PHP加速器对比
使用Memcached缓存系统
使用缓存代理服务器Squid Cache或者Varnish caching
启用“吝啬模式”(Miser Mode)
减小$wgJobRunRate的值,可以设置为0.01,甚至设为0,使用Crontab定时执行runJobs.php
配置robots.txt,禁止爬虫抓取页面历史版本
升级MediaWiki及插件。有的插件可能没做好优化。
传说中的优化方法
- 尽量减少不必要的解析过程。
- 编辑MediaWiki:Aboutsite 和 MediaWiki:Pagetitle页面,将其中的{{SITENAME}}改为自定义的站点名称。
How to make MediaWiki fast?Speed Up MediaWik.
How to improve Mediawiki performance?
无意义/已失效的操作
$wgDisableCounters 在 MediaWiki 1.25.0 之后就被弃用了。
$wgDisableCounters = true; # 关闭MediaWiki的统计功能