WordPressのファイル・ディレクトリ構成および、データベース(MySQL)とバックアップ・復元について

この記事は途中まで書いています。引き続き、内容は更新されます。

WordPressの引っ越しは、比較的しやすいほうだとは思いますが、しかしながら引っ越し事故が起きやすいのも現実です。

また、私は以前より「BackWPupプラグイン(無料)を使用して定期的なバックアップ自体はできるけれども、復元はやったことがない」「All-in-One WP Migrationプラグインを使用して、バックアップと復元を実施することはできるけれども、100MBなどの容量制限がかかってしまって復元を行うことができない」などといった問題に対して直視しておりました。

正直、プラグイン頼りは危なっかしいとね。しかしながら、多くのWEB制作者がプラグイン頼りなのも現状です。

この記事では、FTP等を使用して自分自身で、手動でWordPressのお引越しまでができるようになるのがゴールです。

そして、WordPressの仕組みをある程度理解しておくことで、「ほほ~、こんな風にWordPressは動いているのか」と知れることや、ある程度の突発的な不具合に対して対処できることも期待されます。

目次

WordPressのファイル・データベース構造について知る

いきなり難しそうなタイトルですみません。

しかしながら、WordPressを運用する上では、全ユーザーが以下のことを最低限理解しておいたほうが良いです。

WordPressは、簡単に言うとファイル(ディレクトリ)の集まりと、データベース(MySQL)の集まりを合わせたものです。

文字コードはそれぞれUTF-8(BOMなし)(UTF-8Nとも表現される)にしておきます。テキストエディタ等で、UTF-8Nの文字コードにした上でコードやデータベースなどの編集を行いたい場合は、以前はWindows標準のメモ帳では対応が難しいとされてきましたが、初期設定はBOMのないUTF-8で保存することができるようになるといった改善が行われてきました。

一般的には、無償のものではVSCodeサクラエディタTeraPadがあります。また、有償のものでは秀丸エディタEmEditorなどがあります。お好きなものを使用して編集していきましょう。

詳しい内容については、以下を見ていきましょう。本当に最低限の内容だけをお伝えしたいので、他の小難しいところは省略いたします。

WordPressのファイル(ディレクトリ)構造について

WordPressは、ざっくりお伝えすると、以下の要素による組み合わせ(構成)となっています。

WordPressのファイルおよびディレクトリ構造

public_html / index.php
  |   wp-config.php [644]
  |   ~略~
  |   .htaccess [600]
  |
  +-- wp-admin / ~略~
  |
  +-- wp-content / index.php
  |     |
  |     +-- languages
  |     +-- plugins
  |     +-- themes
  |     +-- upgrade
  |     +-- uploads
  |
  +-- wp-includes / ~略~

※ここでのwp-config.php.htaccessの横についている[644]や[600]は、ファイルパーミッション(ファイルやディレクトリなどの書き込み権限)のことを指します。通常はFTPクライアントソフトウェア上などで設定変更を行うことが可能です。特にセキュリティ上重要なファイルについては、適切な値(権限)に設定することが必要です。

基本的に、WordPressのカスタマイズ内容はすべてwp-contentディレクトリ以下に含めます。

その他のディレクトリを任意で作成していただいても良いのですが、WordPressのシステム上またはユーザー自身が使用するパーマリンクとは別のディレクトリを作成しましょう。このあたりがバッティングしてしまうとWordPressの使用上に問題が発生する場合があります。たとえば、ユーザー自身が固定ページの記事などでprofileというパーマリンクを使用するのに、public_html以下に同じくprofileというディレクトリを作成してしまうと、問題が発生します。

あとは、基本的にカスタマイズして良いファイルは.htaccessです。後述しますが、公開制限やリダイレクトの設定などもこのファイル上で設定を行います。

その他にも、WordPressを使用する上では大切なお作法は色々とありますが、ここではこれくらいにしておきます。

public_html以下

まずは、public_htmlディレクトリ以下を見ていきます。

レンタルサーバーによっては、もしくはサブディレクトリにWordPressをインストールした場合には、public_htmlではない場合もあります。その場合は適宜読み替えてこの記事を読んでください。

index.phpこれは、WordPressに最低限必要なファイルですね。その他のファイルも消してはいけないのですが、このファイルを削除するとサイトを閲覧すること自体ができなくなります。通常は、ユーザーとしてなんら使うことのないファイルです。

wp-config.phpは、データベース(MySQL)への接続先情報(接続先URL・ユーザーID・パスワードなど)などが記載されています。これを消してしまうとデータベース(投稿記事やWordPressのカスタマイザーや設定画面等で設定した情報)が参照できなくなってしまいますので、これも消してはいけないファイルです。また、本ファイルは特に取り扱いに注意が必要なファイルです。このファイルのパーミッションは、多くのレンタルサーバーの場合600にしておくと良いでしょう(オーナーのみ書き込み・読み込み可能に)。レンタルサーバー以外であれば、400(オーナーのみ読み込み可能のみに)にしておくと良いです。

また、このファイルはひとつ上の階層のディレクトリ内に移動させてもOKです。この場合のメリットは、公開フォルダにファイルが存在しなくなるので、ブラウザからURLを叩かれることはなくなります。他にも、次に紹介する.htaccessを使用してこのファイルへのアクセスを禁止する方法もあります。少数ではありますが、一部のプラグイン(有名なものではWP Super Cache)ではこのファイルに情報を書き込むものがあるので、そういったプラグインを使用する場合は、他のファイルと同じディレクトリ内に置く対応が必要となる場合があります。不具合が出た場合は、元の場所に戻しましょう。

.htaccessは、このファイルも様々な設定情報を書き込むファイルです。たとえば、公開制限やリダイレクトの設定などの情報を記述します。サイトをhttp(SSLなし)にアクセスした場合、https(SSLあり)にリダイレクトするなどの設定も、このファイルに書き込みます。また、WordPressのパーマリンク設定を変更すると、

# BEGIN WordPress
~
# END WordPress

までの記述が上書きされます。WordPressにとっては切っても切り離せない、とても大切なファイルです。パーミッションは、通常は644(オーナーのみ書き込み・読み込み可能に。その他は読み込みのみ可能に)になっています。

その他にも消してはいけない大切なファイルはありますが、まずは上記を理解しておくと良いでしょう。

wp-content以下

次に、wp-contentディレクトリ以下を見ていきます。

まず最初に目につくのはindex.phpですが、必ずこれは存在するファイルです。そのままにしておきましょう。通常は、ユーザーとしてなんら使うことのないファイルです。

languagesディレクトリは、言語(翻訳)関連のファイルを保存しています。通常は、ユーザーとしてなんら使うことのないディレクトリです。

pluginsディレクトリは、プラグインのファイルを保存しています。プラグインを更新したらエラーを起こした場合などは、プラグイン本体のディレクトリ名を変更するなどして、強制的にプラグインを不使用にすると良いでしょう。

themesディレクトリは、テーマのファイルを保存しています。

upgradeディレクトリは、WordPressをアップデートする際に使用されるディレクトリです。初めてWordPressを更新すると、自動的に生成されます。通常は、ユーザーとしてなんら使うことのないディレクトリです。

uploadsディレクトリは、メディアライブラリ(画像や動画などのメディア)を保存するディレクトリです。デフォルトでは、アップロードした年月ごとにディレクトリを分け、設定>メディア設定で設定したサイズの縮小サイズの画像ファイルを自動生成して保存されます。

また、このwp-contentディレクトリ内には、BackWPupプラグインやAll-in-One WP Migrationプラグインを使用してバックアップを行った際に生成されるバックアップファイルも、独自のディレクトリを作成して保存されます。

その他のディレクトリ

wp-adminディレクトリには、WordPressの管理画面に関するファイルが、wp-includesディレクトリにはWordPressシステム全般(API・クラス・関数など)に関するファイルが保存されています。これもそのままにしておきます。

番外編

XO Securityプラグインを使用してログインページ(管理画面へのログインページ)URLを書き換える際に、public_htmlディレクトリ内にログイン用のphpファイルが自動生成されます。以前は、このファイルを削除すると本プラグインの使用に問題が出てしまいましたが、v2.6.2より本ファイルが存在しない場合は自動的に再生成するように仕様変更していただきました。

このアップデート対応により、サーバー移転時にも対応しやすくなったと思います!(石鷹さんには本当に感謝です)

様々なファイル・ディレクトリについて説明してきましたが、WordPressに必要なファイル・ディレクトリ説明は以上です。

データベース(MySQL)

データベース(MySQL)には、投稿記事やWordPressのカスタマイザーや設定画面等で設定した情報を保存します。その他にも、テーマやプラグイン独自の設定情報も保存されることがあります。データベースには、先ほどご紹介したwp-config.phpに記述した接続先情報を用いて、データベースへアクセスします。

データベースと聞くと、見知らぬ言葉でつい構えてしまいがちですが、たとえばExcelのように様々な数値やデータの羅列を保存していると考えていただければ、少しとっつきやすくなるかもしれません。

データベースを直接編集したりバックアップするには?

通常はphpMyAdminというものを使用して、データベースを直接編集したり(編集した内容によっては不具合を起こすこともあるので、事前にバックアップ必須です)、バックアップや復元を行うことができます。phpMyAdminは、通常は多くのレンタルサーバーに予めインストールされています。

もしくは、BackWPupプラグインを使用してWordPress管理画面上からデータベースファイルのバックアップをダウンロードすることもできます(復元にはphpMyAdminを用います)。

つまり、こういうこと。まとめると…

.htaccessには公開制限やリダイレクトの設定(http(SSLなし)にアクセスした場合、https(SSLあり)にリダイレクトするなどの設定も含む)などの情報および、WordPressのパーマリンク設定に関する情報が記録されていて、wp-config.phpにはデータベース(MySQL)への接続先情報などが記録されています。そして、wp-contentディレクトリ以下に、メディアやプラグイン・テーマ・言語に関する情報などが記録されています。

データベース(MySQL)には、投稿記事やWordPressのカスタマイザーや設定画面等で設定した情報が記録されています。

その他はWordPress本体関連のファイルです。

意外とシンプルですね!これで分解できました。これだけのことですが、だいぶ理解が深まっていったかと思います。

WordPressの手動バックアップ・復元の基礎

基本的には、WordPressのすべてのファイル・ディレクトリおよび、データベース(MySQL)をバックアップして、一部のデータ(データベース接続先情報や、データベースに含まれるURLなど)を書き換えて、それぞれアップロード・インポートすることで復元可能です。

さらに、WordPressのバージョンが同じもの同士での移行であれば、wp-config.php.htaccessおよびwp-contentディレクトリ以下のファイルと、データベース(MySQL)のバックアップくらいがあればOKです。

これだけ。意外と簡単っぽいでしょう?さて、手動でのバックアップと復元をやっていきましょう。

復元にはwp-config.phpファイルは使用しませんが、バックアップ元のWordPressが不具合出てしまった場合などに備えてバックアップしておきます。

基本的には、以下の手順(手動バックアップ・復元)

おおまかに手動バックアップ・復元は、以下の手順です。

  1. 最低限、バックアップするWordPressと復元するWordPressのバージョンを揃えておく。プラグインの不具合などをなくすため、PHPバージョンも揃えておくと良いでしょう(ほとんどの場合、無視しても問題はないですが)。また、データベースの種類(MySQL, MariaDB)が異なる場合でも、概ね問題なく移行できるようです。
  2. wp-config.php.htaccessおよびwp-contentディレクトリ以下のファイルと、データベース(.sqlファイル)をバックアップしておきましょう。
  3. サイトURLが変更される場合のみ、データベース(.sqlファイル)内のファイルパス(URL)を修正しておきましょう。
  4. 復元先のWordPressをインストールし、wp-contentディレクトリ以下のファイルをアップロードし、必要に応じて.htaccessのファイルも書き換えましょう。phpMyAdminよりデータベース(.sqlファイル)をインポートしましょう。
  5. 以上で完了です。

ざっくりとした書き方ですみません。本当にこれくらいなのですが、後日ちゃんと書き直します。

プラグインを使用したバックアップ・復元方法

バックアップ系プラグインにおいて、有名なものは3種類あります。

  • All-in-One WP Migrationプラグイン
  • BackWPupプラグイン
  • UpdraftPlus WordPress Backup Plugin

All-in-One WP Migrationプラグインの基礎

All-in-One WP Migrationは、もっともポピュラーかつカジュアルなバックアップ・復元プラグインです。

主な特色としては、wp-contentディレクトリ以下と、データベース(MySQL)のデータを1つのファイルにまとめてバックアップしてくれて、かつファイルパス(URL)を自動的に修正してくれるプラグインです。あまりに簡単に利用できるので、ユーザー数が膨大です。復元自体も簡単で、ひとまとめになったファイルを管理画面上でアップロード(インポート)するだけで読み込んでくれます。注意点としては、.htaccessなどの設定情報は引き継いでくれません。

また、サーバー環境によってはアップロード(復元)可能な容量が制限されたりします。定期的なバックアップや外部ストレージ(Dropbox, Googleドライブなど)にバックアップを行う、アップロード(復元)可能な容量制限を解除するプラグインなどは別途有償になっています。

ただし、有償エクステンション(有償プラグイン)を使用しなくても容量制限が回避できる場合があります。そういった部分も含めた本プラグインについての解説は、このブログのこちらの記事で紹介していますので、併せてお読みください。

ただし、有償エクステンション(有償プラグイン)を使用せずに容量制限を回避した場合、サーバーによっては上手くアップロード(復元)ができない場合があります。

BackWPupプラグインの基礎

BackWPupもまた、ポピュラーなバックアッププラグインです。こちらは無料で定期的にバックアップが取れることで有名ですが、多くの方が復元なんて、恐らくやったことがないのではないでしょうか。

しらこ

いいですか?バックアップとって満足していませんか?実際に復旧できてからが遠足の終了ですよ!(昔こういうの、よく言われてましたよね…)

見た目上はファイル1つになっているので簡単そうに見えますが、その中身は「WordPressのファイル・データベース構造について知る」で解説したのと同じ、WordPress本体ファイル+データベース(MySQL)のバックアップ一式が、ただ単にzipファイルに圧縮されているだけです。もしもサイトURLが変わる場合には、データベース(MySQL)からファイルパス(URL)を書き換えないといけません。結局、手動での復元が必要になり、こちらで紹介した手動での復元方法で行っていただく必要が出てしまいます。

UpdraftPlus WordPress Backup Pluginについて

本プラグインについては知見が少ないので、後日更新いたします。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

WordPress・EC周りをいじるフリーランス。ずっと自作PCを作り続け、外ではSurface使いです。30代・埼玉県民。WordPressテーマ「SWELL」ユーザー。このブログでは、サイト・ブログのカスタマイズ方法などを発信します。

目次