wordpress引越し

このたびスタンドアロンのwordpressで運用しているブログを引越することになりました。とあるレンタルサーバー(FreeBSD)から別のレンタルサーバー(Windows server)へ。
最終的にはドメイン名も変わらないので、文字コードの問題さえクリアできれば、そう難しいことはなかろうと思っていますが、念には念を入れということで、ローカルにあるwindowsXP(SP3)へ移行のテストを行いました。

以下に、その手順を書いておきましょう。

移行対象 /blog/c/ というwordpress2.6.3のブログ一式
移行元 FREEBSD, apache2, PHP5, MySQL5, wordpress 2.6.3
移行先 windowsXP home SP3, 以下同じ

移行方法 イ)wordpressのフォルダをサーバー間でコピー
ロ)移行元、phpMyAdminでテーブルをエクスポートし
ハ)移行先、phpMyAdminでテーブルをインポートし
二)wordpressを立ち上げるとできあがり
※1)wordpressのプラグインで移行する方法もありますが、今回はこの方法でやってみました。
※2)wordpressでパーマリンクの設定をしている場合は、apacheの設定を確認する必要があります。詳細は、一番最後に書いてあります。

【移行手順】
0.移行先にはMySQL上に「wordpress」という名前のデータベースが存在することが前提です。データベースの名前は、現行と同じになるように運用します。

1.テーブルのエクスポート
/blog/c/で使っているMySQLのテーブルを、phpMyAdminを使って全てエクスポートします。対象は、wordpressのルートディレクトリにある環境設定ファイルwp-config.phpに書いてある、wp_というような、テーブルの接頭辞($table_prefix)を持つテーブルです。今回は10個のテーブルがありました。なお、移行元の文字コード体系はutf8ですから、MySQLadminのログインもutf8でないといけません。
エクスポートは、デフォルトの設定に加えて、「DROP TABLEを追加」「ファイルに保存する」の2カ所にチェックをし、実行します。

2.エクスポートデータの修正
1のデータをテキストエディタ(utf8)で修正します。
今回のテストは、本来のドメイン名をlocalhostに変更します。これは、ローカルホストに移行するためです。
ドメイン名の修正箇所は2ヶ所です。wp_optionsテーブルの「siteurl」という文字列ある行と、「home」という文字列のある行です。

3.wordpress環境の吸い上げ
本番サーバーにFTPでログインし、/blog/c/配下のファイルをローカルにコピーします。約700弱のファイルに5分程度かかりました。もちろん、ブログの記事の量によるでしょう。

4.wordpress環境のコピー
上記のコピーを、Apache2/htdocs/配下にコピーします。
httpルートからのフォルダが同じになるように配置します。

5.コピーしたwordpress環境ファイルの修正
4でコピーした、/Apache2/htdocs/blog/c/配下にあるwp_config.phpを修正します。
具体的には、MySQLのデータベース名DB_NAMEやユーザー名DB_USER、パスワードDB_PASSWORDなど、データベースサーバDB_HOSTの4項目の変更です。
ここで、テーブル名のプレフィックスは変更しません。
1のエクスポートしたテーブルと同じ名前を使います。
このことがあるので、移行するwordpress環境をwordpressだけ事前に作っておく場合はプレフィックスを揃えておく必要があります。
今回のように、環境ごとコピーする場合は考慮不要です。

6.wordpress環境の作成 (テストでは、この作業をやりましが、この手順は不要です!)
5で指定した新たなテーブル環境は、まだローカルホスト上にありませんので、ブラウザからhttp;//localhost/blog/c/
にアクセスすると、wordpressがテーブルを作りに行きます。テーブルを作成し終えたら、画面上、文字が化けていないかを確認します

7.テーブル削除 (6をやらない場合はもちろんスキップします)
6で作った初期のテーブルを、phpMyAdminで削除します。

8.テーブルのインポート
2のデータをphpmyadminでインポートします。

9.動作確認
ひととおり、画面を遷移してみます。アクセスカウンター以外は、テーマ、添付の写真、添付の動画などを確認します。アクセスカウンターは、移行元のサーバーが提供していたwwwcounterを利用していたので、新サーバーでも、これに相当する機能を追加する必要があります。

というわけで、ここまでは、順調にきました。さっそく、もうひとつのブログ/blog/s/も移してしまいましょう。/blog/s/のデータベースはMySQL4ですが、手順は同じです。

しかし、この後に….  その苦労はもう忘れて、結果だけ書いておきます。

***********************
/blog/c/のパーマリンクの設定は、標準仕様で記事のIDとなっており、このため問題ありませんでしたが、実は、もうひとつのブログ、/blog/s/は、/日付/投稿名、をパーマリンクに設定していたことで、すっかりはまってしまいました。結果的には解決しましたが、移行前にapacheの環境を確認しておく必要があります。

処方は、wordpress codex 日本語版「パーマリンクの使い方」を参考にしました。

こちらの環境で対応したのは、
・http.config でmod_rewrite を有効にする
・wordpressの格納されているのディレクトリを、AllowOverride all にする
(デフォルト=トップディレクトリは、None)
・wordpressの格納されているディレクトリの.htaccessファイルを書き込みOKとし、移行元サーバー特有の記述であった、suPHPを削除の3点です。

めでたし、めでたし。

update 2010/2/5

wordpressのテスト環境を作るのに、既存のデータベースをphpmyadminでコピーしようとしたところ、ファイルサイズが大きすぎてインポート出来ませんでした。そこで、コマンドラインからインポートすることになり、その手順を書いておきます。

a)mysqlがインストールされているディレクトリを確認する。今回の場合は、c:¥mysql
さらに、mysqlのユーザー名とパスワードを、wordpressの設定ファイルwp-config.phpで確認しておく。今回は、ユーザー名root,パスワードabcとする。
もうひとつ、phpmyadminでエクスポートした.sqlファイルをc:¥mysql¥binディレクトリに移しておくと後で便利、デスクトップのままでは不便。

b)コマンドプロンプトから、dir c:¥mysqlに移動し、さらにmysql.exeが格納されているc:¥mysql¥binディレクトリへ移動。

c)そこで、mysqlにログインし、コマンドモードでmysqlの操作ができるような状態にする。
mysql -u root -p
パスワード要求があるので、abcと答える。これでログイン完了。以降、mysql> とプロンプトが表示される。

d)次に、データベースを指定(useコマンド)する。wordpressが使っているデータベースのデータベース名は”wordpress”であるので、
mysql> use wordpress

e)最後に、インポートのコマンド(source)を実行する。sqlmyadminでエクスポートしたファイル名がwordpress.sqlだったので、
mysql> source wordpress.sql
ここで、a)にも書いたがc:¥mysqlに移しておかなかった場合は、長いディレクトリ名(それも日本語がはいったような)を入力することになる。

sourceコマンドがうまく実行されれば、コマンドライン上にsqlコマンドがずらずらっと表示され続けます。当たり前のことかもしれませんが、データベースのインポートってレコードをsql文で書き込んでいく作業だということがよくわかります。

なお、データベースをインポートするときに、元と先で環境を変える必要があるときは、wordpress.sqlの中身を慎重に変更します。今回の場合では、phpmyadminのところでも書いたように、wordpressのurl名を変え、また、テーブルのプレフィックスを「wp2_」から「wp4_」にchange allしています。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。