この記事を書く人と信憑性
家富正幸(いえとみまさゆき)
現役のWordPressエンジニア(エンジニア歴16年)
大規模から小規模までのWordPressテーマ開発実績数は800件以上
WordPressで構築されたクライアントのウェブサイトを保守する立場から、エンジニア目線で記事を執筆しています。
はじめに
WordPressではプラグインを使うことで簡単にバックアップを取得することができます。最近では、復元まで簡単に行えるプラグインまで登場してきました。
ただ、世の中のプラグインではバックアップを取得できるが、「復元は手動」という不親切なプラグインや、サーバーに若干詳しい方なら、手動でバックアップを取得している方もいるかもしれません。
今日はそんな万が一に備え、WordPressが壊れてしまった場合に、手動でバックアップから復元する方法をご紹介します。
復元に必要なもの
WordPressのバックアップにおいて大事なものが2つあります。
これが揃っていないと復元は難しいので、まずバックアップデータを確認してください。
- wp-content/ ディレクトリ以下のファイル一式
- MySQLデータベースのダンプデータ(.sqlという拡張子のデータ)
WordPressは追加される記事などの投稿データを「MySQLデータベース」へ登録し、その記事に添付された画像やファイルやサイトを表示するときに使うテーマファイル、プラグインの本体を wp-content/ ディレクトリ以下にファイルとして保存しています。
なので、どちらか一方でも存在しない場合、完全な復元は難しくなります。
まずはバックアップデータを確認し、上記のデータが含まれているかどうかを確認しましょう。
STEP1. 準備
復元を行う場合、バックアップが取得できていれば、今まで動作していたWordPressは必要ありません。
逆に邪魔になってしまいますので、壊れたWordPressのファイルは削除するか別の場所に移動するかして、新しくバックアップを行うWordPressと同じバージョンのWordPressを、サーバーに新規にアップロードしてしまってください。
なお、WordPressは古いバージョンも公開されており、下記のURLなどから任意にダウンロードができます。
バージョンは合わせておかないと「復元したのに正しく動かない」といった不具合が発生する要因になりますので、必ず復元するWordPressのバージョンと同じものをアップロードしましょう。
なお、ここではアップロードを行うだけで、インストールは行わないでください。
データベースを新しく用意する
できればデータベースも新しく用意した方がよいでしょう。
古いデータベースのデータが残っていると、データを書き戻す際や、今後運用する際にデータが重複してややこしくなる可能性がありますので、可能であれば古いWordPressのデータベースは削除するか、新規にデータベースを1つ作成し、そちらにインストールするようにしてください。
もしレンタルサーバーの制約で、データベースが1つしか使えないプランなどの場合、古いデータの削除を行う必要があります。
通常、レンタルサーバーであれば「データベースの管理ツール」といった名目で「PHPMyAdmin」というデータベースの管理ツールが付属していることが多いので、そちらを利用して古いWordPressが使っていたデータベースの中身(テーブル)を削除してください。
STEP2. ファイルを復元する
まず復元の第1歩はファイルを元に戻すことになります。
まっさらな状態のサーバーに、WordPressを新規にインストールし、最初にご説明した wp-content/ のディレクトリを復元しましょう。
WordPressのインストールディレクトリは下記のようにファイルが配置されています。
- wp-admin/ ・・・ 管理画面のデータ
- wp-content/ ・・・ ユーザーがアップした・管理しているデータ
- wp-include/ ・・・ 管理画面でも表示画面でも使う共通のプログラムデータ
- wp-*.php ・・・ 設定ファイルやエントリポイント等
このうち、wp-content/ ディレクトリをFTP等を使ってサーバーにアップして、上書きしてしまってください。
wp-content/ 以外のディレクトリは、通常の運用をしていればユーザーが何か変更を加えたり、WordPressが変更を行ったりすることはありません。
そのため、wp-content/ だけを元に戻せば、ほかのファイルは新しくインストールしたWordPressのファイルで全く問題ないのです。
これだけで「ファイルの復元」は完了です。
この際、サーバーへFTPを使って接続することになりますが、その際の文字コードは必ず「UTF–8」とすることを忘れないで下さい。
バックアップファイルに日本語のファイルが含まれている場合、後から参照できなくなったり、リンク切れが発生したりするなど、正しく復元ができなくなる恐れがあります。
wp-config.phpの情報を変更する
ファイルをアップロードしたら、wp-config.phpの中身を少し編集しましょう。
wp-config.phpにはデータベースの接続情報が記載されているので、準備編で新しいデータベースを作成している場合など、こちらの内部を書き換える必要があります。
define( ‘DB_NAME’, ‘MyDatabaseName’ );
となっている箇所の MyDatabaseName を、新しいデータベースの名称に書き換えます。
もし古いデータベースの中身を削除しただけで、データベースそのものを変更していない場合には、この作業は必要ありません。
STEP3. データベースを復元する
ファイルの復元が完了したら、次はデータベースを復元します。
MySQLデータベースのデータを書き戻す場合、2通りの方法があります。
- SSHでサーバーにログインしmysqlコマンドを使って書き戻す
- サーバー上のデータベース管理ソフトを使ってウェブブラウザ上から書き戻す
1.はサーバー側にSSHログインができ、さらにコマンドラインが使えないと難しいので上級者向けの方法となります。
ここでは2.の方法を利用する方向で行きましょう。
準備編でも紹介したように、通常レンタルサーバーではデータベースの中身を操作できるように「PHPMyAdmin」といったデータベース操作ツールが、サーバーの管理画面などから起動できるようになっていることが多いです。
もし存在していなければ、フリーのデータベース管理ツール「Adminer」というものが配布されていますので、こちらをサーバーにアップロードすることでデータベースの操作がウェブブラウザで行えるようになります。
復元するサイトのドメインが異なる場合
バックアップを元に戻す際、例えば本番サイトではなくテストサイトにまず復元する場合など、バックアップしたサイトと復元するサイトで、ドメインが異なる場合があります。
通常、WordPressはインストールしたときのドメインを、データベースの中に情報として保持しており、URLの生成などに利用しています。
また、各投稿の中に画像を配置した場合なども、ファイルをアップロードしたときに、WordPressに設定されているドメインが、http(s)://〜から始まる絶対パスとして利用されるようになっています。
ですので、バックアップした時とドメインが違うサーバーにファイルやデータベースを書き戻しても、そのままでは正常に動作しません。
この場合、ファイルの復元とデータベースの復元を行った後、データベースの書き換えを実施する必要があります。
しかし、ここで注意しなければならないことがあります。
それは、データベース管理ソフトの置換機能などは絶対に使ってはいけない、ということです。
WordPressは内部で配列やオブジェクトといった「テキスト」ではない複雑な構造のデータを、シリアライズという方法を使って、擬似的にテキストデータに変換してデータベースに保存するようになっているからです。
シリアライズされたデータは、テキストの中に元の配列やオブジェクトの構造を設計図として保持しており、1文字でもその設計図とデータが一致しないと、不正なデータという認定をされてしまい、正しく元の配列やオブジェクトのデータを読み出すことが不可能になります。
データベース管理ソフトに備わっている「置換機能」は、このシリアライズのことは全く考慮しませんから、不用意に書き換えてしまうと、シリアライズされたデータがすべて「不正なデータ」になってしまい、せっかく復元したサイトがまた壊れるという悲惨な状態になります。
そこで、下記のWordPressのURL変更用に開発された専門のツールを利用します。
Database Search and Replace Script in PHP | interconnect/it
この専門ツールはシリアライズされたデータも、設計図とデータの両方が正しく一致するように書き換えてくれるので、不正なデータにしてしまうことなく、正しくデータを書き換えることができます。
詳しい使い方は下記の記事などが詳しいので、利用する際には参考にしてみてください。
WordPressサイトのドメイン一括置換には「Search Replace DB」が良い!
STEP4. 管理画面にログインしてみる
ステップ1とステップ2がすんだら、管理画面が利用できる状態になりますので、設置したWordPressの管理画面にアクセスしてみて、ログインできるかどうか試してください。
ちゃんとアクセスできて、元の投稿や固定ページ、メディアファイルなどが正しく確認できれば復元は成功しています。おめでとうございます。
管理画面が動作しない
もしここでWordPressの管理画面が動作しない場合は、データベースの復元で失敗している可能性が非常に高くなります。(管理画面のファイルは準備編でWordPressを新規にインストールしているので、基本的には問題なく動作するはずです。)
データベースの書き戻しに失敗していないか、wp-config.phpに記載されているデータベースに、正しくデータを書き戻しているかを確認しましょう。
データがおかしい
無事、管理画面にログインできたら、投稿データや固定ページのデータなど、元のまま正しく利用できるかどうかを確認してください。
投稿や固定ページが存在しなかったり、異なったりしている場合には、やはりデータベースの書き戻し作業で失敗している可能性が高くなります。
もし、メディアファイルの画像やファイルがリンク切れを起こしている場合などは、逆にファイルの復元に失敗している可能性が大です。
ちゃんとUTF–8でファイルをアップしているか、正しい場所にファイルをアップできているかなど、手元のファイルとサーバー上のファイルを照合する等して確認してみましょう。
STEP5. パーマリンク構造を復元する
管理画面に無事ログインできたら、最後にパーマリンク構造を復元しましょう。
これは至って簡単です、管理画面の「設定」の「パーマリンク」設定画面から、何もせず「更新」ボタンを押すだけ。
本当にこれだけで問題ありません。
何をしたかというと、WordPressのパーマリンク構造の動作には .htaccess というファイルが必要になるのですが、このファイルはパーマリンク構造を保存したときに生成されるので、その生成を行ったということです。
このファイルがないと、パーマリンク構造は正しく指定しているのに、URLが404になってしまったりするので、完全に復元が成功しません。
忘れずに対応するようにしてください。
さいごに
いかがだったでしょうか?
これでWordPressのバックアップの方法と、復元の具体的な方法をお伝えすることができました。
現在はバックアップ用の便利なプラグインなどがあるため、あまり意識することはないかもしれません。
しかしながら、具体的な方法を知っておくことで、プラグインが利用出来ない状況などでも、大事なデータを守ることが出来るようになります。
サイトを運営する上で一番大事な財産である「データ」ですから、ご自身でしっかり守っていく方法を身につけておきましょう。