CentOS5で新サーバ構築/(6)Wordpressの移行と文字化け対策 のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- CentOS5で新サーバ構築/(6)Wordpressの移行と文字化け対策 へ行く。
- 1 (2008-06-30 (月) 17:11:08)
- 2 (2008-07-02 (水) 12:35:43)
Wordpressの移行と文字化け対策 †
Wordpressのver_upは断念 †
- 現在のWordpressはver2.0xであるが、最新版はver2.21である。もともと新サーバ構築の大きな目的がバージョンアップだったが、結果的に断念することになった。
- もちろん、最新のver2.21をインストールして試してみました。全く新規にDB構築した場合は、何の問題もなく動いているのですが、過去データを持ってくるとトラブルが続発したのです。文字化けだけでなく、写真はリンクされないなど、システムとしての不具合が関係しているようです。
- いろいろソースレベルでカスタマイズしていたが、これも移行に際しては大きなハードルとなった。結局、挫折して、現verのまま移行になりました。それでも、たいへんだった(^^;)
Wordpress移行の問題点 †
- ということで、まずは現行のver2.0xベースでのWordpressの再現を試みることにした。が、それでも、大きく4つの問題があった。
- phpMyadminを使ってDB移行する手順は?
- DB移行の際の文字変換をどうするか?
- UTF-8への文字変換は成功したのに、文字化け表示?
- 権限異常で管理者ログインが不可?
phpMyadminでのデータ移行手順 †
- phpMyadminはGUIなのでとっつきはよいのだが、MySQLのすべてのコマンドを扱えるだけあってメニュー構成は複雑でパラメータも多く、実際に何をどう操作するかはなかなか難しい。データのバックアップだけなら、操作は限られるのだが、手順確認するまで試行錯誤を繰り返した。
- おおまかな手順は、以下のとおりであるが、データベースの内容をバックアップするなどのサイトが参考になる。
- 現サーバからデータをエクスポート
- 現サーバでphpMyadminを起動
- データベース(wordpress)を選択
- 「エクスポート」を選んで、パラメータ選択
- 「保存」実行で、操作端末へファイル保存
- 新サーバでデータをインポート
- 新サーバでphpMyadminを起動
- 「インポート」を選んで、パラメータ選択
- 操作端末から、保存したデータをアップロード
phpMyadminに文字変換機能を追加 †
- 何回か試して、確かにDBバックアップ自体は可能となった。流れは単純なのだが、新旧サーバ間で「文字コードの違い」というギャップが存在して、そのままデータ移行しても、ブログ自体は日本語部分が文字化けして使い物にならない。
- 文字コードの変換をどこでやるかという問題だが、Wordpressのサポートサイトでも、いくつかの方法が提示されている。EUC-JPからUTF-8への文字コード変更が参考になる。
- エクスポートしたファイルは基本的のテキストファイルである。書き込まれた記事内容のほかに、インポートの際にrestoreするためのSQL文が埋め込まれているものである。
- このファイル自体を、サーバ上、あるいは経由するPC上で、適当なツール(エディタ等)で変換する方法がひとつ。何をやっているか分かりやすいし、結果もすぐ確認できるが、大きなファイルを直接操作する危険は伴う。
- 今ひとつは、phpMyadmin自体の文字コード変換機能を利用するもの。ただ、phpMyadminの文字変換機能はutf-8には対応していないため、パッチを当てて機能拡張する。これでエクスポートする際に自動化できる。
- 今回は、Hack機能を組み込むことにする。その名も「クイック・ハック」。ハックといっても至って簡単で、サーバー上にあるphpファイルを1本置き換えるだけ。
phpMyadminのlibraries/kanji-encoding.lib.php
- これで、エクスポート画面の文字変換メニューにutf-8というオプションが追加される。パッチのダウンロードはこちらから 。
phpMyadminによるWordpressデータのバックアップ手順 †
①現サーバ側でデータをバックアップする
・まず、ログイン、パスワード入力、現サーバなので文字コードは「EUC-J」がデフォルトである。
・ トップメニューから「エクスポート」をクリックする
・ エクスポート画面で、以下の操作を行う
・「データベース」に表示されている「wordpress」をクリック(反転)し、
・構造の
□DROP TABLE / DROP VIEWを追加 にチェック
・ エクスポート画面の下段に移り、
・□ファイルに保存する にチェック
圧縮:無し
文字コード変換:utf-8 にチェック (Hack機能でメニュー追加される!)
・実行する
・保存先を指定( デスクトップ)
・デフォルトのファイル名は、localhost.sql
②つづいて新サーバ側でインポートする
・ 新サーバでログインする こちらの文字コードは[UTF-8]が基本。
・ トップメニューは同じだが、文字コード設定等はやや異なっている
・ もし、データベースが残っていたら、事前に削除数しておく。
□wordpress にチェックを入れて、削除する
・ インポートする
現サーバからエクスポートしたファイルを指定する
デスクトップのファイルを選ぶ ファイル名:localhost.sql
文字コード変換は「non」のまま
文字化け対策 その① †
- ここで大事なことがある。文字データはエクスポート時にutf-8に変換されているが、もともとWordpressで扱う文字コード設定が、データベース自体に含まれているため、この箇所を修正しておかないと、結局は画面表示がおかしくなる。
- これには、以下のSQLコマンドを実行すればよい
UPDATE wp_options SET option_value = 'UTF-8' WHERE option_name = 'blog_charset';
- なお、修正は一ヶ所だけなので、exportしたファイルを、WZエディタで操作することでも対応可能だが、やはり危険は避けたほうがよい。
wp-config.php の修正 †
- 文字コード設定も UTF-8に修正した
vi /var/www/html/wordpress/wp-config.php ---------- <?php mb_language("Japanese"); //mb_internal_encoding("EUC-JP"); mb_internal_encoding("UTF-8"); ★修正 // ** MySQL settings ** // define('DB_NAME', 'wordpress'); // The name of the database define('DB_USER', 'kurari'); // Your MySQL username define('DB_PASSWORD', 'kurari'); // ...and password define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value // v2.2以降は以下の2行を追加してください //define('DB_CHARSET', 'utf8'); //define('DB_COLLATE', ''); // You can have multiple installations in one database if you give each a unique prefix $table_prefix = 'wp_'; // Only numbers, letters, and underscores please! // Change this to localize WordPress. A corresponding MO file for the // chosen language must be installed to wp-includes/languages. // For example, install de.mo to wp-includes/languages and set WPLANG to 'de' // to enable German language support. //define ('WPLANG', 'ja_EUC'); define ('WPLANG', 'ja_UTF'); ★修正 /* That's all, stop editing! Happy blogging. */ define('ABSPATH', dirname(__FILE__).'/'); require_once(ABSPATH.'wp-settings.php'); ?>
文字化け対策 その② †
- これでいいかと思いきや(^^;) ブラウザでアクセスすると、日本語部分がすべて「????」表示となってしまう。ANK文字は問題なく表示、リンクも生きているが、全体のレイアウトがまるっきり崩れてしまう。
- これには参った・・・・
しかし、対策情報を発見、XREAにUTF8設置時の文字化け: 4)設置方法まとめ - wordpresss ver2.0xの場合は、ファイルの修正で解決した!
wp-includes/wp-db.php :: function wpdb() ---------------------- //---2007/8/16----------文字化け対策追加-- mysql_query("SET NAMES utf8", $this->dbh); //----------------------- $this->select($dbname); ----------------------
写真データの移行 †
- 現サーバ側で、最新バックアップ
[root@kurarin html]# tar czvf wp20070816.tar.gz wordpress/ [root@kurarin html]# ls -l wp20070816.tar.gz -rw-r--r-- 1 root root 32003791 8月 16 13:45 wp20070816.tar.gz [root@kurarin html]# cp -arp wp20070816.tar.gz /home/eizo/
- WinSCPを使ってCentOS5サーバにファイルコピーする
- 新サーバで解凍
[root@kuraric5 html]# mv wordpress/ wordpress_old/ [root@kuraric5 html]# cp -arp /home/eizo/wp20070816.tar.gz . [root@kuraric5 html]# tar xzvf wp20070816.tar.gz
- これでようやく、wordpressの移行が完了した。
- 最初に触れたように、新サーバ構築に合わせて、wordpressも最新のver2.2に移行しようと目論んだのですが、写真ファイルのリンク先等がすべてDBに埋め込まれているなどの関係で、データベース自体の大幅な修正が予想されました。
- これは、ちょいと手をつける気にならず、結局、現サーバとまったく同じ形(ver、DIR構成)のままでいくことにしました。心残りなのですが、これは宿題ということで。