僕が運営しているブログはロリポップを使っているのですが、いままでバックアップを意識したことがありませんでした。
そこで、VagrantにWordPress入れて、本番と同じブログをローカルに構築してみようと思い立ったので、やってみたという話です。
特にバックアップがどうのこうのという話ではありません。
やったこと
ローカルにVagrant建てて、WordPressをインストール。
ロリポップで運用しているブログの画像、ブログ記事を落としてきて、Vagrantへアップ。
ローカル環境のVagrantに本番同様のブログを構築。
でてこない話
- Vagrantのインストール
- WordPressのインストール
前提として、Vagrant上にWordPressが動作していることとします。<!--more-->
流れ
- phpMyAdminからdumpファイルをダウンロード
- ロリポップにアップした画像をダウンロード
- Vagrant上のMySQLにdumpファイルをインポート
- Vagrantに画像をアップロード(アップロードというか設置)
- 本番で使っているテーマをVagrant上のWordpressにインストール
ざっくりとこんな感じ。
では1から進めていきます。
phpMyAdminからdumpファイルをダウンロード
ロリポップのphpMyAdminへログイン。
エクスポート->データベースの項目でinformation_schemaを外す->エクスポート方法 詳細を選択し実行。
これでMySQLdumpが取れます。
ロリポップにアップした画像をダウンロード
FTPツールなどを使って、画像をダウンロードします。
自分はツールにCyberduckを使いました。
画像はwp-content/uploadsに入っていますので、ゴソっと落としましょう。
ここまでで、本番からダウンロードしてくるものはありません。
Vagrant側の作業にいきます。
Vagrant上のMySQLにdumpファイルをインポート
ローカルのVagrantのディレクトリに先ほど落としたdumpファイルを置きましょう。
ここに置くとVagrant上の/vagrant/以下に設置されることとなります。
vagrant up
vagrant ssh
vagrantへ入ります。ちなみに自分はCentOSを使っています。
追記 10/22
dumpしたsqlを書き換えることをすっかり忘れてました!
sqlを開いて、自分のドメインをVagrantで使っているIPに書き換えましょう。
でないと画像とかのURLが本番のURLになっているので、本番を見に行ってしまいます。
service mysqld status
mysql -u root < /vagrant/lolipop.sql
特に問題なければDBが作成されるはずです。
自分はdumpファイルにinformation_schemaの作成も入ってしまっていて、インポートに失敗しました。
確認
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| [データベース名] |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
mysql> use [データベース名];
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+--------------------------------+
| Tables_in_[データベース名] |
+--------------------------------+
| wp1_commentmeta |
| wp1_comments |
| wp1_links |
| wp1_nxs_log |
| wp1_options |
| wp1_postmeta |
| wp1_posts |
| wp1_statpress |
| wp1_term_relationships |
| wp1_term_taxonomy |
| wp1_terms |
| wp1_usermeta |
| wp1_users |
| wp1_wordbooker_errorlogs |
| wp1_wordbooker_fb_friend_lists |
| wp1_wordbooker_fb_friends |
| wp1_wordbooker_postcomments |
| wp1_wordbooker_postlogs |
| wp1_wordbooker_process_queue |
| wp1_wordbooker_userdata |
| wp1_wordbooker_userstatus |
+--------------------------------+
21 rows in set (0.00 sec)
おそらく自分が入れているWordpressのプラグインによって作られたテーブルもありそう。
ちゃんとテーブルが表示されているのでインポート完了。
Vagrantに画像をアップロード(アップロードというか設置)
FTPツールでダウンロードしたuploadsの画像を先ほどのMySQLdumpと同様にvagrantディレクトリに設置します。
Vagrant上のWordpressからこちらを参照して欲しいので、シンボリックリンクを張ります。
cd wp-content
rm -rf uploads
ln -s /vagrant/uploads/ uploads
ここまででダウンロードしたファイルたちの設置・インポートは完了です。
次にテーマのインストールと行きたいのですが、ちょっとWordpressのファイルをいじります。
vim wp-config.php
/** WordPress のためのデータベース名 */
define('DB_NAME', '[データベース名]');
データベースの名前をインポートしたデータベース名へ変更。
/**
* WordPress データベーステーブルの接頭辞
*
* それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
* インストールすることができます。半角英数字と下線のみを使用してください。
*/
//$table_prefix = 'wp_';
$table_prefix = 'wp1_';
ロリポップのテーブルはwp1_となっているので、そちらに合わせます。
define('FS_METHOD', 'direct');
↑追記
これはWordpressのテーマのインストール時にftpの設定画面が表示されるのを防ぐ為に追記します。
これでVagrantのWordpressにロリポップと同じブログが構築されたと思います。
もし本番側のfunction.phpなどいじっている場合は、その辺りもダウンロードしておく必要があります。
では次にテーマのインストールします。
本番で使っているテーマをVagrant上のWordpressにインストール
Wordpressの外観->テーマ->新規追加->テーマのアップロード
自分は最近STINGER5というとても便利なテーマに変えたので、それをアップロードしました。
で、アップロードするときにftpの設定画面になってしまったので、先ほどのdefine('FS_METHOD', 'direct');を追加した次第です。
これに関してはこちらが参考になりました!
WordpressでFTP接続情報を求められたときのメモ
アップロード完了して、テーマを有効化すればすべての作業が完了です!
ちなみにロリポップで生成されたDB名には-(ハイフン)が付いているので、ちょっとだけめんどうです。
自分が書いた記事を張っておきます。
MySQLで-(ハイフン)付きのデータベース名を使うとめんどい
ローカルで手軽に構築ができるので、Vagrantはとても便利だと思います。
これでテーマとかプラグインの検証が捗るぞ!