ServersMan@VPSを64bitに変更 その2: バックアップ

Use the 8% OFF coupon "GBvalentine", Grab the Best Valentine’s Day Gifts Best Deals from Just $25 @GearBest! Ends: 1/23/2017.
バックアップ

前回はServersMan@VPSのOSを32bitから64bitに変更する前に、32bitでのCPUやOS等の状況を確認しました。

今回はOSを変更する間のバックアップを行います。重要なのはWordPressのデータです。今回のケースはドメイン名やIPアドレスは変更になりませんが、再インストールになるのでサイト移転と同様の手順が必要です。

前準備

バックアップを行う前にいくつか前準備をしておきます。

メンテナンスモード

バックアップしてから再インストールが完了するまでWebサイトにアクセスできなくなります。この間にアクセスしてきた方はサイトに接続できないということになります。また、検索エンジンのロボットも接続できないため、最悪の場合サイトが消滅したと判定されて検索データベースから除外されてしまいます。

このような場合にはWebサーバが503エラーを返すようにしておきます。503エラーは「Service Unavailable」を意味して、一時的にサイトが利用できないことをお知らせするエラーです。503エラーが買えるようにしておけば検索データベースから除外されることはないといわれています。

503エラー用のHTMLファイル

まず、503エラーのときに表示するHTMLファイルをerror503.htmlという名前で作成します。内容は次のようにします。

<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>Error 503 Service Unavailable</title>
</head>
<body>
<h1>503 Service Unavailable</h1>
<p>Our apologies for the temporary inconvenience. The requested URL generated 503 "Service Unavailable" error due to maintenance of this server.</p>
<p>The progress of the mentenance will be informed by <a href="https://twitter.com/scratchpadjp">Twitter</a></p>
<h1>メンテナンス中</h1>
<p>ただいまメンテナンス中です。お手数ですが、時間をおいて再度アクセスをお願いいたします。</p>
<p>メンテナンス状況は <a href="https://twitter.com/scratchpadjp">Twitter</a>でお知らせします。</p>
</body>
</html>

英語は適当ですが、何も書かないよりましと思い記載しておきました。Twitterへのリンクを付けておき、サイトメンテナンス状況はTwitterでお知らせすることにしました。

このファイルをWebサーバが公開しているディレクトリに配置しておきます。手っ取り早いのは、WordPressのアップロードデータが格納されるディレクトリです。標準では/var/lib/wordpress/wp-content/uploadsになると思います。今回はここにerror503.htmlを置いたとして説明を続けます。

nginxの設定

次に、WordPressのサイトにアクセスが来たら先ほど用意したerror503.htmlをエラーコード503とともに返信するようにnginxを設定します。

これには次の内容を/etc/sites-availableにあるWordPress用の設定ファイルに挿入します。挿入場所はログファイルの設定の後あたりでよいでしょう。

    # メンテナンスモード
    set $maintenance_mode "no";
    if (-f /var/lib/wordpress/wp-contents/uploads/error503.html ) {
        set $maintenance_mode "yes";
    }
    if ($remote_addr ~ ^AAA\.BBB\.CCC\.DDD$ ) {
        set $maintenance_mode "no";
    }
    if ($maintenance_mode = "yes" ) {
        return 503;
    }
    error_page 503 @maintenance;
    location @maintenance {
        rewrite ^(.*)$ /wp-content/uploads/error503.html;
    }

6行目の「AAA.BBB.CCC.DDD」はご自分のIPアドレスに変更しておきます。サーバのIPアドレスではなく、メンテナンス作業のために使用しているPCのIPアドレスです。ADSLや光などでルータを介してインターネットに接続している方は、ルータの管理ページから割り当てられているIPアドレスを知ることができます。

この設定では、/var/lib/wordpress/wp-content/uploads/error503.htmlというファイルがあり、接続元がAAA.BBB.CCC.DDD以外の場合はすべて503エラーとなります。自分(IPアドレス AAA.BBB.CCC.DDD)は引き続きメンテナンス作業等のためWordPressに接続することができます。

なお、メンテナンスが完了したらerror503.htmlというファイルの名前を変更すれば、503エラーではなく通常に動作するようになります。

最後にnginxに変更した設定を読み込ませます。

service nginx reload

不要なファイルの削除

WordPressで一時的なファイルがある場合はバックアップの前に削除しておいたほうがよいと思います。

私は次の作業を行いました。

  • スパムコメントをすべて削除
  • WP Super Cacheプラグインのキャッシュ停止とキャッシュデータの削除
  • WP Optimizeプラグインでデータベースの最適化

WP Super Cacheプラグインを一時的にキャッシュ停止したのは、メンテナンスモードにしておいてもバックグラウンドでどんどんキャッシュを生成してしまうからです。

バックアップ

いよいよバックアップを行います。基本的にバックアップファイルはVPS上にできますので、VPSから自分のPCにファイルを転送できるようにしておく必要があります。

WordPressデータベースのバックアップ

一番重要なのがこれです。これをミスると全記事がなくなってしまいます。

まず自分のWordPress用のデータベースの名前を確認しておきます。これはwp-config.phpというファイルか、/etc/wordpress/confg-サイト名.phpというファイルに

define('DB_NAME', 'データベース名');

のように記載されています。 このデータベースをmysqldumpというコマンドを使って丸ごとバックアップします。

mysqldump -u root データベース名 -x --events -p > backup.sql

このコマンドを実行するとパスワードが要求されるので、rootのパスワードを入力します。バックアップが完了するとカレントディレクトリにbackup.sqlというファイルができるので、このファイルを自分のPCにコピーしておきます。

さらに私は念のためにデータベースのファイルも丸ごとコピーしておきました。かなり乱暴な手ですが万が一の時に助かります。データベース(MySQL)が動作中だといろいろやばいので、MySQLを停止してから行います。

service mysql stop
cd /var/lib/mysql
tar cfvz /mysql_backup.tgz .

この例では/直下にmysql_backup.tgzというファイルができますので、このファイルを自分のPCにコピーしておきます。

wp-contents(テーマ・プラグイン)のバックアップ

WordPressのテーマやプラグインファイルはwp-contentsというディレクトリに保存されています。これを丸ごとバックアップしておきます。

cd /var/lib/wordpress/wp-content
tar cfvz /wp-contents.tgz .

この例では/直下にwp-contents.tgzというファイルができますので、このファイルを自分のPCにコピーしておきます。

アップロードしたファイルのバックアップ

WordPressのアップロード用ディレクトリが上記のwp-contentsディレクトリ以下の場合は、すでにバックアップ済みなのでこれは不要です。マルチサイト設定などで別ディレクトリがアップロード用ディレクトリになっている場合は忘れずにバックアップしておきます。

cd アップロード用ディレクトリ
tar cfvz /uploads.tgz .

この例では/直下にuploads.tgzというファイルができますので、このファイルを自分のPCにコピーしておきます。

その他のファイルのバックアップ

その他にバックアップしておいたほうがよいディレクトリは下記の通りです。

  • /etc: 各種設定ファイルが保存されている
  • /usr/local: 独自に導入したファイル(Debianパッケージ以外のファイル)が保存されている
  • /home: 各ユーザが作成したファイルが保存されている

いずれもtarコマンドでまとめて、自分のPCにコピーしておきます。

Debianのパッケージリストのバックアップ

下記のコマンドでDebianで導入していたパッケージの一覧を取得しておきます。

dpkg --get-selections > /dpkg-list.txt

この例では/直下にdpkg-list.txtというファイルができますので、このファイルを自分のPCにコピーしておきます。

その他の作業

その他、お勧めとしては/etc/passwordと/etc/groupをローカルにコピーしておくことです。このファイルは再インストール直後に参照するので、すぐに見れる状態としておいたほうが何かと便利です。

特に、作業用に作成したユーザID・グループID、WordPress用のユーザID・グループIDはメモをしておきましょう。

まとめ

今回はServersMan@VPSのOSを32bitから64bitに変更するにあたり、バックアップしたデータとその方法を紹介しました。各種プログラムはパッケージとして簡単に再インストールできますが、自分で作成したデータはちゃんとバックアップしておかないと永遠に失われてしまいます。バックアップは慎重に行いましょう。

次回はいよいよOSを入れ替えます。