WordPressの引っ越しの練習
つい先日、WordPressを使ったサーバがクラックされて、大きな被害を受けていましたね。原因は、サーバ運営側の設定ミスだとか…。
私は、ブログ(WordPress)のデータが無くなってしまうのは怖いので、バックアップと引っ越しの際の練習も兼ねて、実際に試してみました。実際にこのサイトを他の所へ引っ越す訳ではないです。
引っ越し元(サーバ博士)から、自宅内サーバへの引っ越しをやってみました。
およそ、次の手順となります。引っ越し元と、引っ越し先のURLが違う物とします。また、マルチサイト運営をしている物とします。
引っ越し元: example.com
引っ越し先: example.org
- 引っ越し元での作業
- phpMyAdminでデータベースバックアップ(A)
- tar+gzでwp-contentsバックアップ
- .htacccessとwp-config.phpバックアップ
- 引っ越し準備作業
- (A)のデータ中、URLを書き換える(B)
- (B)のデータ中、マルチサイトに関するURLを書き換える(C)
- wp-config.phpのユーザ名とデーベース名を書き換える
- 引っ越し先での作業
- phpMyAdminで、インポート用のユーザとデータベース作成
- phpMyAdminで、(C)のデータをインポート
- wp-contents, .htaccess, wp-config.phpをリストア
1. 引っ越し元での作業
引っ越し元は、「サーバ博士」です。
- ホスティングサービス「サーバー博士」利用中: プラスα空間 (2013年2月26日)
1.1 phpMyAdminでデータベースバックアップ(A)
まず、WordPressのデータベースをバックアップします。基本的なバックアップの仕方は、WordPressの公式ページをご覧下さい。
phpMyAdminのバージョンによって、若干違いますが、手順としては同じです。
サーバー博士の場合、PLESK管理画面から、phpMyAdmin (Version 3.4.10.2)を起動してからバックアップします。
→ で管理画面を開いた後で、データベースを選択します。
その次に、Webadminを開きます。
そうすると、後は、普通のphpMyAdminの画面が現れますので、エキスポートでデータベースを保存します。
最後に実行ボタンを押します。
1.2 tar+gzでwp-contentsバックアップ
これは、サーバー博士に、SSHでログインして作業します。
$ cd /httpdocs $ tar cvzf wp-contents.tar.gz wp-contents
tarファイルは、scpでコピーして下さい。
WordPressのデータ(テーマ、プラグイン、画像)は、wp-contentsの中に入っています。面倒だったら、/httpdocsのデータを丸ごと持ってきても構わないと思います。そうすれば、次の1.3の作業も同時にできます。]
1.3 .htacccessとwp-config.phpバックアップ
これらのファイルを、scpでコピーします。
2. 引っ越し準備作業
MySQLのデータをコピーして来ただけではダメで、SQL文内のURLの書き換え等が必要になります。
2.1 (A)のデータ中、URLを書き換える(B)
% gzip -dc wpdb.sql.gz | sed 's/http:\/\/example.com/http:\/\/example.org/g' > wpdb-rewrite.sql
2.2 (B)のデータ中、マルチサイトに関するURLを書き換える(C)
マルチサイトで運用している時、次の作業が必要となります。この作業をしないと、ログインID等の設定があっていても「データベース接続確立エラー」が出ます。
かなりハマりました。
上記の、wpdb-rewrite.sqlをエディタで開いて、"_blogs"を探します。この部分に、マルチサイトで使っているドメイン名が、直に書かれています。
-- -- テーブルのデータをダンプしています `wp_top_blogs` -- INSERT INTO `wp_top_blogs` (`blog_id`, `site_id`, `domain`, `path`, `registered`, `last_updated`, `public`, `archived`, `mature`, `spam`, `deleted`, `lang_id`) VALUES (1, 1, 'example.com', '/', '2012-04-10 07:01:56', '2013-07-13 16:29:31', 1, '0', 0, 0, 0, 0), (2, 1, 'example.com', '/plus/', '2012-04-10 07:09:58', '2013-09-02 13:55:52', 1, '0', 0, 0, 0, 0), (3, 1, 'example.com', '/life/', '2012-04-10 07:10:10', '2013-07-09 14:16:19', 1, '0', 0, 0, 0, 0), (4, 1, 'example.com', '/tech/', '2012-04-10 07:10:27', '2013-08-17 21:51:06', 1, '0', 0, 0, 0, 0), (5, 1, 'example.com', '/sadamasashi/', '2012-04-10 07:10:38', '2013-02-12 14:03:41', 1, '0', 0, 0, 0, 0), (6, 1, 'example.com', '/manakana/', '2012-04-10 07:10:50', '2013-03-24 11:23:34', 1, '0', 0, 0, 0, 0), (7, 1, 'example.com', '/nendol/', '2013-02-11 12:49:25', '2013-07-06 15:04:54', 1, '0', 0, 0, 0, 0);
この部分の、"example.com"を"example.org"に書き換えます。書き換えたデータを、gzipで圧縮し、この"wpdb-rewrite.sql.gz"を(C)と呼ぶ事にします。
% vi wpdb-rewrite.sql % gzip wpdb-rewrite.sql
次のウェブページで、解決策がわかりました。ありがとうございます。
2.3 wp-config.phpのユーザ名とデーベース名を書き換える
WordPressを設定した事がある人ならわかりますよね? wp-config.php内の、DB_NAME, DB_USER, DB_PASSWORDを書き換えます。
3. 引っ越し先での作業
いよいよ仕上げです。
3.1 phpMyAdminで、インポート用のユーザとデータベース作成
例えば、次の記事を参考にして下さい。
- OS X LionにWordPressをインストール(4/5): プラスα空間 (2012年3月14日)
まるで囲った所に、記入やチェックをします。特権の付け方が、セキュリティ的に正しいかどうかわかりません。個人で使う分には、大丈夫だと思いますが…。
最後に実行ボタンを押します。
データベースは、次の様にして作ります。
照合順序は「utf8_general_ci」を選びます。
最後に作成ボタンを押します。
3.2 phpMyAdminで、(C)のデータをインポート
3.1で作ったデータベースに、(C)のデータをインポートします。
Browse…ボタンを押してファイルを選びます。最後に実行ボタンを押します。
アップロードするファイルの、圧縮した状態でのサイズが、制限を超えていると失敗します。
読み込みに成功すると、「インポートは正常に終了しました。」と出ます。
3.3 wp-contents, .htaccess, wp-config.phpをリストア
1.2, 1.3, 2.3で準備したデータを、引っ越し先の該当箇所に展開します。展開前に、元のデータは名前を変えて、保存しておいた方が良いでしょう。
また、pluginも、最初は全部は動かないかもしれません。制限しながら追加して行った方が良いかもしれません。
この手順により、引っ越し前のウェブサイトと全く同じウェブサイトが再現されて、感動しました。
ディスカッション
コメント一覧
まだ、コメントがありません