本サイトはJoomla!で運用しているのですが、最近Joomla!が2.5.xにバージョンアップしているので、このサイトもアップデートしようと思ったら、現在借りているさくらのレンタルサーバーのApacheが1.3系のためアップデートできないことがわかりました。
なので、当面はJoomla!2.5系は諦めて、Joomla!1.5の最新版でお茶を濁すことにしたのですが、その際さくらのレンタルサーバーのMySQLも4.0から5.5にアップデートしていることに気づいたので、これだけでもアップデートしてみることにしました。
とはいえ、せっかくなので、さくらのレンタルサーバーをもう1台借りて、テスト用サーバーと公開サーバーの2本立てでの運用を目指してみます。大まかな作業の流れは次のようになります。
- さくらのレンタルサーバーを1台追加で借りる
- 元の公開サーバーのJoomla!とMySQLのバックアップを取り、新サーバー(テスト用サーバー)へコピーする
- 公開サーバーのMySQLを5.5に上げる
2.で新サーバーが使うMySQLのDBを5.5で作れば、4.0から5.5への移行テストも兼ねられるという寸法です。ところが、この一連の作業が意外とはまったので、忘れないようにまとめておきます。
新サーバーへのコピー
さくらのレンタルサーバーを追加で借りる部分は飛ばします(スタンダードを借りました)。その後の作業をまとめると次のようになりました。
- 公開サーバーのJoomla!のディレクトリをtarで固めておく
- 公開サーバー(MySQL4.0)のphpmyadminでログイン
この時、ログイン時の言語を必ず、「utf-8」にする - データベースをエクスポートする
圧縮無、文字コード変換なしとします - エクスポートしたファイルをテキストエディタで開き、SQL文を修正する
TYPE=MyISAM → ENGINE=MyISAM に修正
修正しないと下記のようなエラーが表示されます
(参考サイト)
http://blog.infinity-dimensions.com/2012/02/mysql-4x-export-5x-import-1064-type.html - 新サーバーでDBを作成
MySQL5.5で作成し、文字コードはutf-8としておく - 新サーバーのphpmyadminでログインし、4で修正したファイルから、作成したデータベースのインポートを行う
この時文字コードはutf-8を指定する
特に問題がなければ、エラーが表示されず、これでインポートが完了するはず - 公開サーバーの設定ファイルを新サーバーへもコピーしておく
php.ini(実際は、さくらのコントロールパネルから設定)
.htacess及びエラーメッセージファイルを公開サイトからコピー - 新サーバーのJoomla!の設定を修正
joomlaディレクトリにある、configuration.phpを開き
DBサーバー名、DB名、ユーザー名、パスワード、ログファイルパス、tmpフォルダパス
を新サーバーに合わせて修正 - ブラウザから接続して、正しく表示されることを確認する
今回の目的の作業としてはここまでで終わりだが、ついでにテスト用サーバーとしての設定も行いました。
- ドメイン名を割り当てる
- テスト用のサーバーなので、不用意に接続されないように、.htaccessに特定のIPアドレス以外は接続させないように設定
ここで、ポイントは2.のログイン時の文字コード設定でした。
phpmyadminのバージョンが2.11.11だったのですが、ログイン時の文字コードとして『日本語(euc)』や『日本語(utf8)』などが選択可能になっています。最初、特に気にせず、『日本語(euc)』でログインしていたのですが、エクスポート時の文字コードを変更しても、インポートの文字コードを変更しても、うまくいかず新サーバーで文字化けが発生していました。
たまたま『日本語(utf8)』を選択して、エクスポートしたファイルを見ると文字化けがなかったので、不思議に思い、いろいろと調べると、下記資料にあるように、ここの文字コードがデータベースのエクスポート時の文字コードに影響を与えるようです。
http://stn8.blogspot.jp/2012/01/phpmyadmin.html
なお、MySQL4.0での文字コードを調べてみると、表示はlatin1になっていました。
ただ、Joomla!は内部的にutf8でデータを格納しているようなので、utf8でエクスポートすることで問題なくインポートができるようになりました。
(参考サイト)
公開サーバーのDBをMySQL5.5へ
ここまでくれば、公開サーバーのMySQLを4.0から5.5に変更するのは難しくありません。さくらの説明の通り、一旦MySQL4.0で作成したDBを削除して、MySQL5.5で作成し直せばOKです。
あとは、上記の手順と同じくエクスポートして修正済みのsqlファイルを使って、DBにデータを戻せばよいことになります。
ただ、さくらのレンタルサーバーのMySQLが5.5になるとデータベース名やパスワードの制約がMySQL4.0の時と変わってしまうので、Joomla!側の設定も変更してやる必要があります。
これで、無事にDBがMySQL5.5になりました。
(2012/8/15追記)記事の空白文字が文字化け
上記で問題ないと思っていたら、最近いくつかの記事で半角空白文字が『ツꀀ』のようになっていることが判明しました。どうも、MySQLのデータを移行する際に文字化けしていたようです(残念ながら詳細な経緯は不明)。
似たような経験している人も多くいるようです。
- http://blogjp1.m-yuuki.com/2011/03/31/wordpress%E3%81%AE%EF%BE%82%EA%80%80/
- http://atmarkit.mine.nu/blog/?p=282
仕方ないので、phpMyAdminより、記事中の『ツꀀ』を空白に置換しました。
UPDATE jos_content SET `introtext` = REPLACE(`introtext`, 'ツꀀ', ' '); UPDATE jos_content SET `fulltext` = REPLACE(`fulltext`, 'ツꀀ', ' ');
一応、無事直ったみたいです。他に問題がなければいいんだけどな。