安装MediaWiki
环境信息
数据库用户:webuser PHP版本:7.4 MySQL版本:8.0.42
Nginx配置文件示例
server {
listen 80;
server_name wiki.mxdx.com; # 改为你的域名
root /var/www/html/wiki;
index index.php index.html;
# MediaWiki 重写规则
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?title=$1&$args;
}
# PHP 处理
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问敏感文件
location ~ /(\.|vendor|composer\.|COPYING|README|changelog) {
deny all;
}
# 静态文件缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Cache-Control "public";
}
}
1.下载 MediaWiki:
cd /root
# 以下链接国内访问速度可能较慢(二选一)
wget https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.5.tar.gz
wget https://raw.githubusercontent.com/Yzh0407/mediawiki/refs/heads/main/mediawiki-1.39.5.tar.gz
mkdir -p /var/www/html/wiki
tar -zxvf mediawiki-1.39.5.tar.gz -C /var/www/html/wiki
cd /var/www/html/wiki/mediawiki-1.39.5
mv ./* ../
rmdir mediawiki-1.39.5/
2.设置权限:
sudo chown -R www-data:www-data /var/www/html/wiki
sudo chmod -R 755 /var/www/html/wiki
3.创建数据库:
mysql -u root -p
CREATE DATABASE wiki;
EXIT;
4.访问 http://wiki.mxdx.com/
,按向导进行配置。
如果出现报错,例如: Missing one or more required components of PHP
,说明相应的PHP扩展没有安装,请使用命令安装(根据屏幕上显示的缺少组件进行安装)
sudo apt update
# mediawiki一般缺少这几个PHP扩展
sudo apt install php7.4-mbstring php7.4-xml php7.4-intl
若出现如下图中所示,就是成功运行,现在只是没有配置文件,我们点击蓝色下滑斜杠的Complete the installation
根据提示输入对应信息安装
继续完成安装
此步会下载LocalSettings.php
文件,我们只需要把该文件放入有index.php
的根目录里(如:/var/www/html/wiki
)
新用户邮件注册验证
需要在网站根目录下找到之前放进去的LocalSettings.php
文件,使用vim修改,在行末添加以下参数:
# Mail
$wgSMTP = array( // 配置SMTP邮件服务器
'host' => "mail.mxdx.com", // SMTP服务器主机地址(例如:mail.mxdx.com)
'IDHost' => "mail.mxdx.com", // 用于生成Message-ID的域名(通常与host相同)
'port' => 25, // SMTP服务端口号(25是默认SMTP端口)
'auth' => false, // 是否启用SMTP认证(false表示不认证,如果需要认证就填true)
'username' => "mailuser@mail.mxdx.com", // SMTP登录用户名(如果上面的auth是false就随便写,如果需要认证就按实际填)
'password' => "12345678" // SMTP登录密码(如果上面的auth是false就随便写,如果需要认证就按实际填)
);
// 设置系统紧急联系人邮箱(用于接收错误报告、系统警报等)
$wgEmergencyContact = "mailuser@mail.mxdx.com";
// 设置系统自动邮件(如密码重置、验证邮件)的发件人邮箱地址
$wgPasswordSender = "mailuser@mail.mxdx.com";
// 设置系统自动邮件的发件人显示名称
$wgPasswordSenderName = 'mailuser';
// 启用用户讨论页变动时的邮件通知功能(当用户收到留言时会发送邮件)
$wgEnotifUserTalk = true;
// 禁用监视列表变动时的邮件通知功能(用户不会收到监视页面更新的邮件)
$wgEnotifWatchlist = false;
// 开启电子邮件认证系统(要求用户验证邮箱的真实性)
$wgEmailAuthentication = true;
// 强制要求新用户必须验证邮箱才能完成注册
$wgRequireEmailConfirmation = true;
// 设置邮箱验证链接的有效期(此处设为7天,单位:秒)
$wgUserEmailConfirmationTokenExpiry = 7 * 24 * 3600;
// 开启整个邮件系统功能(必须设为true才能发送任何邮件)
$wgEnableEmail = true;
// 允许用户之间互相发送邮件(通过用户页面的"发送邮件"功能)
$wgEnableUserEmail = true;
// 强制要求用户必须验证邮箱后才能编辑页面(重要安全设置)
$wgEmailConfirmToEdit = true;
// 允许某些操作要求用户必须提供邮箱(增强账户安全性)
$wgAllowRequiringEmailForUsers = true;
// 自定义验证邮件的主题(可使用{{SITENAME}}变量)
$wgEmailAuthenticationTitle = "请验证您在{{SITENAME}}的邮箱";
// 权限控制:未登录用户不能编辑
$wgGroupPermissions['*']['edit'] = false;
// 权限控制:新注册用户(未验证邮箱)不能编辑
$wgGroupPermissions['user']['edit'] = false;
// 权限控制:已验证邮箱用户可正常编辑
$wgGroupPermissions['emailconfirmed']['edit'] = true;
修改后保存,不需要重载,因为php是实时加载。
进行用户注册测试
提示收到相应邮件
点开邮件点击确认链接
注册成功! 电子邮件确认成功!