LogoMark.png

MediaWiki/Backup の変更点


#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のフォルダ名)
~
~
~
~