Vagrantにロリポップで運用しているWordpressを構築した話

<img src="http://nikuniku.me/wp-content/uploads/Vagrant.png" alt="Vagrant" title="Vagrant.png" border="0" width="300" height="300" />
僕が運営しているブログはロリポップを使っているのですが、いままでバックアップを意識したことがありませんでした。

そこで、VagrantにWordPress入れて、本番と同じブログをローカルに構築してみようと思い立ったので、やってみたという話です。
特にバックアップがどうのこうのという話ではありません。

<h2>やったこと</h2>
ローカルにVagrant建てて、WordPressをインストール。
ロリポップで運用しているブログの画像、ブログ記事を落としてきて、Vagrantへアップ。
ローカル環境のVagrantに本番同様のブログを構築。

<h2>でてこない話</h2>
<ol>
	<li>Vagrantのインストール</li>
	<li>WordPressのインストール</li>
</ol>


前提として、Vagrant上にWordPressが動作していることとします。<!--more--><h2>流れ</h2>
<ol>
	<li>phpMyAdminからdumpファイルをダウンロード</li>
	<li>ロリポップにアップした画像をダウンロード</li>
	<li>Vagrant上のMySQLにdumpファイルをインポート</li>
	<li>Vagrantに画像をアップロード（アップロードというか設置）</li>
	<li>本番で使っているテーマをVagrant上のWordpressにインストール</li>
</ol>

ざっくりとこんな感じ。

では1から進めていきます。
<h3>phpMyAdminからdumpファイルをダウンロード</h3>
ロリポップのphpMyAdminへログイン。
エクスポート->データベースの項目でinformation_schemaを外す->エクスポート方法　詳細を選択し実行。
これでMySQLdumpが取れます。

<h3>ロリポップにアップした画像をダウンロード</h3>
FTPツールなどを使って、画像をダウンロードします。
自分はツールにCyberduckを使いました。
画像はwp-content/uploadsに入っていますので、ゴソっと落としましょう。

ここまでで、本番からダウンロードしてくるものはありません。
Vagrant側の作業にいきます。

<h3>Vagrant上のMySQLにdumpファイルをインポート</h3>
ローカルのVagrantのディレクトリに先ほど落としたdumpファイルを置きましょう。
ここに置くとVagrant上の/vagrant/以下に設置されることとなります。

<code>
vagrant up
vagrant ssh
</code>
vagrantへ入ります。ちなみに自分はCentOSを使っています。

<strong><font color="red">追記 10/22</font></strong>
dumpしたsqlを書き換えることをすっかり忘れてました！
sqlを開いて、自分のドメインをVagrantで使っているIPに書き換えましょう。
でないと画像とかのURLが本番のURLになっているので、本番を見に行ってしまいます。

<code>
service mysqld status
mysql -u root < /vagrant/lolipop.sql
</code>
特に問題なければDBが作成されるはずです。
自分はdumpファイルにinformation_schemaの作成も入ってしまっていて、インポートに失敗しました。

確認
<code>

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)

</code>
おそらく自分が入れているWordpressのプラグインによって作られたテーブルもありそう。
ちゃんとテーブルが表示されているのでインポート完了。

<h3>Vagrantに画像をアップロード（アップロードというか設置）</h3>
FTPツールでダウンロードしたuploadsの画像を先ほどのMySQLdumpと同様にvagrantディレクトリに設置します。
Vagrant上のWordpressからこちらを参照して欲しいので、シンボリックリンクを張ります。
<code>
cd wp-content
rm -rf uploads
ln -s /vagrant/uploads/ uploads
</code>

ここまででダウンロードしたファイルたちの設置・インポートは完了です。

次にテーマのインストールと行きたいのですが、ちょっとWordpressのファイルをいじります。

<code>
vim wp-config.php

/** WordPress のためのデータベース名 */
define('DB_NAME', '[データベース名]');
データベースの名前をインポートしたデータベース名へ変更。

/**
 * WordPress データベーステーブルの接頭辞
 *
 * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 * インストールすることができます。半角英数字と下線のみを使用してください。
 */
//$table_prefix  = 'wp_';
$table_prefix  = 'wp1_';
ロリポップのテーブルはwp1_となっているので、そちらに合わせます。


define('FS_METHOD', 'direct');
↑追記
これはWordpressのテーマのインストール時にftpの設定画面が表示されるのを防ぐ為に追記します。
</code>

これでVagrantのWordpressにロリポップと同じブログが構築されたと思います。
もし本番側のfunction.phpなどいじっている場合は、その辺りもダウンロードしておく必要があります。

では次にテーマのインストールします。
<h3>本番で使っているテーマをVagrant上のWordpressにインストール</h3>
Wordpressの外観->テーマ->新規追加->テーマのアップロード
自分は最近STINGER5というとても便利なテーマに変えたので、それをアップロードしました。
で、アップロードするときにftpの設定画面になってしまったので、先ほどのdefine('FS_METHOD', 'direct');を追加した次第です。
これに関してはこちらが参考になりました！
<a href="http://rubellum.hatenablog.com/entry/20110124/1295884096" target="_blank">WordpressでFTP接続情報を求められたときのメモ</a>

アップロード完了して、テーマを有効化すればすべての作業が完了です！

ちなみにロリポップで生成されたDB名には-(ハイフン)が付いているので、ちょっとだけめんどうです。
自分が書いた記事を張っておきます。
<a href="http://nikuniku.me/?p=578" target="_blank">MySQLで-(ハイフン)付きのデータベース名を使うとめんどい</a>

ローカルで手軽に構築ができるので、Vagrantはとても便利だと思います。
これでテーマとかプラグインの検証が捗るぞ！