なーお さんの日記
本日、朝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 |
|
感想
なにはともあれ、山は越えてほっとしているところ。 やはりテスト環境がないと今回のようなバージョンアップは無理だねえ。
コメント一覧
投稿ツリー
-
[Linux] php,mysqlのアップデート
(shige-p, 2009/5/5 12:23)
-
Re: [Linux] php,mysqlのアップデート
(なーお, 2009/5/5 15:22)
はじめまして。
同様の件でいろいろ調べていて、こちらにたどり着きました。
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で違うんですね。
ご報告ありがとうございました。