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。

编辑教程

posted @ 2025-11-20 23:12  no_no  阅读(16)  评论(0)    收藏  举报