前回はConoHaで構築したKUSNAGIのセットアップまでしました。 この記事ではKUSANAGIに移設する際の5つの手順をまとめてみました。
1.wp-content以下をバックアップして持ってくる
wp-content以下をバックアップするにはだいたい以下のコマンドです。
# cd /var/www/html
# tar cvzf wp-content.tar.gz wp-content/
移設元のサイトがシェル使えないとか、 WordPressがインストールされている場所とかそれぞれ違うとか、適当にやってください。 要はwp-content以下のファイルがあれば代替大丈夫です。
tarで固めたら移行先のサーバにコピーしちゃいます。 移行先とはプライベートネットワークと接続しているのでローカル間で直接scpします。
// 移行先のサーバIPは192.168.1.2とします。
# scp -i rsa.pem wp-content.tar.gz 192.168.1.2:/home/kusanagi/
コピーできたら展開します。
# tar zxvf wp-content.tar.gz
この時wp-content内のユーザ権限を変更しておきましょう。 管理画面上からアップデートをかけるpluginsやthemesなどはkusanagiユーザで、 WordPressが直接編集するuploadsはhttpdユーザでグループはwwwにしておくと良いかも。
# chown -R kusanagi:kusanagi wp-content/
# chown -R httpd:www wp-content/uploads/
ちなみに、コピー先のデータを消したり上書きしたりすると アップデートできなくなったり、KUSANAGIのプラグインが使えなくなるので避けましょう。
2.MySQLのダンプデータを持ってきてインポートする
データベースの移行方法は色々あるのですが 今回はKusanagiで使用していたデフォのDBから旧サーバで使用していたDBをインポートし 参照先のデータベースを旧サーバのDBに向ける形式とします。 (多分この方法が一番確実でないかなぁと・・・。)
MySQLをダンプするにはだいたい以下のコマンドです。 エクスポートするDB名はold_dbとします。
// 旧サーバ
# mysqldump -u user -p old_db > old_db_YYYYMMDD.sql
Enter password:
こちらもscpでコピー済み。
# scp -i rsa.key old_db_YYYYMMDD.sql 192.168.1.2:/home/kusanagi/
DBインポートは以下な感じ。 今回インポート先のDB名はnew_dbとします。
# mysql -u user -p new_db < old_db_YYYYMMDD.sql
Enter password:
権限周りが変わりますんで、その辺りも自力で変更します。
# mysql -u user -p
MariaDB > grant all on new_db.* to kusanagi@localhost identified by '********';
ここでドメインが変わっている場合、 wp-cliなどを利用してDBを書き換えたりする必要があります。 これやっとかないと旧サイトにリダイレクトかかったりしちゃいます。
# wp search-replace 'http://www.outbreak2000.com' 'http://example.com'
+------------------+-----------------------+--------------+------+
| Table | Column | Replacements | Type |
+------------------+-----------------------+--------------+------+
~ 省略 ~
Success: Made 555 replacements.
# wp option update home 'http://www.outbreak2000.com'
Success: Updated 'home' option.
# wp option update siteurl 'http://www.outbreak2000.com'
Success: Updated 'siteurl' option.
ですが、wp-cliを導入するのがめんどうだったので データベースを直接変更してサイトURLを変更する方法にしました。
3.DB内の旧URLを新URLに変更する
1.MySQLへログイン
# mysql -u root -p
2.WordPress用データベースを指定
MariaDB > use dbname;
3."wp_options"テーブルの'siteurl'の値を確認
MariaDB > select * from wp_options where option_name = 'siteurl';
+-----------+-------------+----------------------+----------+
| option_id | option_name | option_value | autoload |
+-----------+-------------+----------------------+----------+
| 1 | siteurl | http://18.183.225.54 | yes |
+-----------+-------------+----------------------+----------+
4."wp_options"テーブルの'siteurl'の値を変更
MariaDB > update wp_options set option_value = 'http://kusanagi.hdserver.info' where option_name = 'siteurl';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
4."wp_options"テーブルの'siteurl'の値が変更されているか確認
MariaDB > select * from wp_options where option_name = 'siteurl';
+-----------+-------------+-------------------------------+----------+
| option_id | option_name | option_value | autoload |
+-----------+-------------+-------------------------------+----------+
| 1 | siteurl | http://kusanagi.hdserver.info | yes |
+-----------+-------------+-------------------------------+----------+
1 row in set (0.00 sec)
5."wp_options"テーブルの'home'の値を確認
MariaDB > select option_name,option_value from wp_options where option_name = 'home';
+-------------+--------------------------------+
| option_name | option_value |
+-------------+--------------------------------+
| home | http://18.183.225.54 |
+-------------+--------------------------------+
1 row in set (0.00 sec)
6."wp_options"テーブルの'home'の値を変更
MariaDB > update wp_options set option_value = 'http://kusanagi.hdserver.info' where option_name = 'home';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
7."wp_options"テーブルの'home'の値が正しく変更されている事を確認
MariaDB > select option_name,option_value from wp_options where option_name = 'home';
+-------------+--------------------------------+
| option_name | option_value |
+-------------+--------------------------------+
| home | https://kusanagi.hdserver.info |
+-------------+--------------------------------+
1 row in set (0.00 sec)
4.wp-config.phpを編集する
旧サーバからDBだけインポートしただけだと、 もしかしたらデータベース接続エラーとか出ちゃうと思うので (自分の場合はデータベース接続エラーでました^^;)wp-config.phpの諸々修正します。
主に修正箇所は以下くらい。
# vi wp-config.php
// DB名。KUSANAGIデフォのデータベースから旧サーバのデータベースへと参照します。
define('DB_NAME', 'new_db');
// データベーステーブルの接頭辞。デフォから変更している場合はこの辺も変えなければなりません。
$table_prefix = 'wp_hd_';
おわり
この時点でKusanagi側のWordpressが問題なく閲覧できれば完了です。
ドメインが同じなのであればDNSの切り替えなどが必要ですが 新しいドメインならすぐにアクセス可能ですね。
前回ご紹介したKusanagiの導入までは結構わかりやすく簡単でしたが 今回はサイト移設に伴うDBの操作となかなか難易度が上がっております。
次回は移設元と移設先のサーバにて 総合的なパフォーマンスやレスポンスを計測してみたいと思います。
果たしてどのくらい速くなったのか、後編に続く。