#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で新サーバ構築)