このブログはロリポップで運用しているのですが、いままでバックアップを意識したことがありませんでした。
そこで、VagrantにWordPress入れて、本番と同じブログをローカルに構築してみようと思い立ったので、やってみたという話です。 特にバックアップがどうのこうのという話ではありません。
やったこと
ローカルにVagrant建てて、WordPressをインストール。 ロリポップで運用しているブログの画像、ブログ記事を落としてきて、Vagrantへアップ。 ローカル環境のVagrantに本番同様のブログを構築。
でてこない話
前提として、Vagrant上にWordPressが動作していることとします。
流れ
- 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で-(ハイフン)付きのデータベース名を使うとめんどい