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

Last-modified: 2008-07-02 (水) 12:35:43 (5774d)

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のすべてのコマンドを扱えるだけあってメニュー構成は複雑でパラメータも多く、実際に何をどう操作するかはなかなか難しい。データのバックアップだけなら、操作は限られるのだが、手順確認するまで試行錯誤を繰り返した。
  • おおまかな手順は、以下のとおりであるが、データベースの内容をバックアップするなどのサイトが参考になる。
    • 現サーバからデータをエクスポート
    1. 現サーバでphpMyadminを起動
    2. データベース(wordpress)を選択
    3. 「エクスポート」を選んで、パラメータ選択
    4. 「保存」実行で、操作端末へファイル保存
    • 新サーバでデータをインポート
    1. 新サーバでphpMyadminを起動
    2. 「インポート」を選んで、パラメータ選択
    3. 操作端末から、保存したデータをアップロード

phpMyadminに文字変換機能を追加

  • 何回か試して、確かにDBバックアップ自体は可能となった。流れは単純なのだが、新旧サーバ間で「文字コードの違い」というギャップが存在して、そのままデータ移行しても、ブログ自体は日本語部分が文字化けして使い物にならない。
      wp_error
  • 文字コードの変換をどこでやるかという問題だが、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」がデフォルトである。
  login

・ トップメニューから「エクスポート」をクリックする
  export

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

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

  UTF-8_check

・保存先を指定( デスクトップ)
・デフォルトのファイル名は、localhost.sql
  import

②つづいて新サーバ側でインポートする
・ 新サーバでログインする こちらの文字コードは[UTF-8]が基本。
  charset

・ トップメニューは同じだが、文字コード設定等はやや異なっている。
  top2

・ もし、データベースが残っていたら、事前に削除数しておく。
  □wordpress にチェックを入れて、削除する
   deldb

・ インポートする
   現サーバからエクスポートしたファイルを指定する
   デスクトップのファイルを選ぶ  ファイル名:localhost.sql
   文字コード変換は「non」のまま
  import2

文字化け対策 その①

  • ここで大事なことがある。文字データはエクスポート時にutf-8に変換されているが、もともとWordpressで扱う文字コード設定が、データベース自体に含まれているため、この箇所を修正しておかないと、結局は画面表示がおかしくなる。
  • これには、以下のSQLコマンドを実行すればよい
    UPDATE wp_options SET option_value = 'UTF-8' WHERE option_name = 'blog_charset';
      sql
  • なお、修正は一ヶ所だけなので、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文字は問題なく表示、リンクも生きているが、全体のレイアウトがまるっきり崩れてしまう。
      wp_error2
  • これには参った・・・・
     しかし、対策情報を発見、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構成)のままでいくことにしました。心残りなのですが、これは宿題ということで。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元