How to migrate a mediawiki site: Difference between revisions

From 清冽之泉
Jump to navigation Jump to search
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 10: Line 10:


传文件进新服务器的方法有 putty 或 WinSCP 或 SSH 或 FTP。
传文件进新服务器的方法有 putty 或 WinSCP 或 SSH 或 FTP。
== 概览 ==
MediaWiki 的安装位置:


[[File:MediaWiki 安装位置.png|600px]]
[[File:MediaWiki 安装位置.png|600px]]
步骤概览:
步骤概览:
# 重建数据库、用户、权限
# 重建数据库、用户、权限
Line 76: Line 80:


== 迁移 File System ==
== 迁移 File System ==
* 特别注意,链接文件复制到新机器就没用了。解决这个问题,可以采用 <code>rsync -avL source_dir/ dest_dir/</code> 复制,L 选项令它追踪软链后的实体文件。
* LocalSettings.php 一般复制过去能直接用
* LocalSettings.php 一般复制过去能直接用
* logo 也要备份
* logo 也要备份

Latest revision as of 22:01, 16 May 2025

相同版本的迁移很简单,重建旧环境,再把 database 和 file system 移过去就行。所以本文重点讨论升级式迁移:新 code + 旧重点备份 + update.php 等于升级成功。

新版本的数据,恢复至旧版本 MediaWiki,不支持。

旧版本的数据,恢复至新版本 MediaWiki,支持。不过要运行 update script.

  • 若 mediawiki/ 全量备份,则不用再装 mediawiki
  • 若 mediawiki/* 部分备份,则需在服务器安装同版本 mediawiki,再把备份部分移到它应去的位置

最好的迁移,是保持相同 MediaWiki 版本。不过,现实中多数是在新服务器上安装更新版本的 MediaWiki,把数据迁移进去后,在新服务器上做一个 upgrade 操作。

传文件进新服务器的方法有 putty 或 WinSCP 或 SSH 或 FTP。

概览

MediaWiki 的安装位置:

步骤概览:

  1. 重建数据库、用户、权限
  2. 导入 database
  3. 导入 files
  4. 检查 configuration
  5. 测试

对公共 MediaWiki 迁移前,先把权限改为只读,避免丢失用户在迁移期间编辑的内容。在 LocalSettings.php 中添加:

$wgReadOnly = 'Down for maintenance: access will be restored shortly';

而且,记得重启 apache2 的 php 模块:

sudo a2enmod php8.2

迁移 Database

Database 包含页面内容、用户配置、metadata、索引内容。

备份 Database

sudo apt install automysqlbackup
sudo automysqlbackup
sudo find /var/lib/automysqlbackup/
sudo cp /var/lib/automysqlbackup/weekly/my_wiki/my_wiki_week.18.2016-05-07_15h32m.sql.gz /some/place/you/want

除了用 automysqlbackup,用 mysqldump 一样也能实现 Database 的备份,这是第二种方法。

mysqldump --default-character-set=binary --user=wikidb_user --password=wikidb_userpassword wikidbname > dump_of_wikidb.sql

创建 MySQL 环境

多数重要数据存在 database 中。迁移的前提准备:创建一个正常使用的 MySQL 环境,合适的 MySQL 用户权限。备份在旧机器上操作,备份后的步骤到新机器做。

  1. create a NEW mysql user (new_mysql_user)
  2. create a NEW mysql database my_wiki
  3. GRANT the NEW mysql user access to the NEW created mysql database my_wiki
mysqladmin -u wikidb_user -p
drop wikidb
sudo mysql -u root -p 
mysql> CREATE USER 'new_mysql_user'@'localhost' IDENTIFIED BY 'THISpasswordSHOULDbeCHANGED';
mysql> quit;

sudo mysql -u root -p
mysql> CREATE DATABASE my_wiki;
mysql> use my_wiki;

mysql> GRANT ALL ON my_wiki.* TO 'new_mysql_user'@'localhost';
mysql> commit;
mysql> quit;

迁移 Database

sudo chown user:user somebackup.sql
gunzip < var/lib/automysqlbackup/weekly/my_wiki/my_wiki_week.18.2016-05-07_15h32m.sql.gz|mysql -uUSER -pPASSWORD my_wiki mysql -u wikidb_user -p wikidb < dump_of_wikidb.sql
php wikifolder/maintenance/update.php

迁移 File System

  • 特别注意,链接文件复制到新机器就没用了。解决这个问题,可以采用 rsync -avL source_dir/ dest_dir/ 复制,L 选项令它追踪软链后的实体文件。
  • LocalSettings.php 一般复制过去能直接用
  • logo 也要备份
  • 如果有 .htaccess,也需要备份
  • 上传的文件,包括删除文件、缩略图、渲染的数学图、svg图,多半都放在 images/ 文件夹下。images 文件夹的所有者为 www-data,权限为 755。php 文件一定不能为 www-data 所有。
  • extensions/ 也需要备份

不要覆盖文件夹。可先在别处解压备份文件。把 File System 移到相应位置,再打开浏览器运行 Config script 以生成 LocalSettings.php。需要迁移的文件如上。以下仅为压缩、解压缩示例。

备份 File System

sudo tar zcvhf mediawikimybackup.tgz /var/lib/mediawiki

迁移 File System

tar -xvzf mediawikimybackup.tgz