CentOS5で新サーバ構築/(6)Wordpressの移行と文字化け対策 の変更点


#navi(CentOS5で新サーバ構築)

*Wordpressの移行と文字化け対策 [#f0799995]

#contents

**Wordpressのver_upは断念 [#w12168d7]
- 現在のWordpressはver2.0xであるが、最新版はver2.21である。もともと新サーバ構築の大きな目的がバージョンアップだったが、結果的に断念することになった。
- もちろん、最新のver2.21をインストールして試してみました。全く新規にDB構築した場合は、何の問題もなく動いているのですが、過去データを持ってくるとトラブルが続発したのです。文字化けだけでなく、写真はリンクされないなど、システムとしての不具合が関係しているようです。
- いろいろソースレベルでカスタマイズしていたが、これも移行に際しては大きなハードルとなった。結局、挫折して、現verのまま移行になりました。それでも、たいへんだった(^^;)

**Wordpress移行の問題点 [#d9f7734c]
- ということで、まずは現行のver2.0xベースでのWordpressの再現を試みることにした。が、それでも、大きく4つの問題があった。
-- phpMyadminを使ってDB移行する手順は?
-- DB移行の際の文字変換をどうするか?
-- UTF-8への文字変換は成功したのに、文字化け表示?
-- 権限異常で管理者ログインが不可?

**phpMyadminでのデータ移行手順 [#c708914c]
- phpMyadminはGUIなのでとっつきはよいのだが、MySQLのすべてのコマンドを扱えるだけあってメニュー構成は複雑でパラメータも多く、実際に何をどう操作するかはなかなか難しい。データのバックアップだけなら、操作は限られるのだが、手順確認するまで試行錯誤を繰り返した。

- おおまかな手順は、以下のとおりであるが、[[データベースの内容をバックアップする>http://wordpress.xwd.jp/euc_to_utf/#eu_01]]などのサイトが参考になる。
-- 現サーバからデータをエクスポート
++ 現サーバでphpMyadminを起動
++ データベース(wordpress)を選択
++ 「エクスポート」を選んで、パラメータ選択
++ 「保存」実行で、操作端末へファイル保存
--新サーバでデータをインポート
++ 新サーバでphpMyadminを起動
++ 「インポート」を選んで、パラメータ選択
++ 操作端末から、保存したデータをアップロード

**phpMyadminに文字変換機能を追加 [#oac8e907]
- 何回か試して、確かにDBバックアップ自体は可能となった。流れは単純なのだが、新旧サーバ間で「文字コードの違い」というギャップが存在して、そのままデータ移行しても、ブログ自体は日本語部分が文字化けして使い物にならない。&br;
  &ref(wp_char_error.jpg,,50%,wp_error);&br;
- 文字コードの変換をどこでやるかという問題だが、Wordpressのサポートサイトでも、いくつかの方法が提示されている。[[EUC-JPからUTF-8への文字コード変更>http://wordpress.xwd.jp/euc_to_utf/]]が参考になる。

- エクスポートしたファイルは基本的のテキストファイルである。書き込まれた記事内容のほかに、インポートの際にrestoreするためのSQL文が埋め込まれているものである。
-- このファイル自体を、サーバ上、あるいは経由するPC上で、適当なツール(エディタ等)で変換する方法がひとつ。何をやっているか分かりやすいし、結果もすぐ確認できるが、大きなファイルを直接操作する危険は伴う。
-- 今ひとつは、phpMyadmin自体の文字コード変換機能を利用するもの。ただ、phpMyadminの文字変換機能はutf-8には対応していないため、パッチを当てて機能拡張する。これでエクスポートする際に自動化できる。

- 今回は、Hack機能を組み込むことにする。その名も「クイック・ハック」。ハックといっても至って簡単で、サーバー上にあるphpファイルを1本置き換えるだけ。
 phpMyadminのlibraries/kanji-encoding.lib.php
- これで、エクスポート画面の文字変換メニューにutf-8というオプションが追加される。パッチのダウンロードは[[こちら>http://wordpress.xwd.jp/files/libraries.zip]]から 。

**phpMyadminによるWordpressデータのバックアップ手順 [#m532396e]
①現サーバ側でデータをバックアップする&br;

・まず、ログイン、パスワード入力、現サーバなので文字コードは「EUC-J」がデフォルトである。&br;
  &ref(1export_login.jpg,,50%,login);&br;

・ トップメニューから「エクスポート」をクリックする&br;
  &ref(2export_menu.jpg,,50%,export);&br;

・ エクスポート画面で、以下の操作を行う&br;
 ・「データベース」に表示されている「wordpress」をクリック(反転)し、&br;
 ・構造の&br;
  □DROP TABLE / DROP VIEWを追加   にチェック&br;
  &ref(3export-1.jpg,,50%,drop_check);&br;

・ エクスポート画面の下段に移り、&br;
 ・□ファイルに保存する   にチェック&br;
   圧縮:無し&br;
   文字コード変換:utf-8  にチェック (Hack機能でメニュー追加される!)&br;
 ・実行する&br;&br;
  &ref(4export-2.jpg,,50%,UTF-8_check);&br;

・保存先を指定( デスクトップ)&br;
・デフォルトのファイル名は、localhost.sql &br;
  &ref(5export-3.jpg,,50%,import);&br;

②つづいて新サーバ側でインポートする&br;
・ 新サーバでログインする こちらの文字コードは[UTF-8]が基本。&br;
  &ref(6import_login.jpg,,50%,charset);&br;

・ トップメニューは同じだが、文字コード設定等はやや異なっている。&br;
  &ref(8import_menu.jpg,,50%,top2);&br;

・ もし、データベースが残っていたら、事前に削除数しておく。&br;
  □wordpress にチェックを入れて、削除する&br; 
  &ref(7Iimport_deldb.jpg,,50%,deldb);&br;
 &ref(7Iimport_deldb.jpg,,50%,deldb);&br;

・ インポートする&br;
   現サーバからエクスポートしたファイルを指定する&br;
   デスクトップのファイルを選ぶ  ファイル名:localhost.sql&br;
   文字コード変換は「non」のまま&br;
  &ref(9import.jpg,,50%,import2);&br;

** 文字化け対策 その① [#t22c54f3]
- ここで大事なことがある。文字データはエクスポート時にutf-8に変換されているが、もともとWordpressで扱う文字コード設定が、データベース自体に含まれているため、この箇所を修正しておかないと、結局は画面表示がおかしくなる。
- これには、以下のSQLコマンドを実行すればよい
 UPDATE wp_options SET option_value = 'UTF-8' WHERE option_name = 'blog_charset';
  &ref(10sql.jpg,,50%,sql);&br;
- なお、修正は一ヶ所だけなので、exportしたファイルを、WZエディタで操作することでも対応可能だが、やはり危険は避けたほうがよい。

**wp-config.php の修正 [#s44e2677]
- 文字コード設定も 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');
 ?>

**文字化け対策 その② [#fc72303b]
- これでいいかと思いきや(^^;) ブラウザでアクセスすると、日本語部分がすべて「????」表示となってしまう。ANK文字は問題なく表示、リンクも生きているが、全体のレイアウトがまるっきり崩れてしまう。&br;
  &ref(wp_char_error2.jpg,,50%,wp_error2);&br;
-これには参った・・・・&br;
 しかし、対策情報を発見、[[XREAにUTF8設置時の文字化け: 4)設置方法まとめ>http://bono.s201.xrea.com/2006/03/11-utf8_xrea_3/]]
- wordpresss ver2.0xの場合は、ファイルの修正で解決した!
 wp-includes/wp-db.php :: function wpdb()
 ----------------------
      //---2007/8/16----------文字化け対策追加--
           mysql_query("SET NAMES utf8", $this->dbh);
      //-----------------------
 	 $this->select($dbname);
 ----------------------

** 写真データの移行 [#z9f27187]
- 現サーバ側で、最新バックアップ
 [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構成)のままでいくことにしました。心残りなのですが、これは宿題ということで。

#navi(CentOS5で新サーバ構築)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元