PHP5.3.3をCentOS6にYUMインストール

さくらVPSにPHP5.3.3をインストールする方法をご紹介いたします。

さくらVPSにPHP5.3をインストールした経緯

さくらVPSには2つ契約しており、2つ契約しているうちの1つには、PHP5.3.3を無事インストールでき、後日契約したもうひとつも同じように5.3.3にアップグレードしていたところ、何を勘違いしたか5.3.4rc1を入れてしまっていたのです。
ミスというか勘違いというか・・・。

それで、rcといえどもそんなに問題は無いだろうとそのまま運用を続けていたわけですが、「なんだかおかしい?」と確定的ではないのだけど感覚的に嫌な予感がするので、PHP5.3.3にしようと思った次第です。

さくらVPSにはデフォルトで、CentOSが入っており、PHPは5.1.6が標準で入っています。

ですがですね。
PHP5.1.6って中途半端・・。
使えない。。。

なにが使えないってクロージャ。そしてラムダ。そして無名関数。
その為には、PHPならば5.3.3以上は必須です。

ちなみに本ブログは、さくらVPSに設置しており、下記に記す作業を行ったサーバそのものになります。

PHP5.3.4からPHP5.3.3に落とすのに罠が色々

そもそも、5.3.4にアップしたときに、remiを使っていたのです。
今となっては詳しいことは忘れてしまいましたが。
(本日の作業の時に確認すれば良かったのですが確認前に消したので)

まず、PHPを削除しました。

yum remove php php-*

で、試行錯誤の過程のコマンドは省略します。

とりあえず、PHPを削除したので、PHP5.3.3用と思われるremiとepelを落として、セットして、yum install php
プラス、必要なモジュールの数々をyum

で、httpd の再起動。

ブラウザで無事に動いているか確認。

Headers and client library minor version mismatch

ってなんですか???

これは、PHPからMySqlを利用しているページで起こっていました。

「ヘッダーとクライアントのライブラリのバージョンがミスマッチですよ」っと。

どうやらMySqlがおかしいようです。
それはPHPのエラーログから分かりました。
PHPがMySqlへの接続に失敗しているのです。

考えられることは1つ。

「PHPのremiとMySQLのremiが合ってない?」

となれば、MySqlも一旦削除して、PHPと同じremiでインストールし直せばOKでしょ。

ということで、MySQLも削除。PHPも削除。

そして、両方をインストールして、Go!

・・・

ダメ。

yum --enablerepo=remi,epel install mysql

の時点で、ストップ・・・。

さらに悪化しました。。。

ここからが長かったのですよ。原因究明までに。
で、そのあたりはスルーして、そろそろ答え書いて終わりにします。

PHP5.3.4 → PHP5.3.3 にするときの注意

※ yumでインストールしている前提で書いています。

まず、yum にて、phpとmysqlを削除しておきます。

yum remove php php-* mysql mysql-*

次にですが、そもそも5.3.4にするためにremiを使ったと思います。
なので、remiを削除しておかねばなりません。

cd /etc/yum.repos.d
ls -la

します。

epel-XXXXX.rpm
remi-XXXXX.rpm

この名前のファイルがありましたか?
XXXXXの部分は、バージョンとか色々変わります、「epel-」もしくは「remi-」で始まり、「.rpm」で終わるファイルです。

rm epel-XXXXX.rpm
rm remi-XXXXX.rpm

で、削除しておきます。
※ 私は rm しましたが、 「rpm -e」のほうが良いのかもしれません。(未検証)

ここから先は、通常のPHP5.3.3をインストールするときと同じです。

さくらVPSにPHP5.3.3をインストール

さらの状態のさくらVPSで、PHP5.3.3をインストールする場合は、ここから始めます。

# 移動します。
cd /etc/yum.repos.d

# epelとremiをwgetします。
wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

# インストールします。
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

# mysqlをインストール (さくらVPSはCentOsのx86_64なのでx86_64)
yum --enablerepo=remi,epel install mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64

# サーバ起動時に自動でmysqlが起動するようにします。(再インストールするとoffになってるので)
/sbin/chkconfig --list mysqld
/sbin/chkconfig mysqld on
/sbin/chkconfig --list mysqld

# mysqlを起動
/etc/init.d/mysqld start

# PHPをインストールします。
yum --enablerepo=remi,epel install php
yum --enablerepo=remi,epel install php-mysql php-mbstring php-xml php-cli php-common php-devel php-gd php-mcrypt php-pdo php-eaccelerator

# バージョンの確認
php -v
mysql -V

# webサーバの再起動
/etc/init.d/httpd restart

ここまでくれば、ブラウザを起動して無事に動作しているか確認してみましょう。
たぶんOKのはずです。

稼動中のwebサーバでPHPやMySqlの更新など

今回の作業は、まさに稼動中のサーバで行ったのですが。。。
あまり褒められることではないですね。
きちんと、「メンテナンス中」と事前に案内を出しておいたほうが良いと思います。

で、PHPの再インストールですが、再インストールをするにあたって懸念点は特にありませんでした。
しいてあげれば、上記のように、メンテナンスの通知ですね。
私としては、yumで入れ替えるだけなので、10分そこそこで終わるつもりだったのですが。

MySQLの再インストールは少々躊躇しました。
一応知識としては知っていたけど、実践する機会があまりないので「大丈夫かな?」と思っていたのが、MySQLの設定とデータそのものは残るのか?引き継がれるのか?ということでした。

幸いなことに、その時午前●時。
実は、毎日自動で行われるバックアップ処理が、ちょうど完了した直後だったんです。
最悪の場合、バックアップはほぼ最新であるからどうにでもなれ的にですね。

それでmysqlも削除して入れなおしたのですが、結果は予想通り以前のままで残りました。
1点、chkconfig の設定がoffになるくらいで、mysqlのパスワードも以前のまま、データベースも以前のまま引き継がれました。

実験サーバ、勉強用サーバとしてさくらVPSはいかがですか?

月額980円で、自分だけのサーバが持てるのは便利です。

自宅サーバなども良いのですが、サーバ本体をいくら安く作っても、電気代も掛かりますし、夏は熱の問題もあります。光回線がない環境ですとネットワーク速度の問題もでてきます。
それらがぜーーーんぶまとめて月980円で面倒見てもらえるなら安いものです。
実際使ってみてますが、性能も思った以上にあります。

実は、そこそこ重い処理をさくらVPSと某社専用サーバ(月1万以上)とで試したりもしたのですが、なぜか専用サーバよりも、VPSであるさくらVPSのほうが快適でした。
(あくまでも体感ですのでベンチとるとそうでもないのかもしれませんが)