----
今までは、1つのLINUXマシンに MySQL サーバも入れてMovable Type を使っていたが、マシンが弱ってきたので amazon の AWS を使って再構築してみることにした。
DBサーバのサービスである RDS と、LINUXマシンのEC2をそれぞれ1インスタンスずつ起動して連動するというシンプルな構成。
既存DBのデータをRDSに移し、EC2 に MovableType をインストールして起動、もともとのデータはMTバージョン4のデータで、今回MTバージョン5をインストールしたので、データをアップグレード。
と、ここまでは順調だったのだが、MovableTypeの管理画面を起動してガッカリ。
データがすべて文字化けしている。
DBのエクスポートとインポートの文字コードが違っていたのかと思い、mysqldump や mysql コマンドのオプションで文字コードを指定してみるが、ぜんぜん直らない。。。
そしてハマりました。
MT5にしたのがまずかったのかと思い、MT4の環境を持ってきて起動しても化けている。
試行錯誤の結果、原因はDB自体の文字コードであることが判明。
RDSでDBを作成するときにデフォルトだと、latin1 みたいなコードになってしまうようだ。
では、そこのコードを変更するのはどうすれば良いか、
DBのインスタンスには DB Parameter Group というものが関連付けされていて、この DB Parameter Group の設定に文字コードの値が入っているようだ。
早速変更、と思ったら最初から割り当てられている Parameter Group は変更不可なのだそうな。
しょうがないので、新しいParameter Group を作成し、インスタンスに関連付けし、それから文字コードの値を変更しよう。
で、この変更がまた大変、AWSのコンソールから変更できるのかと思いきや、ツールをダウンロードして、設定して、コマンドラインで変更をする、ようだ。。。
コマンドラインツールキットをダウンロードして、展開。
コマンドプロンプトを起動し、以下のような環境変数をセット(自分の環境にあった値を設定する。バッチファイルにしておくと後で使うときに便利)
SET AWS_RDS_HOME=C:\\tmp\RDSCli\RDSCli-1.6.001
SET Path=%Path%;%AWS_RDS_HOME%\bin
SET EC2_REGION=ap-northeast-1
SET AWS_CREDENTIAL_FILE=%AWS_RDS_HOME%\credential-file-path.txt
AWS_CREDENTIAL_FILE で指定したファイルにアカウント情報を記述(credential-file-path.templateというファイルがあるのでそれを参考に)
で、
rds-modify-db-parameter-group GROUPNAME -p "name=character_set_database, value=sjis, method=pending-reboot"
みたいなコマンド(GROUPNAMEは実際のパラメタグループ名を書く、文字コードはsjisとかutf8とか)を実行する。
他にもいくつか文字コードの設定をして、DBインスタンスを再起動
DB作成→データ移行→MovableType 表示
で、文字化けせずに表示されました!
で、
rds-modify-db-parameter-group GROUPNAME -p "name=character_set_database, value=sjis, method=pending-reboot"
みたいなコマンド(GROUPNAMEは実際のパラメタグループ名を書く、文字コードはsjisとかutf8とか)を実行する。
他にもいくつか文字コードの設定をして、DBインスタンスを再起動
DB作成→データ移行→MovableType 表示
で、文字化けせずに表示されました!
コメントする