mediawiki 备忘录
搭建
用多种方案,
1.直接sudo apt install mediawiki
2.docker run -d mediawiki
第三种也就是docker compose创建容器,本地mediawiki项目挂载搭建,也是相对复杂,如果没有教程的话。
根据mediawiki官网下载的项目目录
创建.env文件
MW_SERVER=http://localhost:8080
MW_DOCKER_PORT=8080
MEDIAWIKI_USER=Admin
MEDIAWIKI_PASSWORD=dockerpass
XDEBUG_CONFIG=
XDEBUG_ENABLE=true
XHPROF_ENABLE=true
MW_DOCKER_UID=1000
MW_DOCKER_GID=1000
修改docker-compose.yml
进入mediawiki文件夹中,然后修改docker-compose.yml文件,因为他丫的官网给的连接数据库是sqlite,而不是mariadb。
yml配置
# 新增:MariaDB 数据库服务(替代 SQLite)
services:
# 原有 MediaWiki 服务(PHP-FPM)
mediawiki:
image: docker-registry.wikimedia.org/dev/bookworm-php83-fpm:1.0.0
user: "${MW_DOCKER_UID}:${MW_DOCKER_GID}"
volumes:
- ./:/var/www/html/w:cached
env_file:
- '.env'
environment:
COMPOSER_CACHE_DIR: '/var/www/html/w/cache/composer'
MW_SERVER: 'http://localhost:${MW_DOCKER_PORT:-8080}'
MW_DOCKER_PORT: "${MW_DOCKER_PORT:-8080}"
MW_SCRIPT_PATH: '/w'
# ---- 修改:数据库配置(从 SQLite 改为 MySQL)----
MW_DBTYPE: 'mysql' # 数据库类型改为 MySQL/MariaDB
MW_DBHOST: 'db' # 数据库服务名(与 db 服务的 container_name 一致)
MW_DBUSER: '${MYSQL_USER:-mediawiki}' # 数据库用户(与 MariaDB 配置一致)
MW_DBPASS: '${MYSQL_PASSWORD:-mediawikipass}' # 数据库密码(与 MariaDB 配置一致)
MW_DBNAME: '${MYSQL_DATABASE:-mediawiki}' # 数据库名(与 MariaDB 配置一致)
# ---- 移除 SQLite 相关配置 ----
# MW_DBPATH: '/var/www/html/w/cache/sqlite' # 不再需要
MW_LANG: 'zh-hans'
MW_USER: '${MEDIAWIKI_USER:-Admin}'
MW_PASS: '${MEDIAWIKI_PASSWORD:-dockerpass}'
MW_SITENAME: 'MediaWiki'
MW_LOG_DIR: /var/www/html/w/cache
XDEBUG_CONFIG: '${XDEBUG_CONFIG}'
XDEBUG_ENABLE: '${XDEBUG_ENABLE:-true}'
XHPROF_ENABLE: '${XHPROF_ENABLE:-true}'
# 原有 Web 服务(Apache)
mediawiki-web:
image: docker-registry.wikimedia.org/dev/bookworm-apache2:1.0.1
user: "${MW_DOCKER_UID}:${MW_DOCKER_GID}"
ports:
- "${MW_DOCKER_PORT:-8080}:8080"
volumes:
- ./:/var/www/html/w:cached
env_file:
- '.env'
environment:
MW_LOG_DIR: /var/www/html/w/cache
MW_DOCKER_PORT: "${MW_DOCKER_PORT:-8080}"
# ---- 新增:数据库配置(传递给 Apache 服务)----
MW_DBTYPE: 'mysql'
MW_DBHOST: 'db'
MW_DBUSER: '${MYSQL_USER:-mediawiki}'
MW_DBPASS: '${MYSQL_PASSWORD:-mediawikipass}'
MW_DBNAME: '${MYSQL_DATABASE:-mediawiki}'
# 原有 Job Runner 服务
mediawiki-jobrunner:
image: docker-registry.wikimedia.org/dev/bookworm-php83-jobrunner:1.0.0
user: "${MW_DOCKER_UID}:${MW_DOCKER_GID}"
volumes:
- ./:/var/www/html/w:cached
env_file:
- '.env'
environment:
MW_LOG_DIR: /var/www/html/w/cache
MW_INSTALL_PATH: /var/www/html/w
# ---- 新增:数据库配置 ----
MW_DBTYPE: 'mysql'
MW_DBHOST: 'db'
MW_DBUSER: '${MYSQL_USER:-mediawiki}'
MW_DBPASS: '${MYSQL_PASSWORD:-mediawikipass}'
MW_DBNAME: '${MYSQL_DATABASE:-mediawiki}'
db:
image: mariadb:11.2 # 官方 MariaDB 镜像(兼容 MySQL)
container_name: mediawiki-db
restart: unless-stopped
# user: "${MW_DOCKER_UID:-1000}:${MW_DOCKER_GID:-1000}" # 与 MediaWiki 服务用户一致(避免权限问题)
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpass} # Root 密码(生产环境用 .env 管理)
- MYSQL_DATABASE=${MYSQL_DATABASE:-mediawiki} # 初始化数据库名
- MYSQL_USER=${MYSQL_USER:-mediawiki} # 初始化用户
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-mediawikipass} # 用户密码(与 MediaWiki 的 DB_PASS 一致)
volumes:
- mediawiki-db:/var/lib/mysql # 持久化数据库数据(命名卷)
volumes:
mediawiki-db: # 对应 db 服务的卷
driver: local # 默认本地存储,可省略但建议显式写
客户端可以登录管理员
sudo ufw allow 8080/tcp && sudo ufw reload
一般是防火墙的问题,如果无法登录管理员账户Admin。

浙公网安备 33010602011771号