akiyoko blog

akiyoko の IT技術系ブログです

CORESERVER の WordPressサイトのバックアップ設定

前回・前々回のエントリで、CORESERVERWordPressを構築し、独自ドメインを割り当てました。

(前々回) CORESERVER CORE-AプランでWordPressを構築
(前回) CORESERVER に VALUE DOMAIN のドメインを付与


今回は、バックアップ用プラグイン「BackWPup」を使って、いざというときのバックアップを取る方法を書き残しておきたいと思います。
CORESERVERならではの問題(PHPのバージョンが古い・PHPのセーフモード)が絡んでいるので、今回の手順も多少トリッキーです。


【今回の目的】

  • CORESERVERで構築したWordPressサイトを「BackWPup」で定時バックアップする

以上の手順をまとめたいと思います。

1. BackWPupをインストール

WordPressのバックアップは、プラグイン「BackWPup」を使うと非常に楽に設定することができます。


1) 最新版をインストールしてみる

BackWPupの現時点での最新版(3.0.13)をインストールして有効化してみると、「BackWPup requires PHP version 5.2.6 or greater and WordPress 3.2 or greater.」というエラーが出て、インストールに失敗してしまいます。

f:id:akiyoko:20130822225923p:plain

最新版のBackWPup 3.x系にしたいところだったけれども、CORESERVERPHPが古い(「5.2.5」なのでギリギリアウト)ので断念。仕方なく、2.x系を使うことに。


2) 2.1.17 をインストール

2.x計の最新版「2.1.17」であれば、PHP5.2.5で OKなのは確認済み。

readme.txt

** WP 3.1 and PHP 5.2.5 Required!! **


http://wordpress.org/plugins/backwpup/developers/
のページから、2.1.17 をダウンロードします。

f:id:akiyoko:20130822231022p:plain


3) zipファイルをアップロードしてインストール

[プラグイン] -> [新規追加] -> [アップロード] から、「backwpup.2.1.17.zip」をアップロードします。

f:id:akiyoko:20130822231846p:plain


プラグインを有効化します。

f:id:akiyoko:20130822231914p:plain

2. 試しにバックアップしてみる

1) Jobを登録

「Add New」をクリックします。

f:id:akiyoko:20130822232005p:plain


2) いろいろと入力

ジョブ名 Test Backup
Database Jobs / Database tables to use: 全てのテーブルにチェックを入れる
File Backup / Blog Folders to Backup: 「root」「Content」「Plugins」「Themes」「Blog Uploads」全てにチェックを入れる
Backup to Folder / Full Path to folder for Backup Files: /virtual/akiyoko/backups/akiyoko.info/
Backup to Folder / Max. backup files in folder: 10
Job Type 「Database Backup」「File Backup」「Optimize Database Tables」「Check Database Tables」にチェックを入れる
Job Schedule / Activate scheduling チェックを外す (スケジューリングしない)
Backup File / File Prefix: backwpup_test_
Backup File / File Formart: Tar GZip
Send log / E-Mail-Adress: (自分のメールアドレス)
Send log / Only send an e-mail if there are errors. チェックを入れる

f:id:akiyoko:20130822232035p:plain


3) 実行してみる

「Run Now」をクリック。

f:id:akiyoko:20130822232146p:plain


「Run Now」をクリックすると、BackWPupのコンソールが真っ暗に。ここでもセーフモードの呪いが。。

f:id:akiyoko:20130822232233p:plain


4) .htaccessを修正

セーフモードの弊害を解消するため、一部PHPをCGIモードで動作させます。

# /virtual/akiyoko/public_html/akiyoko.info/wp-content/plugins/backwpup/job/.htaccess を新規作成
$ cd /virtual/akiyoko/public_html/akiyoko.info/wp-content/plugins/backwpup/job/
$ cat > .htaccess <<EOF
<Files job_run.php>
AddHandler application/x-httpd-phpcgi .php
</files>
EOF

# 所有者がakiyoko.hpusers、パーミッションが644になっていることを確認
$ ls -al .htaccess
-rw-r--r--  1 akiyoko hpusers 169 2013-08-10 13:58 .htaccess


これで、バックアップが取れるようになります。

f:id:akiyoko:20130822232315p:plain


参考

すごく助かりました!


5) ダッシュボードに表示されるエラーを解消

一度バックアップを実行すると、一時ファイルとログの出力先の権限エラーが、ダッシュボードに表示されるようになります。このエラーを解消していきます。

f:id:akiyoko:20130822232354p:plain

エラーの内容から、
/virtual/akiyoko/public_html/akiyoko.info/wp-content/plugins/backwpup/tmp ディレクトリのパーミッションが 755 になっているのがダメっぽいので、707 に変更します。

$ cd /virtual/akiyoko/public_html/akiyoko.info/wp-content/plugins/backwpup/
$ ls -al | grep tmp
drwxr-xr-x  2 akiyoko hpusers    48 2013-08-22 02:41 tmp
$ chmod 707 tmp/
$ ls -al | grep tmp
drwx---rwx  2 akiyoko hpusers    48 2013-08-22 02:41 tmp


次に、[BackWPup] -> [Setting] から、「Log file Folder」の値を変更します。
(ぶっちゃけどこでもよいのですが、ログは一箇所にまとめておきたいですよね。)

変更前 /virtual/akiyoko/public_html/akiyoko.info/wp-content/backwpup-8b900-logs/
変更後 /virtual/akiyoko/log/
# /virtual/akiyoko/log/ のパーミッションを705→707に変更
$ ls -al /virtual/akiyoko/ | grep log
drwx---r-x    2 akiyoko hpusers      48 2013-03-02 13:06 log
$ chmod 707 /virtual/akiyoko/log/
$ ls -al /virtual/akiyoko/ | grep log
drwx---rwx    2 akiyoko hpusers      48 2013-03-02 13:06 log

# 不要なディレクトリを削除
$ rm -rf /virtual/akiyoko/public_html/akiyoko.info/wp-content/backwpup-8b900-logs/


f:id:akiyoko:20130822232422p:plain

3. リストアのテストをしてみる

バックアップが正しく取得できたら、そこからリストアをしてみます。

1) ディレクトリ・データベースを削除

ディレクトリを削除します。

$ cd /virtual/akiyoko/public_html/
$ rm -rf akiyoko.info/

データベースは、コントロールパネルのドメインウェブから削除します。

f:id:akiyoko:20130824042026p:plain


2) CORESERVERのドメインウェブで、ディレクトリを作り直す

f:id:akiyoko:20130824030917p:plain


3) バックアップファイルを「/virtual/akiyoko/public_html/akiyoko.info/」直下に置く

$ cd /virtual/akiyoko/public_html/akiyoko.info/
$ cp -a /virtual/akiyoko/backups/akiyoko.info/backwpup_test_2013-08-24_01-27-35.tar.gz .

もしくは、WinSCPを使う。

f:id:akiyoko:20130824030927p:plain


4) 解凍する

pオプションでパーミッション、same-ownerオプションで所有者を再現します。
(same-ownerオプションは省略可。全ファイルの所有者が「akiyoko」でも問題ないはずなので。)

$ tar --same-owner -zxvpf backwpup_test_2013-08-24_01-27-35.tar.gz

# こんな感じで展開されるはず
$ ls -al
total 8683
drwx---r-x  5 akiyoko hpusers     864 2013-08-24 01:37 .
drwx---r-x  4 akiyoko hpusers     136 2013-08-24 01:33 ..
-rw-r--r--  1 akiyoko hpusers  310757 2013-08-24 01:27 akiyoko_wp.sql
-rw-r--r--  1 akiyoko hpusers 8387444 2013-08-24 01:27 backwpup_test_2013-08-24_01-27-35.tar.gz
-rw-rw-rw-  1 akiyoko hpusers     405 2013-08-22 02:39 .htaccess
-rwx---rwx  1 akiyoko hpusers     395 2012-01-09 02:01 index.php
-rwx---rwx  1 akiyoko hpusers   19929 2012-05-06 16:28 license.txt
-rwx---rwx  1 akiyoko hpusers   13270 2013-01-25 12:00 readme.html
-rwx---rwx  1 akiyoko hpusers    3316 2013-01-25 12:00 readme-ja.html
-rwx---rwx  1 akiyoko hpusers    4663 2012-11-18 00:11 wp-activate.php
drwxr-xr-x  9 akiyoko hpusers    2920 2013-08-24 01:37 wp-admin
-rwx---rwx  1 akiyoko hpusers     271 2012-01-09 02:01 wp-blog-header.php
-rwx---rwx  1 akiyoko hpusers    3522 2012-04-11 02:21 wp-comments-post.php
-rwx---rwx  1 akiyoko hpusers    4569 2013-08-22 02:09 wp-config.php
-rwx---rwx  1 akiyoko hpusers    4289 2013-01-25 12:00 wp-config-sample.php
drwxr-xr-x  6 akiyoko hpusers     200 2013-08-24 01:37 wp-content
-rwx---rwx  1 akiyoko hpusers    2718 2012-09-24 01:57 wp-cron.php
drwxr-xr-x  9 akiyoko hpusers    4048 2013-08-24 01:37 wp-includes
-rwx---rwx  1 akiyoko hpusers    1997 2010-10-23 21:17 wp-links-opml.php
-rwx---rwx  1 akiyoko hpusers    2408 2012-10-27 04:40 wp-load.php
-rwx---rwx  1 akiyoko hpusers   29310 2012-11-30 22:40 wp-login.php
-rwx---rwx  1 akiyoko hpusers    7723 2012-09-25 14:26 wp-mail.php
-rwx---rwx  1 akiyoko hpusers    9899 2012-11-22 18:52 wp-settings.php
-rwx---rwx  1 akiyoko hpusers   18219 2012-09-11 21:27 wp-signup.php
-rwx---rwx  1 akiyoko hpusers    3700 2012-01-09 02:01 wp-trackback.php
-rwx---rwx  1 akiyoko hpusers    2719 2012-09-12 05:11 xmlrpc.php


5) データベースのリストア

CORESERVERのデータベースで、データベースを作り直す

f:id:akiyoko:20130824030937p:plain


ここで、データベース名やパスワードを変更した場合は、wp-config.phpを編集しておきます。

  ・
  ・
// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '<新しいデータベース名>');

/** MySQL データベースのユーザー名 */
define('DB_USER', '<新しいユーザー名>');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '<新しいパスワード>');
  ・
  ・


解凍した akiyoko_wp.sql から、データベースをリストアします。

方法その1)
MySQLコマンドから

$ mysql -u akiyoko_wp -pakiyoko_wp < akiyoko_wp.sql

方法その2)
あるいは、phpMyAdminでインポートしてもOKです。

f:id:akiyoko:20130824030947p:plain

f:id:akiyoko:20130824030953p:plain


WordPressサイトまたはダッシュボードにアクセスして、動作確認をします。
(ダッシュボードに例のエラーが表示されている場合がありますが、↑のどこかの手順で修正してください。)

f:id:akiyoko:20130824032054p:plain

4. 本番向けの設定

本番向けの設定をします。
テスト用のジョブをコピーすると、少しだけ捗ります。


1) データベースのバックアップ用(毎日)

ジョブ名 Database Backup
Database Jobs / Database tables to use: 全てのテーブルにチェックを入れる
Backup to Folder / Full Path to folder for Backup Files: /virtual/akiyoko/backups/akiyoko.info/
Backup to Folder / Max. backup files in folder: 10
Job Type 「Database Backup」「File Backup」「Optimize Database Tables」「Check Database Tables」にチェックを入れる
Job Schedule / Activate scheduling チェックを入れる
Job Schedule / Type / Hour / Minute daily 3:00
Backup File / File Prefix: backwpup_db_
Backup File / File Formart: Tar GZip
Send log / E-Mail-Adress: (自分のメールアドレス)
Send log / Only send an e-mail if there are errors. チェックを入れる


f:id:akiyoko:20130824041102p:plain


2) ファイルのバックアップ用(週一)

ジョブ名 File Backup
File Backup / Blog Folders to Backup: 「root」「Content」「Plugins」「Themes」「Blog Uploads」全てにチェックを入れる
Backup to Folder / Full Path to folder for Backup Files: /virtual/akiyoko/backups/akiyoko.info/
Backup to Folder / Max. backup files in folder: 10
Job Type 「File Backup」にチェックを入れる
Job Schedule / Activate scheduling チェックを入れる
Job Schedule / Type / Hour / Minute weekly Sunday 3:00
Backup File / File Prefix: backwpup_file_
Backup File / File Formart: Tar GZip
Send log / E-Mail-Adress: (自分のメールアドレス)
Send log / Only send an e-mail if there are errors. チェックを入れる


f:id:akiyoko:20130824041112p:plain