はじめに
WordPressを利用する際には、必ずセキュリティに気をつけなければいけません。
セキュリティ対策においては、攻撃者の侵入を防ぐことも重要ですが、それと同じくらい重要なのが攻撃を受けたサイトをいち早く元の状態に復旧させるためのバックアップ体制が整っているかということです。
データベースのバックアップを定期的に取っておけば、悪意ある第三者にWebサイトを改ざんしたとしても、改ざん前の内容をすぐに復元することができます。
今回は共用レンタルサーバー『ACE01』の「スクリプト定期実行ツール」機能を使って、WordPressで利用しているデータベースをバックアップする方法をご紹介します。
目次
1. データベースのバックアップ
データベースのバックアップを作成するためのスクリプトを準備します。
共用レンタルサーバー『ACE01』ではMySQLとPostgreSQLが標準でインストールされていますが、今回はWordPress推奨のMySQLデータベースを利用している場合の手順になります。
1.1 データベース名・ログイン情報の取得
まずWordPressで利用しているデータベースの名前と、データベースにログインするユーザー名・パスワードを事前に調べておきます。
分からない場合は、WordPressインストールディレクトリ直下のwp-config.phpをテキストエディタで開いて、以下の場所を確認してください。
wp-config.php
/** WordPress のためのデータベース名 */
define('DB_NAME', 'ai●●●●kw9c_wordpress');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'ai●●●●kw9c');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', '●●●●●●●●●');
それぞれ、「DB_NAME」がデータベースの名前、「DB_USER」がユーザー名、「DB_PASSWORD」がユーザーのパスワードにあたります。
1.2 スクリプトの作成
まず、ホームディレクトリにバックアップファイルを格納するためのディレクトリ(db_backup)をあらかじめ作成します。
mkdir ~/db_backup
上記コマンドの「~/」はホームディレクトリを意味するため、コマンドの実行はどこで行っても構いません。上記コマンドを実行後にホームディレクトリに「db_backup」が作成されているか確認してください。
次にWordPressインストールディレクトリ直下に定期バックアップを行うためのPHPスクリプトを新規作成します。
wp-teiki-backup.php(新規作成)
<?php
//バックアップファイル名
$file_name = 'teiki-backup_' . date('YmdHis') .'.sql';
exec('/usr/local/bin/mysqldump -h 127.0.0.1 –u [ユーザー名] –p[パスワード] [データベース名] > /usr/home/<サーバーID>/db_backup/' . $file_name );
バックアップが成功するかどうか、スクリプトを実行して確認してみましょう。
cd ~/html/<WordPressのインストールディレクトリ>
php-7.1 wp-teiki-backup.php
バックアップに成功すると、先ほど作成した格納用ディレクトリにバックアップファイルが追加されます。
cd ~/db_backup
ls -l
~~出力結果~~
-rw-r--r-- 1 ai●●●●kw9c cst 185855 Oct 3 14:50 teiki-backup_20191003054951.sql
2. 「スクリプト定期実行ツール」の設定
1.で作成したスクリプトを、共用レンタルサーバー『ACE01』の「スクリプト定期実行ツール」機能を使って定期実行するよう設定します。
ウェブコントロールパネルにログインして、「公開サイト用設定」→「スクリプト定期実行ツール」を選択します。
写真を参考にして、次のように設定してください
・「新規登録」は先ほど作成したファイル(wp-teiki-backup.php)を選択。
・「PHPのバージョン」は7.1~を選択。
・「実行スケジュール」はバックアップを行う日時を選択。
(例:毎週日曜午前3時50分)
すべて設定が終わったら、「追加する」ボタンをクリックしてください。
3. データベースを復元する
ここまでバックアップファイルを作成する方法をご紹介しましたが、今度はバックアップしたファイルを利用して、データベースを復元する方法をご紹介します。
以下のコマンドを実行してください。
cd ~/db_backup
mysql -h 127.0.0.1 --user=[ユーザー名] --password=[パスワード] [データベース名] < teiki-backup_2019●●●●●●●●●●.sql
ユーザー名、パスワード、データベース名は1.1で取得したものと同じです。
コマンドの最後にバックアップファイル名を指定してください。
復元を行いますと、現在のWordPressの内容がバックアップを取得した時点の内容に戻ります。
一度復元を行いますと、復元前(現在)のWordPressの内容は完全に失われますので、コマンドは慎重に実行してください。
4. 最後に
今回はデータベースのバックアップを取得する方法と、スクリプトを作成して定期実行する方法についてご紹介いたしました。
定期実行の設定次第で毎日・毎時間バックアップを取得することも可能ですが、こまめにバックアップファイルを作成すればするほどサーバーのストレージ(ディスク)使用量が増えて空き容量が減っていきますので、週1~2回程度をおすすめします。
このように手動で行うのが面倒なバックアップの作業も、定期実行スクリプトを使えば簡単に自動実行の設定ができます。ぜひ一度試してみてはいかがでしょうか?