导读:本期聚焦于刘卫东创作的《MediaWiki如何通过Docker快速部署?新手友好的完整教程与常见问题排查》,敬请观看详情。想给自己的团队或个人知识库搭一个Wiki站点,MediaWiki是不少人的首选,但传统的手动安装方式涉及PHP、数据库、Web服务器等多组件配置,过程繁琐且容易出错。用Docker来部署就省心多了,几分钟就能把服务跑起来,升级和迁移也方便。本文从镜像选择讲起,带大家用docker-compose完成MediaWiki与MySQL的编排部署,详细说明数据持久化、反向代理配置、可视化编辑器扩展安装等关键环节,最后整理了中文乱码、上传文件大小限制、忘记管理员密码等常见问题的解决办法,照着做就能拥有一个稳定可用的Wiki站点。

MediaWiki是维基百科背后的一套开源Wiki引擎,功能成熟、扩展丰富,非常适合用来搭建团队知识库、产品文档站或者个人笔记系统。不过官方文档的安装流程对新手并不算友好,需要自己准备PHP环境、配置数据库、调整Web服务器,任何一步出问题都可能卡半天。而Docker把这一切都封装进了镜像里,拉取镜像、启动容器,几分钟就能得到一个可以访问的Wiki站点。这篇文章就从零开始,完整演示Docker部署MediaWiki的流程,并把实际使用中最容易踩的坑提前说明。

MediaWiki如何通过Docker快速部署?新手友好的完整教程与常见问题排查

准备工作:为什么推荐docker-compose而不是单容器运行

MediaWiki本身依赖数据库存储内容,如果只用docker run分别启动MediaWiki容器和MySQL容器,容器之间的网络连接、启动顺序、重启策略都要手动维护,时间一长命令忘了就很难管理。docker-compose用一个YAML文件把这些信息全部固化下来,一条docker compose up -d就能把整套服务拉起来,换服务器部署时也只需要拷贝这个文件加数据目录即可,这也是容器化最大的价值所在。

开始之前需要确认服务器环境。Docker版本建议20.10以上,同时安装docker-compose-plugin(新版本Docker已内置compose子命令)。可以用下面的命令验证环境是否就绪:

docker --version
docker compose version

两条命令都有正常输出就可以继续。如果使用的是CentOS或Ubuntu等云服务器,记得在安全组里放行80端口,否则浏览器访问不到页面。内存方面建议至少1GB,MediaWiki加MySQL同时运行时,512MB内存的机器很容易触发OOM导致MySQL被杀掉。

编写docker-compose.yml:完整可用的编排文件

下面这份配置文件可以直接使用,包含了MediaWiki、MySQL两个服务,并且做好了数据卷映射,保证容器重建后数据不丢失。文件里注释写得比较细,建议先通读一遍再执行:

version: "3.8"

services:
  mediawiki:
    image: mediawiki:lts
    container_name: mywiki
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./images:/var/www/html/images
      - ./LocalSettings.php:/var/www/html/LocalSettings.php
    depends_on:
      - db

  db:
    image: mysql:8.0
    container_name: wiki-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: rootpass123
      MYSQL_DATABASE: wikidb
      MYSQL_USER: wikiuser
      MYSQL_PASSWORD: wikiuserpass
    volumes:
      - ./mysql-data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password

几个细节值得注意。mediawiki:lts是长期支持版本标签,比latest更稳定,生产环境不建议用latest;MySQL 8.0那行command参数很关键,因为新版PHP的MySQL驱动与MySQL 8默认的认证插件不完全兼容,不加这个参数可能会在安装阶段报连接错误。密码部分请务必换成自己的强密码,不要直接用示例值。

在文件所在目录执行docker compose up -d,然后浏览器访问http://服务器IP:8080,会看到MediaWiki的安装向导界面。安装向导中数据库地址填db(这是compose网络里的服务名,容器之间通过它互相访问),库名、用户名密码对应前面环境变量里设置的值。

安装最后一步会提示下载LocalSettings.php,下载后放到compose文件同级目录,再执行一次docker compose up -d让挂载生效,整个安装就完成了。如果安装完成后页面一直要求重新安装,多半就是这个文件没挂载进去。

进阶配置:数据持久化、文件上传与反向代理

默认配置下Wiki并不能上传大文件,图片也只支持常见几种格式。这些限制需要修改LocalSettings.php来解除。在文件末尾追加以下内容:

$wgEnableUploads = true;
$wgMaxUploadSize = 100 * 1024 * 1024; // 上传上限100MB
$wgUploadSizeWarning = 50 * 1024 * 1024;
$wgFileExtensions = array_merge($wgFileExtensions,
    ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'zip', 'mp4']);
$wgLanguageCode = 'zh-cn'; // 站点语言改为简体中文

除了Wiki层的限制,PHP本身也有post体积上限,需要覆盖php.ini。在compose文件里给MediaWiki服务追加一个挂载:./php.ini:/usr/local/etc/php/conf.d/custom.ini,php.ini内容写成upload_max_filesize = 100Mpost_max_size = 108M两行即可。两层限制都改掉,大文件才能正常上传。

如果站点要绑定域名并启用HTTPS,通常做法是在前面加一层Nginx反代。Nginx的关键配置是把请求转给8080端口,同时带上X-Forwarded-Proto头,否则MediaWiki在HTTPS环境下可能生成错误的http链接,出现样式丢失或重定向异常。对应的Nginx片段如下:

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

同时在LocalSettings.php中加上$wgServer = "https://你的域名";,让Wiki生成链接时使用正确的协议。

常见问题与避坑指南

忘记管理员密码怎么办。不需要重建容器,进入MediaWiki容器执行维护脚本即可重置:

docker exec -it mywiki php maintenance/changePassword.php --user=Admin --password=新密码

页面或编辑内容出现乱码。一般是数据库字符集问题。建库时确保使用utf8mb4,可以在MySQL容器的environment里加一行command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci,注意已存在的旧库需要手动ALTER转换字符集,改配置只对新表生效。

容器重启后数据丢失。这是没做数据卷挂载的典型症状。检查compose文件中./mysql-data:/var/lib/mysql./images:/var/www/html/images两条挂载是否存在,LocalSettings.php也必须挂载。升级MediaWiki时不要直接换镜像标签就完事,先备份数据目录和数据库,docker exec wiki-db mysqldump -uroot -p wikidb > backup.sql导出一份再操作。

可视化编辑器装不上。VisualEditor扩展依赖Parsoid服务,新版MediaWiki已内置,但在Docker里需要额外启动一个Parsoid容器并在LocalSettings.php中指向它。新手建议先用WikiEditor工具栏扩展代替,配置简单且能满足大部分编辑需求。

整体来看,Docker部署MediaWiki的核心就是compose文件的编写和数据卷的规划,把这两块理解透,后续无论是升级版本、迁移服务器还是做定期备份,都只是几个命令的事。搭好之后不妨先从写几篇团队规范文档开始,让Wiki真正运转起来。

MediaWiki部署Docker搭建Wiki数据库配置修改时间:2026-09-03 18:13:03

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260903/49726.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。