MediaWikiの設定 - 移行

提供:MochiuWiki : SUSE, EC, PCB
2021年7月28日 (水) 08:03時点におけるWiki (トーク | 投稿記録)による版 (→‎前準備)
ナビゲーションに移動 検索に移動

MochiuWikiの移行

MochiuWiki(MediaWiki)のデータ移行をここに記載する。


前準備

MediaWikiディレクトリにあるimagesディレクトリのパーミッションと所有者および所有グループを以下のように変更する。

sudo chmod 777 images images/temp images/thumb images/archive
sudo chown -R <ユーザ名>:<ユーザグループ名> images/

または

sudo chmod 777 images images/temp images/thumb images/archive
sudo usermod -aG www-data "$USER"
sudo chown -R <ユーザ名>:www-data images/


次に、imagesディレクトリに存在する.htaccessファイルを以下のように編集する。

# 修正前
<IfModule rewrite_module>
       RewriteEngine On
       RewriteOptions inherit
       RewriteCond %{QUERY_STRING} \.[^\\/:*?\x22<>|%]+(#|\?|$) [nocase]
       RewriteRule . - [forbidden]
       # Fix for bug T64289
       Options +FollowSymLinks
</IfModule>

# 修正後
<IfModule rewrite_module>
       RewriteEngine On
       RewriteOptions inherit
       RewriteCond %{QUERY_STRING} \.[^\\/:*?\x22<>|%]+(#|\?|$) [nocase]
       RewriteRule . - [forbidden]
       # Fix for bug T64289
       # Options +FollowSymLinks
</IfModule>



MySQLのmysqldumpコマンドでバックアップする方法

バックアップの取得

MySQLが同じバージョンかつ文字コード等が同じ設定のMySQLのみ復元できる可能性がある。
また、違うバージョンのMediaWikiでは復元できない可能性がある。

コマンドラインからmysqldumpコマンドを使い手動でバックアップする。
特殊な文字が存在する場合の欠落を防ぐため、--hex-blobオプションでバイナリデータを16進数表記文字列に変換して出力する。

mysqldump -Q --host=$MYSQL_SERVER --user=$MYSQL_USER --password=$MYSQL_PASSWD --default-character-set=binary --hex-blob $MYSQL_DB_NAME > MochiuWiki_DB_backup_20200101.sql
または
mysqldump --host=$MYSQL_SERVER --user=$MYSQL_USER -p --default-character-set=utf8mb4 $MYSQL_DB_NAME > MochiuWiki_DB_backup_20200101.sql


もし、cronを使用して定期的にバックアップを取る場合、以下のように設定する。

crontab -e   # sudoは不要

# 毎月1日0時にバックアップを取得する
0 0 1 * * mysqldump -Q --host=$MYSQL_SERVER --user=$MYSQL_USER --password=$MYSQL_PASSWD --default-character-set=binary --hex-blob $MYSQL_DB_NAME > MochiuWiki_DB_backup_20200101.sql


バックアップのインポート

上記でバックアップしたデータベースを、既存のMySQLに復元する。

mysql --host=$MYSQL_SERVER --user=$MYSQL_USER --password=$MYSQL_PASSWD $MYSQL_DB_NAME < MochiuWiki_DB_backup_20200101.sql
または
mysql --host=$MYSQL_SERVER --user=$MYSQL_USER -p $MYSQL_DB_NAME < MochiuWiki_DB_backup_20200101.sql



dumpBackup.phpツールでバックアップする方法

バックアップの取得

maintenanceディレクトリで以下のコマンドを実行する。
履歴も含めてすべてのページをxmlで取得できる。

php maintenance/dumpBackup.php --full --uploads > MochiuWiki_backup_20200101.xml  // ページのエクスポート
または
php dumpBackup.php --current > MochiuWiki_backup_20200101.xml  // ページのエクスポート


バックアップのインポート

新しいサーバ側で作業する。
maintenanceディレクトリで以下のコマンドを実行する。
すべてのページをインポートできる。

php maintenance/importDump.php < MochiuWiki_backup_20200101.xml



画像をバックアップする方法

バックアップの取得

imagesディレクトリを圧縮するだけでよい。

tar -zcf /<出力するディレクトリ名>/MochiuWiki_images_backup_20200101.tar.gz /<MediaWikiのディレクトリ名>/images   // 添付ファイルのアーカイブ


バックアップのインポート

画像やその他のアップロードされたファイルを復元する。
なお、PHPがセーフモードの場合、importImages.phpが実行できないので注意する。

cd /var/www/html/mediawiki
mkdir tmp
mv MochiuWiki_images_backup_20200101.tar.gz tmp
cd tmp
tar -zxf MochiuWiki_images_backup_20200101.tar.gz


imagesディレクトリ下にあるファイルを単一のディレクトリにコピーする。

cd ../
mkdir tmpimages
cp tmp/images/*/*/* tmpimages


画像やその他のアップロードされたファイルをインポートする。

php maintenance/importImages.php --overwrite tmpimages/


レンタルサーバであるValue Server上では、以下のコマンドを実行する。

# PHP 7.4の場合
php74cli maintenance/importImages.php --overwrite tmpimages/

# PHP 8.0の場合
php80cli maintenance/importImages.php --overwrite tmpimages/


サーバの移行でない(ディレクトリの移行)であれば、以下のコマンドを実行すれば画像をインポートできる。

php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/0
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/1
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/2
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/3
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/4
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/5
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/6
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/7
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/8
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/9
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/a
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/b
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/c
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/d
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/e
php importImages.php --search-recursively --overwrite --user=<ユーザ名> /var/www/html/旧mediawikiのディレクトリ/images/f