なーお さんの日記
本日、朝5時から、公開サーバーのphp、mysqlのバージョンアップを敢行しました。
バージョン
- php 4.4.7 → 5.2.3
 - mysql 4.0.25 → 5.0.27
 
 巷のうわさで特に危険だったのは、mysqlのほうでして、 v4.0→4.1でマルチバイト文字の処理が変わっているためです。
 今年の年初にxoopsを始めたとき、手順が悪くてmysql4.3にせずに旧バージョンで始めてしまったのが悔やまれますが、そろそろアップしないと機能に制約が出そうでしたので、時間がとれそうな今やっておこう、ということで始めました。
準備
- 先週末、公開サーバーのRaid1+LVMディスク領域を、60Gb→200Gbに拡げ、VMWare-Serverの仮想OS(公開領域)をコピーしてテスト環境を作りました。
 - テスト環境では、phpとmysqlをそのままアップデートしたり、色々テストしてみましたが、 結局のところ データをSQLで落としておいて、一旦mysql4.0.25はアンインストールしてから、mysql5.0.27をaptでクリンインストールしてデータをSQLでリストアするのが確実、ということで何度か練習。 データのバックアップ/リストアにはphpMyAdminを使います。
 - 練習の成果として、MySQLの設定のポイントや、いくつかのデータベース復旧の際のエラー回避方法を事前に知っておけるなどが挙げられます。
 
本日の手順(詳細は割愛)
細かく書けばきりが無いし、WebminやphpMyAdminを多く使ったので、あまり残すべきテキストも無いため、さらっと行きます。
前段階
- 各xoopsサイトを一般設定でクローズする。
 - 各データベースを、phpMyAdminでバックアップ。 (延べ7サイト分)
 - mysql4、php4をアンインストール。
 - /var/lib/mysql ディレクトリをリネームしてバックアップとしておく。
 - mysql5、php5 をインストール。
 
mysql設定
- mysqlの初期設定
などなど・・
1 2 3
# mysql -u root -p mysql> set password for root@localhost=password('******'); mysql> GRANT ALL ON *.* TO username@localhost IDENTIFIED BY '******'; - /etc/my.cnfの設定
コメント↓を外して有効にする。実はこれが肝です。 これをしないと、いくら頑張っても文字化けが解消されず。1
#skip-character-client-handshake 
php設定
- /etc/php5/php.ini 
1 2
file_uploads = On upload_max_filesize = 20M 
apache設定
- /etc/httpd/httpd.conf 
1 2 3
LoadModule php5_module modules/libphp5.so # AddModuleはApache2では必要ありません。Apache1のみ記述が必要です。 AddModule mod_php5.c 
データベースのインポート
-  mysqlをスタート。
1
/etc/rc.d/init.d/mysql start - phpMyAdminを使ってmysqlに接続
 -  各データベースを作成し、バックアップファイルからインポート
- ファイルの文字セット → 「ujis」
 - オプション-SQL互換モード → 「MYSQL40」 (無くても大丈夫?)
 - エンコーディング変換: 「none」
 
 
後作業
xmobileで文字化け
 metaタグには「Charset=Shif-JIS」と書いてあるし、アップデート前まで正常だったのに、どういうわけが分からないが文字化け。 ブラウザで見ても、文字エンコーディングを手動でshift-jisに変更すれば正常に表示される。
 → 結局、xmobile-class-Render.class.phpの以下の部分をコメントアウトして直った。
1 2 3 4 5 6 7 8 9 10 11 12  |  | 
感想
なにはともあれ、山は越えてほっとしているところ。 やはりテスト環境がないと今回のようなバージョンアップは無理だねえ。
コメント一覧
投稿ツリー
はじめまして。
同様の件でいろいろ調べていて、こちらにたどり着きました。
PHP: 5.1.6
MySQL: 5.0.22
XOOPS: XOOPS 2.0.16a JP(EUC-JP)
でOKだったのに、同じサーバーでXCL 2.1.6a(utf-8)だと☓。
文字化けはしているけれど内容的には○で文字エンコーディングを手動でshift-jisにするとトップページの先頭に
3バイト分のゴミが出力される(それ以外は文字化けなし)。
カット&トライでなーおさんと同じところにたどり着いて、他に同様の人はいないのかしら、と思ってぐぐったら
ビンゴ!!でした。
同じコメントアウトを2.0.16のほうでやると今度はこちらが文字化けしてしまうので、とりあえずSCRIPT_CODE=='utf-8P'だったらスルー、ってしましたが・・・。
以上報告でした。:-)
shige-p @ http://9demaio.com
shige-pさん、こんにちは。
XUGJで、書き込み拝見しています。
なんと、php5でX2とXCLで違うんですね。
ご報告ありがとうございました。

前の日記
