TOP  >  なーお'nぶろぐ  >  なーお  >  Web  >  [Linux] php,mysqlのアップデート

なーお さんの日記

 
2007
12月 23
(日)
23:59
[Linux] php,mysqlのアップデート
本文

本日、朝5時から、公開サーバーのphp、mysqlのバージョンアップを敢行しました。

バージョン

  1. php  4.4.7 → 5.2.3
  2. mysql 4.0.25 → 5.0.27

 巷のうわさで特に危険だったのは、mysqlのほうでして、 v4.0→4.1でマルチバイト文字の処理が変わっているためです。
 今年の年初にxoopsを始めたとき、手順が悪くてmysql4.3にせずに旧バージョンで始めてしまったのが悔やまれますが、そろそろアップしないと機能に制約が出そうでしたので、時間がとれそうな今やっておこう、ということで始めました。

準備

  1.  先週末、公開サーバーのRaid1+LVMディスク領域を、60Gb→200Gbに拡げ、VMWare-Serverの仮想OS(公開領域)をコピーしてテスト環境を作りました。
  2.  テスト環境では、phpとmysqlをそのままアップデートしたり、色々テストしてみましたが、 結局のところ データをSQLで落としておいて、一旦mysql4.0.25はアンインストールしてから、mysql5.0.27をaptでクリンインストールしてデータをSQLでリストアするのが確実、ということで何度か練習。 データのバックアップ/リストアにはphpMyAdminを使います。
  3.  練習の成果として、MySQLの設定のポイントや、いくつかのデータベース復旧の際のエラー回避方法を事前に知っておけるなどが挙げられます。

本日の手順(詳細は割愛)

 細かく書けばきりが無いし、WebminやphpMyAdminを多く使ったので、あまり残すべきテキストも無いため、さらっと行きます。

前段階

  1. xoopsサイトを一般設定でクローズする。
  2. 各データベースを、phpMyAdminでバックアップ。 (延べ7サイト分)
  3. mysql4、php4をアンインストール。
  4. /var/lib/mysql ディレクトリをリネームしてバックアップとしておく。
  5. mysql5、php5 をインストール。

mysql設定

  1. mysqlの初期設定
    1
    2
    3
    
    # mysql -u root -p
    mysql>  set password for root@localhost=password('******');
    mysql> GRANT ALL ON *.* TO username@localhost IDENTIFIED BY '******';
    などなど・・

  2. /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

データベースのインポート

  1.  mysqlをスタート。
    1
    
    /etc/rc.d/init.d/mysql start

  2.  phpMyAdminを使ってmysqlに接続
  3.  各データベースを作成し、バックアップファイルからインポート
    1. ファイルの文字セット → 「ujis」
    2. オプション-SQL互換モード → 「MYSQL40」 (無くても大丈夫?)
    3. エンコーディング変換: 「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
// 画面出力処理
// 必要に応じて文字エンコードを変換後表示
	function display()
	{
		$this->outPut = $this->outPut.$this->debugMessage.'</body></html>';
 
		if(SCRIPT_CODE != HTML_CODE)
		{
// ここです		$this->outPut = mb_convert_encoding($this->outPut,HTML_CODE,SCRIPT_CODE);
		}
 
		echo $this->outPut;

D3blogの日付

 D3blogの日付がフォーマットされず、シリアル値のまま。

 ・・現在調査中。。 :-?

感想

 なにはともあれ、山は越えてほっとしているところ。 やはりテスト環境がないと今回のようなバージョンアップは無理だねえ。

閲覧(24488)

コメント一覧

投稿ツリー


shige-p   投稿日時 2009/5/5 12:23

はじめまして。

同様の件でいろいろ調べていて、こちらにたどり着きました。
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

なーお  投稿日時 2009/5/5 15:22

shige-pさん、こんにちは。
XUGJで、書き込み拝見しています。

なんと、php5でX2とXCLで違うんですね。
ご報告ありがとうございました。



新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ