#author("2019-10-18T21:27:26+09:00;2019-10-18T20:11:47+09:00","default:inoue.ko","inoue.ko")
*MediaWiki
Backup / Restore
~
***CONTENTS
#contents2_1
~
**バックアップ
MediaWikiのバックアップでは、WordPressと同様に、システムファイルすなわちMediaWikiのフォルダ(アップロード画像を含む)と、データベース(記事、アカウント情報を含む)の2つをバックアップする必要があります。
&color(red){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>Google: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を使って>Vim]] .bash_profile を編集
$ vi ~/.bash_profile
--環境変数 $PATH を変更するため、以下の一行を追記
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
--保存 :w、終了 :q します。
-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のフォルダ名)
~
~
~
~