MediaWiki
Backup / Restore
CONTENTS
バックアップ
MediaWikiのバックアップでは、WordPressと同様に、システムファイルすなわちMediaWikiのフォルダ(アップロード画像を含む)と、データベース(記事、アカウント情報を含む)の2つをバックアップする必要があります。
DBを直接触ります。自己責任ということでご了承下さい。
サーバーの停止
サーバーを停止して 作業中に wiki のデータが動かないようにします。
(利用者がいる場合は、事前に作業日時の通知が必要です。)
$ service httpd stop 又は $ systemctl stop httpd
システムフォルダのバックアップ
FTPでそのままフォルダを複製してDLしても構いませんが、ファイル数が多いので、ターミナル接続で圧縮する方が早いです。
- システムフォルダが置かれたディレクトリに移動します
$ cd /var/www/html
- MediaWiki のディレクトリ(ここでは mediawiki )を tar で圧縮します
$ tar -zcvf [ 圧縮後のファイル名 ] [ 圧縮したいフォルダ名 ] 例)$ tar -zcvf mw_20190101.tar.gz mediawiki
- 出来上がったファイル(mw_20190101.tar.gz)を保管します。
DBのバックアップ
- ホームディレクトリに戻ります
$ cd ~
- DBの名称を mediawiki_db と仮定します
- DBのバックアップには、mysqldump というコマンドを使います。
$ mysqldump -u [ DBユーザ名 ] -p DB名 > [ 出力ファイル名(拡張子 .sql)] 例)$ mysqldump -u root -p mediawiki_db > mediawiki_db_20190101.sql
DBユーザーのパスワード入力を求められるので入力してください。 - mediawiki_db_20190101.sql はホームディレクトリにできます。
- このファイル(mediawiki_db_20190101.sql)を保管します。
サーバーの起動
作業が終了したら apache を再起動します。
$ service httpd start 又は $ systemctl start httpd
リストア
今あるものが何らかの理由で壊れた・・という場合に、バックアップを使って、最新のバックアップ状態まで復元することを前提とした説明です。
バックアップの逆の操作で、システムファイル、DB、それぞれ行います。
システムフォルダのリストア
- システムフォルダを置くべき場所にFTP接続します
/var/www/html
- 古いシステムフォルダを削除します
- バックアップしてあった mw_20190101.tar.gz をアップします
- ターミナル接続して目的の場所へ移動します(以下がふつうです)
$ cd /var/www/html
- その場で解凍します
$ tar -zxvf mw_20190101.tar.gz
- 解凍後のフォルダ名を mediawiki と仮定します
- オーナとグループを apache に変更
find mediawiki -exec chown apache {} \; find mediawiki -exec chgrp apache {} \;
DBのリストア
ホームディレクトリに バックアップファイル(上記の例では mediawiki_db_20190101.sql)があるという前提で説明します。
- カレントをホームディレクトリにします
$ cd ~
- ルートユーザーとして DB に接続します
$ mysql -u root -p
- 壊れたDBがある場合は、それを削除します
> drop database mediawiki_db;
- 再度同じ名前で新規作成します
> create database mediawiki_db;
- 必要であればユーザを作成(これは MediaWikiが使っているユーザ名)。違う名前を使う場合は、後に LocalSettings.php の書き換えが必要です。 ルートユーザとして作業する場合はユーザの作成は不要です。
> create user 'ユーザー名' identified by 'パスワード'; > grant all on mediawiki_db.* to 'ユーザー名';
- データベースをリストアします
$ mysql -u root -p mediawiki_db < mediawiki_db_20190101.sql ※コマンドの違いに注意:mysqldump ではなく mysql
サーバーの引越し
以下、同一ディレクトリ名、同一データベース名で サーバーの引っ越しを行う手順です(URLは変更になる前提です)。フォルダ名やDB名を変更するには、多くの手直しが必要で非常に複雑なので、避ける方が賢明です。ということで、基本的には、バックアップ&リストアと同じ作業手順で、 設定ファイルの URL情報の書き換えのみが追加作業となります。
作業の流れ
まずは、アウトラインのみ確認
- 引越し元
- サーバーを停止
$ service httpd stop
- システムフォルダのバックアップ
- データベース(記事、アカウント情報を含む)のバックアップ
- サーバーの起動
$ service httpd start
- サーバーを停止
- 引越し先
- サーバーを停止
$ service httpd stop
- システムフォルダのアップロード
- 空のデータベースを新規作成してバックアップを投入
- LocalSettings.php の書き換え
- サーバーの起動
$ service httpd start
- サーバーを停止
- 引越し完了・動作確認後
- 引越し元のURLに、引越し先への自動転送設定
- 引越ししたデータは、もしもに備えてアーカイブ
- 引越し元のサーバーからデータを削除
システムフォルダのバックアップ(引越し元)
- システムフォルダの名称を mediawiki として説明します。
FTPでそのままフォルダを複製してDLしても構いませんが、ファイル数が多いので、ターミナル接続で圧縮する方が早いです。
- システムフォルダが置かれた場所に移動します
$ cd /var/www/html
- ディレクトリ mediawiki を tar で圧縮します
$ tar zcvf [ 圧縮後のファイル名 ] [ 圧縮したいフォルダ名 ] 例)$ tar zcvf mw_20190101.tar.gz mediawiki
- 出来上がったファイル(mw_20190101.tar.gz)を保管します。
DBのバックアップ(引越し元)
- ホームディレクトリに戻ります
$ cd ~
- DBの名称を mediawiki_db と仮定します
- DBのバックアップには、mysqldump というコマンドを使います。
$ mysqldump -u DBユーザ名 -p DB名 > 出力先ファイル名 例)$ mysqldump -u root -p mediawiki_db > mediawiki_db_20190101.sql
DBユーザーのパスワード入力を求められるので入力してください。 - mediawiki_db_20190101.sql はホームディレクトリにできます。
- このファイル(mediawiki_db_20190101.sql)を保管します。
システムフォルダのアップロード(引越し先)
- システムフォルダを置くべき場所にFTP接続します(以下がふつうです)
/var/www/html
- バックアップしてあった mw_20190101.tar.gz をアップします
- ターミナル接続して目的の場所へ移動します
$ cd /var/www/html
- その場で解凍します
$ tar zxvf mw_20190101.tar.gz
- 解凍後のフォルダ名を mediawiki と仮定します
- オーナとグループを apache に変更
find mediawiki -exec chown apache {} \; find mediawiki -exec chgrp apache {} \;
DBの新規作成とバックアップデータの投入(引越し先)
- FTPで引越し先サーバーのユーザーホームにバックアップファイル(上記の例では mediawiki_db_20190101.sql)をアップロードします。
- 引越し先サーバーにSSH接続します。
- ホームディレクトリに mediawiki_db_20190101.sql があることを確認
$ ls ・・・・ mediawiki_db_20190101.sql ・・・・・・
- ルートユーザーとして DB に接続します
$ mysql -u root -p
- 同名のデータベースを新規作成します
> create database mediawiki_db;
- 必要であればユーザを作成(これは MediaWikiが使っているユーザ名)。違う名前を使う場合は、後に LocalSettings.php の書き換えが必要です。 ルートユーザとして作業する場合はユーザの作成は不要です。
> create user 'ユーザー名' identified by 'パスワード'; > grant all on mediawiki_db.* to 'ユーザー名';
- データベースをリストアします
$ mysql -u root -p mediawiki_db < mediawiki_db_20190101.sql ※コマンドの違いに注意:mysqldump ではなく mysql
LocalSettings.php
- LocalSettings.php でURLの変更が必要です。以下の部分を引越し先の新しい URL に書き換えて下さい。
## The protocol and server name to use in fully-qualified URLs $wgServer = "http://www.example.com"; ← ここです。
- DBの管理パスワードが異なる場合は、以下の変更も必要です。
## Database settings $wgDBtype = "mysql"; ← 変更不要 $wgDBserver = "localhost"; ← 変更不要 $wgDBname = "[データベース名]"; ← 変更不要 $wgDBuser = "root"; ← 異なる場合は変更が必要です。 $wgDBpassword = "XXXXXX"; ← 異なる場合は変更が必要です。
ローカルにクローンを作る方法
MediaWikiの運用では、サーバーにトラブルが生じた際のバックアップとして、ローカルに同じものを作っておきたい・・と思うことがあります。
ここでは、サーバー上で運用中のMediaWikiのクローンをローカルに作る手順について概説します。
基本的には、サーバーの引っ越しと同じですが、引っ越し先が XAMPP になるので、少し違いがあります。
- ローカルにクローンを作るには、MediaWiki のフォルダ と データベースの2つ をダウンロードして、ローカル上で再構築することが必要です。
- 基本的に、MediaWikiのフォルダ名は同じものに また、データベース名も同じものに する前提です。名称が異なる場合は整合性がとれません。
ローカル環境 XAMPP の準備
XAMPP をローカルPCにインストールして、サーバー環境を作ります。
- インストール予定の XAMPP のPHPのバージョンとMySQL(MariaDB)のバージョンが運用中の MediaWiki と互換性があるか確認して下さい。
https://www.mediawiki.org/wiki/Compatibility/ja - すでにインストール済みの場合は、PHPのバージョンとMySQL(MariaDB)のバージョンが運用中の MediaWiki と互換性があるか確認し、合わない場合は、適合するバージョンを再インストールする必要があります。
- その他のバージョンは以下から見つかります。
https://sourceforge.net/projects/xampp/files/
- XAMPPでは、以下の2つを起動することが前提です。
- Apache(httpd) の起動
- MySQL(MariaDB)の起動
運用中の MediaWiki 全体のバックアップ・ダウンロード
- 1) 運用中のサーバーから MediaWiki のフォルダを FTPダウンロード
- 2) 運用中のサーバーでデータベースをバックアップしてFTPダウンロード
- Terminal から SSH接続
- mysqldump コマンドで、.sql ファイルをつくる
以下、root としてホームディレクトリで操作している場合の記述です。# mysqldump -u root -p [DB名] > XXXX.sql
- FTP等で、XXXX.sql をダウンロード
XAMPP の htdocs に MediaWiki フォルダを投入
- htdocs に DLしてあった MediaWiki フォルダを投入
- 上記インストール時と同様にパーミッションを変更
- images を書き込み可に
- mw-config を書き込み可に
XAMPP の MySQL にDBを登録
XAMPPに入っている phpMyAdmin を使う方法もありますが、ここでは、説明を短くするため、Terminalを使って mysql に接続します。
(XAMPP で MySQL(MariaDB)が起動している前提です。)
- Terminl から mysql に接続・・ですが、デフォルトでは、PATHが通っていないので、これを通す必要があります。mysql は以下にある前提です。
/Applications/XAMPP/xamppfiles/bin
- Terminal で viを使って .bash_profile を編集
$ vi ~/.bash_profile
- 環境変数 $PATH を変更するため、以下の一行を追記
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
- 保存 :w、終了 :q します。
- 環境変数 $PATH を変更するため、以下の一行を追記
- Terminal を開き直すと PATHが通っているはずです。以下でチェック。
$ echo $PATH
- 以後、以下のように簡単に mysql に接続可能です。
$ mysql
- バックアップした XXXX.sql はユーザーのホームディレクトリに置く前提
- Terminalを起動します(カレントはホームディレクトリ)。
- XXXX.sql の存在を確認します。
$ ls ・・・・ XXXX.sql ・・・・
- データベースに sudo で管理者として接続します。
$ sudo mysql PASSWORD:(パソコンユーザのパスワードの入力を求められます)
- 接続できると、以下のようにプロンプトが表示されます。
MariaDB [(none)]>
- 運用中のものと同名のデータベースを作成します。
MariaDB [(none)]> create database [データベース名];
- できたことを確認
MariaDB [(none)]> show databases;
- 接続を切ります。
MariaDB [(none)]> quit
- 作成した空のDBを バックアップしてあった XXXX.sql でリストアします。
$ sudo mysql [データベース名] < XXXX.sql PASSWORD:(パソコンユーザのパスワードの入力を求められます)
以上で、データベースの方のリストアは完了です。
LocalSettings.php の編集
運用中とはサーバーが異なるため、いくつか修正が必要です。
- サーバー名を localhost に変更
## The protocol and server name to use in fully-qualified URLs $wgServer = "http://localhost";
- データベース設定部分の変更
## Database settings $wgDBtype = "mysql"; ← 変更不要 $wgDBserver = "localhost"; ← 変更不要 $wgDBname = "[データベース名]"; ← 変更不要 $wgDBuser = "root"; ← XAMPPデフォルトでは root でいいはずです。 $wgDBpassword = ""; ← XAMPPデフォルトでは no-pass です。
以上で、MediaWikiフォルダのセットアップは完了です。
これで動くはずです。ブラウザから以下のURLにアクセスしてみて下さい。
http://localhost/(MediaWikiのフォルダ名)