WindowsXPにWordPress(その3)!
Updated:
今夜は、 こちら でお話した うちのFedoraサーバのWordPressをWindowsXPマシンで動かすためにデータベースMySQLを移行したけど、DB登録がうまくいかなかった。。。 ことについての調査結果です。
いろいろググって調べてみましたが、 Linuxサーバ上のMySQLをWindows上のMySQLへ移行するという話はあまりなくて結構苦労しました。
MySQLについての文字コードの設定についてもいろんな記事がありました。
バージョンによって違うこともありますが、いろんな記事を参考にさせてもらい、 なんとかWindows上で 「 Apache2.2.11 + PHP5.2.8 + MySQL5.1.31 + WordPress2.7.1 」 で稼動できるようになりました。 (日本語の投稿もできるようになりました。)
※例により前提条件は、 ・WindowsXP(SP3)にWebサーバがApache2、MySQL、PHP5、WordPressがインストール済み。 ・さらに、サーバ側のWordPressのデータベースをプラグイン「 WP-DBManager 」にてバックアップしている。 ( もしくは自分でダンプファイルを作成している。文字コードは「 UTF-8 」で。 ) です。ご自分の環境と違う場合は若干異なることがあるかもしれません。
導入記録
※※いつも言ってますが、必ずしもこのやり方が正しいとは限りません。 今回は、あくまでもこちら( WindowsXPにWordPress(その2)! )で一旦導入した履歴がある場合の対応です。 勝手ですけど、こちら( WindowsXPにWordPress(その2)! )は間違えだったと思ってください。 しかし、今回の方法で最初からきれいに移行できる保証もありませんので、あしからず。。。 適宜他の情報等と読み比べながらの参考としてください。
テーマの整備
サーバと同じにするために、サーバに導入しているWordPressのテーマフォルダごとWindowsマシンにコピーする。 ※あえてWordPressの設定画面で設定しなくても良い。 あとでデータベースを丸ごとコピーすることで設定も移行されるので。
プラグインの整備
サーバと同じにするために、サーバに導入しているWordPressのプラグインをWindowsマシンにコピーする。 ※あえてWordPressの設定画面で設定しなくても良い。 あとでデータベースを丸ごとコピーすることで設定も移行されるので。 ローカル側では導入しないつもりのプラグインはデータベースリストア後にWordPressのプラグイン設定画面から停止させてください。
アップロードファイルの整備
サーバと同じにするために、サーバでアップロードした画像などのアップロードファイルをWindowsマシンにコピーする。 ※当方の場合、「 \wordpress\wp-content\uploads 」フォルダ配下のファイル。
ダンプファイルのコピー
サーバ側のダンプファイルをわかりやすい名前に変更して、わかりやすい場所にコピー。 (ちなみに、このダンプファイルはサーバ側のWordPressに導入したプラグインWP-DBManagerで作成されたダンプファイル) ※うちの場合、ファイル名を「 wordpress.sql 」とし「 C:\mysql\bin 」フォルダに置きました。
ダンプファイルの内容確認・修正
そのままWindows側MySQLへリストアすると不具合が生じるので、以下のように修正。 ・サーバ側のダンプファイル内の 「 www.mk-mode.com 」(うちの場合) という文字列をローカル(Windows)側で動作するよう 「 127.0.0.1 」 と修正。(大量(数千)にあるのでテキストエディタで一括変換)
MySQL設定ファイルの作成
C:¥WINDOWS フォルダに以下の内容の 「 my.ini 」ファイルを作成する。 (すでに存在する場合は、以下のように修正する。) ※フォルダ「C:¥mysql¥」は当方の場合
[mysqld]
basedir="C:/mysql/"
datadir="C:/mysql/data/"
default-character-set=utf8
skip-character-set-client-handshake
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
※いろんなサイトに「 skip-character-set-client-handshake 」の記述が重要と記載されてましたが、うちの環境でも必須かどうかは未確認です。
PHP設定ファイルの修正
PHP設定ファイル php.ini を以下のように修正する。
・・・ 途中省略 ・・・
;default_charset = "iso-8859-1"
default_charset = "Shift_JIS"
・・・ 途中省略 ・・・
;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = UTF8
・・・ 途中省略 ・・・
;mbstring.http_output = SJIS
mbstring.http_output = pass
・・・ 以下省略 ・・・
wp-db.php の修正
WordPressからMySQLに接続する処理の直前の部分に以下の記述を追加する。 (緑色の部分)
function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
・・・ 途中省略 ・・・
mysql_query("SET NAMES utf8", $this->dbh);
$this->select($dbname);
}
リストア実行
コマンドプロンプトにて以下のようにする。 (もちろんMySQLサービスを開始させてから)
C:\mysql\bin>mysql -u root -p --default-character-set=utf8 wordpress < wordpress.sql
Enter password: ***************
C:\mysql\bin>
「 –default-character-set=utf8 」がないと文字コードの関係でエラーになります。
動作確認
Apache2、MySQLを再起動後、「 http://127.0.0.1/wordpress/ 」にアクセスし動作を確認してみる。
うちの場合、一応サーバ側と同じ画面・内容が表示され、各種動作が(日本語記事の投稿も含めて)正常にできている感じです。
※但し、正常に稼働するまでアレコレとかまったので、大事なことを書き忘れているかもしれません。 あくまでも、自分のメモ書きですので。。。
※LinuxとWindowsで異なる文字セットを使っているから移行がてこずってしまいましたが、最初からWindows単独で導入したり、文字セットを全部共通にすれば、もっと楽なはずです。。。
これで、うちのFedoraサーバがダウンした場合でも、Windowsマシンを使ってバックアップの時点(毎晩夜中にバックアップとってる)までは戻れるはずです。
でも、やっぱりミラーリングとかしといた方がいいんかな!
ま、それはいつか。
では、また。
Comments