MediaWiki通过Docker部署

2025-06-12 464
MediaWiki

类型:Wiki系统

简介:基于PHP和MySQL的自由开源Wiki系统,用于构建像维基百科这样的平台。

MediaWiki是维基百科(Wikipedia)背后的开源建站系统,简单来说,你可以用它快速搭建一个类似维基百科的百科全书、知识库网站。现在站长百科将通过Docker来部署它,不用手动配置复杂的运行环境!

一、用Docker安装MediaWiki

注意:以下命令需要在管理员权限下执行(Linux系统中一般需要root权限)。

1、先安装Docker

如果你的电脑还没装Docker,直接用官方脚本一键安装:

下载并运行Docker安装脚本(如果提示wget命令不存在,先安装:CentOS用yum install -y

# wget -qO- https://get.docker.com/ | sh

安装后修改下载镜像的源(国内源更快):

# cat /etc/docker/daemon.json {
“registry-mirrors”: [“https://registry.docker-cn.com”,
“http://hub.c.163.com”]}

# systemctl restart docker.service

2、下载需要的Docker镜像

MediaWiki需要MySQL数据库存储内容,所以要下载两个镜像:

# docker pull wikimedia/mediawiki:1.30.0-wmf4
# docker pull mysql/mysql-server:5.7

3、启动MySQL和MediaWiki并关联它们

重要:必须先启动MySQL,再启动MediaWiki,否则会出错!

# docker run -d –name mediawiki-mysql -e MYSQL_ROOT_PASSWORD=<mysql-root-password> mysql/mysql-server:5.7
# docker exec -it mediawiki-mysql /bin/bash
bash-4.2# mysql -uroot -p<mysql-root-password>……
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘<mysql-root-password>’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

启动MySQL容器,并设置root密码(把<mysql-root-password>换成你自己的密码):

# docker run –name facethink-mediawiki –link mediawiki-mysql:mysql -p 80:80 -e MEDIAWIKI_DB_PASSWORD=<mysql-root-password> -d wikimedia/mediawiki:1.30.0-wmf4

3、给MySQL开启远程连接权限并启动MediaWiki容器

需要注意,启动 MediaWiki 时,需要使用 –link 参数来关联之前启动的 MySQL。 另外 -p 将 MediaWiki docker 中的 80 端口和 docker 宿主机上的 80 端口绑定在了一起。在浏览器中访问 docker 宿主机的 IP 就可以访问刚刚建好的 MediaWiki 网站了。不过要保证宿主机上 80 端口没有被其他程序占用,不然 docker run 命令无法执行成功。下面就是刚刚建好的 wiki 站点页面。

MediaWiki通过Docker部署

注意:如果电脑的80端口被占用(比如运行着其他网站),需要先关闭占用程序,或者把-p 80:80改成其他端口(如-p 8080:80)。

二、访问和配置MediaWiki网站

现在打开浏览器,输入电脑的IP地址(比如http://192.168.1.100),就能看到MediaWiki的首页。

1、找到默认管理员账户并设置密码

安装后默认有个管理员账户,但密码是加密的,需要手动修改:

进入MySQL容器,登录数据库:

# docker exec -it mediawiki-mysql — mysql -uroot -p<mysql-root-password>……
mysql> use mediawiki;
mysql> select * from user;
mysql> select * from user;+———+———–+—————-+——————————————————————————————————————————————-+——————+——————-+———————+—————-+———————————-+————————–+———————————-+————————–+——————-+—————-+———————–+| user_id | user_name | user_real_name | user_password | user_newpassword | user_newpass_time | user_email | user_touched | user_token | user_email_authenticated | user_email_token | user_email_token_expires | user_registration | user_editcount | user_password_expires |+———+———–+—————-+——————————————————————————————————————————————-+——————+——————-+———————+—————-+———————————-+————————–+———————————-+————————–+——————-+—————-+———————–+| 1 | Admin | | :pbkdf2:sha512:30000:64:CyuznKx44JuAClGG7avxow==:V9MLp3r/obJIjv+BR2Bs0eCvyWkyDK0eveqEE+

9HiUgxvMjzu26kGBz+BcZSmlRssLswzq1j3a+PVuh6AFEaxQ== | | NULL | NULL | 20180622063649 | 490898f83d4ad9d1ec1c0276a740209b | NULL | d3bcbd107e31220c891334c8e1ba0440 | 20180629063644 | 20180622050411 | 0 | NULL +———+———–+—————-+——————————————————————————————————————————————-+——————+——————-+———————+—————-+———————————-+————————–+———————————-+————————–+——————-+—————-+———————–+

2、查看用户表(默认账户是Admin):

mysql> UPDATE user SET user_password = MD5( CONCAT( user_id, ‘-‘, MD5( ‘NEWPASS’ ) ) ) WHERE user_id =1;

至此,可以用管理员的权限登陆了。

MediaWiki通过Docker部署

3、把Admin的密码改成你想要的(比如新密码是“newpass”):

$ sudo docker exec -it facethink-mediawiki /bin/bash
root@1a0f3692a08d:/# vi /var/www/html/LocalSettings.php…
$wgServer = “http://wiki.example.com”;…

4、用账户“Admin”和密码“newpass”登录后台。

5、使用php变量配置MediaWiki站点地址

假设已经为站点申请了域名:wiki.example.com,如何让 wiki 自己能够识别这个域名? 这需要登陆到 MediaWiki 的 docker 中去,修改配置文件。MediaWiki 是 php 语言编写的,所以配置文件以 .php 后缀结尾。

$ sudo docker exec -it facethink-mediawiki /bin/bash
root@1a0f3692a08d:/# vi /var/www/html/LocalSettings.php…
$wgServer = “http://wiki.example.com”;…

php 可以动态读取配置文件,所以无需重启即可生效。

6、修改Logo

默认 logo 是金色的葵花,那么如何更换成自己心仪的图标? 首先需要开启 wiki 的文件上传功能:

$ sudo docker exec -it facethink-mediawiki /bin/bash
root@1a0f3692a08d:/# vi /var/www/html/LocalSettings.php…
$wgEnableUploads = true;…

然后给 /var/www/html/images 目录添加全部用户开启所有权限。

$ sudo docker exec -it facethink-mediawiki /bin/bash
root@1a0f3692a08d:/# chmod 777 /var/www/html/images

然后在 Upload File 页面上传文件:

MediaWiki通过Docker部署

upload file page

找到文件所在目录:

# ll /var/www/html/images/thumb/6/64/example.png/120px-example.png

修改 php 配置文件:

$ sudo docker exec -it facethink-mediawiki /bin/bash
root@1a0f3692a08d:/# vi /var/www/html/LocalSettings.php…
$wgLogo = $wgScriptPath . “images/thumb/6/64/example.png/120px-example.png”;…

刷新一下页面,看看更换 logo 之后效果。

7、邮箱配置

MediaWiki的邮箱配置很坑,调试不太方便,而且默认配置很容易被判定成垃圾邮件, 或者无效,被拒掉,需要调整发件人的地址来规避。这里用的是 Elastic Email 的邮件服务器系统
配置部分还是需要修改 /var/www/html/LocalSettings.php

# cat /var/www/html/LocalSettings.php…
$wgServerName = “example.com”;
$wgPasswordSender = “”;

$wgSMTP = array(
‘host’ => ‘smtp.elasticemail.com’,
‘port’ => 2525,
‘IDHost’ => ‘wiki.example.com’,
‘username’ => <user-id>,
‘password’ => <password>,
‘auth’ => true);…

同时需要安装 PHP 与邮件发送相关的插件,这里还需要说明一点,MediaWiki 的 docker 虽然能运行 PHP 代码,但实际上并没有安装 PHP,原因是 Apache 能够解析运行 PHP,LAMP 果然是集成度很高。而安装 pear 是要依赖于 PHP 环境的,所以必须要安装 PHP。

# apt install php, php-pear
# pear install mail, net_smtp

8、限制用户权限

如果不想开放 Wiki 的公开注册,并且在未登陆时,限制可见的页面的话,还是需要通过对 LocalSettings.php 的定制实现。

# cat /var/www/html/LocalSettings.php…
# Prevent new user registrations
$wgWhitelistAccount = array(“user” => 0, “sysop” => 1, “developer” => 1);
$wgGroupPermissions[‘*’][‘createaccount’] = false;
$wgGroupPermissions[‘*’][‘read’] = true;
$wgGroupPermissions[‘*’][‘edit’] = false;
$wgWhitelistRead = array(“Main Page”, “Special:Userlogin”, “Wikipedia:Help”);…

9、 添加用户

现在已经关闭了用户注册,那用户只能手动添加了。MediaWiki 也提供添加用户的脚本:

# apt install php-mbstring, php-mysql
# php /usr/src/mediawiki/maintenance/createAndPromote.php –conf=/var/www/html/LocalSettings.php –force <user-id> <password>

10、更换网站Logo

先允许上传文件:

docker exec -it facethink-mediawiki vi /var/www/html/LocalSettings.php
找到$wgEnableUploads,改成true
$wgEnableUploads = true;

11、给上传目录添加权限:

docker exec -it facethink-mediawiki chmod 777 /var/www/html/images

在网站后台找到“Upload File”页面,上传你的Logo图片(比如example.png)。

找到图片的存储路径(比如/images/thumb/6/64/example.png/120px-example.png),修改配置文件:

docker exec -it facethink-mediawiki vi /var/www/html/LocalSettings.php

添加Logo路径

$wgLogo = $wgScriptPath . “images/thumb/6/64/example.png/120px-example.png”;

12、配置邮箱(用于密码找回等功能)

推荐用Elastic Email等第三方邮件服务(避免被当成垃圾邮件):

修改配置文件:

docker exec -it facethink-mediawiki vi /var/www/html/LocalSettings.php

添加以下内容(替换<user-id>和<password>为你的邮箱账号密码)

$wgServerName = “example.com”;
$wgPasswordSender = “”;

$wgSMTP = array(
‘host’ => ‘smtp.elasticemail.com’,
‘port’ => 2525,
‘IDHost’ => ‘wiki.example.com’,
‘username’ => <user-id>,
‘password’ => <password>,
‘auth’ => true
);

13、安装邮件插件(需要先进入容器):

docker exec -it facethink-mediawiki bash

安装PHP和邮件组件(如果提示命令不存在,可能需要先更新软件源)

apt update
apt install php php-pear
pear install mail net_smtp

14、限制用户权限(比如关闭公开注册)

如果不想让任何人注册账号,可以修改配置:

docker exec -it facethink-mediawiki vi /var/www/html/LocalSettings.php

添加以下内容:

$wgWhitelistAccount = array(“user” => 0, “sysop” => 1, “developer” => 1);
$wgGroupPermissions[‘*’][‘createaccount’] = false; 禁止注册
$wgGroupPermissions[‘*’][‘read’] = true; 未登录可查看
$wgGroupPermissions[‘*’][‘edit’] = false; 未登录不可编辑
$wgWhitelistRead = array(“Main Page”, “Special:Userlogin”, “Wikipedia:Help”); 允许查看的页面

15、手动添加用户

关闭注册后,需要手动创建用户:

进入容器,安装必要组件

docker exec -it facethink-mediawiki bash
apt install php-mbstring php-mysql

执行添加用户脚本(替换<user-id>和<password>为用户名和密码)

php /usr/src/mediawiki/maintenance/createAndPromote.php –conf=/var/www/html/LocalSettings.php –force <user-id> <password>

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。