みのわーるど::Blog

茨城のシェアハウスの中にある会社で働くITベンチャー役員の奮闘記。

さくらのVPS間(異なるサーバ間)でのWordPressの移行方法

さくらのVPSの料金体系が変更になり、月額1,480円でメモリ2G、HDD200G(使いきれない...)、そしてCPUが仮想3コアのプランが登場しました。

VPS(仮想専用サーバ)のさくらインターネット

WordPressだけでなくRedmineなんかも入れたいなと考えていたので、旧512Mのプランから移行しました。その時のWordPress移行メモです。

1. 契約からインストールまで

たくさんWeb上に情報が出回っているので割愛します。私が調査した中では、以下のサイトがわかり易かったです。

ここまででApache, Mysqlの導入が済んだものとします。

2. 旧サーバからのデータ取り出し

旧サーバのWordPressがインストールされたディレクトリと、mysqlのダンプファイルを取得します。

前者は、私の場合 /home/yuichi/public_html にインストールしていたので、public_htmlディレクトリを、WinSCPなどで引っ張って来ました(ファイル数が膨大なので、圧縮してからダウンロードすべきです。)

後者は、旧サーバにSSHログインした後に、以下のコマンドで取得できます。

mysqldump -u yuichi -p wordpress(DB名) > wordpress.sql(ダンプファイル名)

3. 新サーバへのデータ投入

新サイトでは、/var/www/html/wordpress をWordPressのディレクトリにする予定なので、ここにデータを投入します。(サーバの設定は割愛します。) まず、先ほどのpublic_htmlのデータを /var/www/html 上に持ってきて、wordpressにリネームしました。

DBについては、以下のコマンドで投入しました。

mysql -u yuichi -p < wordpress.sql

がしかし、エラーになってしまいます。

そこで、予めデータベースを作成し、ダンプファイルの先頭に、

USE データベース名;

を記述することにより、取り込みができました。
mySQL 1046 error when importing wordpress database - Stack Overflow

3. WordPressの設定

まず、wp-config.php を開き、DB情報を新サーバのものに更新します。

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpress'); <- 新サーバのWordPress用DB名

/** MySQL データベースのユーザー名 */
define('DB_USER', 'yuichi'); <- 新サーバのユーザ名へ

/** MySQL データベースのパスワード */ <- 新サーバのパスワードへ
define('DB_PASSWORD', '*****');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースのキャラクターセット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

こんなもんです。これでうまく行っていれば、移行は完了です。がしかし、この状態ではパーマリンク設定をしている場合は「Not Found」の嵐となってしまいます。.htaccessも指示に従って設定してあるしなぜかな...と思いましたが、Apacheの以下の設定が問題でした。

AllowOverride None <- FileInfo(またはAll)に設定する

以上の設定で.htaccessファイルが有効になり、パーマリンク設定が有効になります。

以上の環境でテストして問題ないようであれば、DNSのレコード情報を前サーバのIPから新サーバへと更新して、移行は完了です。