WordPressをローカルのNASにバックアップする方法

WP Backup2

ホスティングサービスで運用されているWordPressの環境をローカルにバックアップしておくと、何かあった時に安心です。バックアップにはいろいろな方法がありますが、これを手近にあったバッファローのNASを利用してやってみたのでご紹介します。

自宅で利用しているバッファローのNAS(TeraStation)にはWebサーバやMySQLサーバの機能が搭載されています。さらにMySQLの管理にはphpMyAdminを使うようになっていたので、PHPも有効化されています。これだけの機能が揃っていればWordPressも動かすことができそうということで、実際にWordPressのバックアップ環境を作ったという訳です。

コンテンツ

Duplicatorプラグインでバックアップを作成

WordPressのバックアップにはDuplicatorというプラグインを利用します。すでにサイトを移行する時に使っていたものですが、非常に簡単にWordPressの引越やバックアップができる優れものです。

インストールは他のWordPressのプラグインと同じで、ダッシュボードのプラグインから新規追加を選択し、Duplicatorを検索、インストール、その後有効化すれば完了です。

Duplicatorプラグインのインストール

上の画像はプラグインを検索した時の画面です。私が使ったプラグインは赤枠で囲ったものになります。

有効化が完了すると、ダッシュボードのサイドバーにDuplicatorの表示が現れます。Duplicator→Packagesと進んで、表示された画面右上の「Create New」ボタンからバックアップ用データの作成を開始します。通常は右下の「Next」ボタンで進んで行けばOKで、最終的にインストール用コード(Installer)とアーカイブファイル(Archive)ができあがります。

DuplicatorのPackage

上の画像はバックアップを作成した後のPackagesの画面です。右端から2つめと3つめのボタンでそれぞれのファイルがダウンロードできるので、それを同じフォルダーに保存します。保存場所は、NASのWebサーバ上でWordPressのルートディレクトリとなる場所です。そのフォルダ直下に関連するWordPressのファイルが展開されることになります。

WordPress環境をローカルのNASに展開

続いてバックアップしたWordPressのファイルをローカルのNAS上で展開します。ここまでの作業で、インストーラ(installer.php)とアーカイブファイルがNASのWebサーバからアクセスできる場所に保存されている状態になっているはずです。インストール作業はこのインストーラのページにブラウザからアクセスすることで開始できます。
例えば、私のNASのWebサーバはポート8000番で動作しており、インストーラのファイルはwpという名前のサブフォルダに置きました。この場合、以下のアドレスにアクセスすれば処理を開始できます。

http://NASのIPアドレス:8000/wp/installer.php

上記にアクセスすると下のような画面が現れるので、データベースの名前やユーザ名、パスワードを入力して処理を進めて行きます。(下の画面には例として、データベース名をwordpress、ユーザ名をwpuserとして入力しています。)
“Test Connection”のボタンを押せば、入力された情報で、データベースに正常に接続できるかどうかチェックできます。

Duplicator インストール画面

初めてNASにインストールする場合などWordPress用のデータベースが作成されていない場合、画面にあるように、1行目のActionには”Create New Database”を選択して、新たにデータベースを作ります。すでにあるデータベースを再利用する場合は、”Connect and Remove All Data”を選択します。この場合でも、指定したデータベース上の既存データは全て消去されるので注意が必要です。

“I have read …”にチェックマークを入れ、”Run Deployment”ボタンを押せば処理が始まります。何も問題なく処理が進めば、NAS上にWordPressのファイルとデータベースがインストールされ、WordPressのローカル環境ができあがります。

これで以下のアドレスにアクセスすれば、NAS上にバックアップされたWordPressにアクセスできるようになります。

http://NASのIPアドレス:8000/wp/
(ポート番号8000、wpサブフォルダにWordPressを配置している場合)

トラブルシューティング

MySQLのキャラクターセットutf8mb4の利用を回避

正常に処理が進めば必要なファイルがNAS上に展開され、データベースの内容もバックアップから復元されます。しかしながら私の場合、NASのMySQLサーバのバージョンが相当古かったため正常にデータベースが作成されませんでした。

以下の画面はインストーラのStep3で表示されたエラーレポートの情報です。(“Show Report”ボタンを押すと表示されます)

Duplicatorのエラー情報

エラーログを確認すると、utf8mb4というcharacter setが指定されていることが原因でした。これは絵文字などに対応する4バイト文字に対応するもののようです。対応としては、NASのMySQLをバージョンアップすることが理想なのですが、絵文字は使っていないため、ここではキャラクターセットをutf8に指定し直してデータベースを作成することにしました。

Duplicatorには手動でファイルを展開して処理するオプションがあるため、それを利用してインストールを行ないます。以下その手順です。

  1. インストーラと同じフォルダにあるアーカイブファイル(*.zip)を手動で展開。
  2. 展開されたファイルのうちdatabase.sqlというファイルを以下の要領で編集。
    CREATE TABLE コマンド中のCHARSETやCOLLATEで指定されているutf8mb4をutf8に置換。これ以外の場所にあるテキストは変換しないように注意。
    また、ファイルの文字コードも変更しないようにして下さい。通常はUnicode(utf8)になっているはずです。
  3. インストーラのStep1の画面中にあるAdvanced Optionでmanual package extractionをチェック。
  4. あとは指示に沿って処理を進めれば完了。

パーマリンク設定の変更

ブログのトップページは表示されるのに個別の投稿記事が表示されず、一時悩みました。これは、NASのwebサーバでmod_rewriteが動いていなかったことが原因でした。

少々変則的な解決方法ですが、パーマリンク設定を変更して対応しました。
WordPressのダッシュボードから、設定→パーマリンクと進み、以下のように設定を変更して解決です。

http://NASのIPアドレス:8000/wp/index.php/%postname%/

URL中のwp/と%postname%の間にindex.php/をはさんだ変更です。少々かっこ悪いですが、バックアップなのでよしとしています。

まとめ

以上、MySQLとWebサーバが使えるNASを使って、ローカル環境にWordPressのバックアップを作成する方法を紹介しました。
ローカル環境にバックアップを作成するには仮想マシンを利用する方法もありますが、NASが手元にあるのであれば、比較的お手軽な方法かも知れません。