CentOSにPHP5.3系とMySQL4.0系を入れる

#運用中本番環境と同規模の環境を構築したい人生だった
**ただしサーバのrootはおろかconsole接続もできないものとする**
##運用中本番環境について
判明している大まかな条件は下表のとおり。

|module|version|
|:--|--:|
|OS Kernel|2.4.29-rc2 #1 SMP Thu May 8 15:42:53 JST 2008 i686|
|apache|不明 Apache API Version:19990320|
|MySQL|4.0.24-standard-log|
|php|5.3.19|
|phpMyAdmin|phpMyAdmin 2.7.0-pl1|
見る人が見れば分かる。おっと全裸になるなよ。
***
結構な時間や手間をかけて、debian3.1(sarge)や、[CentOS3.9](http://max01.skr.jp/blog/centos3/)で上記環境再現に挑戦するもことごとく失敗。
かなり真理に近づいたけど、libXML2のコンパイルでコケるので、Kernel 2.4.xでの実現は色々とムリと判断。妥協する。現実は無情である。
`Linux centos 2.6.18-406.el5 #1 SMP Tue Jun 2 17:26:20 EDT 2015 i686`
それほど大きな差にはならないと思いたい。
##実際に開発環境を作る
### OSインストール
VMWare上に構築するよー。OSのISOを[ここ](http://ftp.riken.jp/Linux/centos/5.11/isos/i386/CentOS-5.11-i386-netinstall.iso)から取り寄せる。
しかしnetinstallerだとVMWareの自動インストーラーが反応しないようだ。仕方ないのでCUIインストールウィザードで入れる。この辺の詳細は割愛。今回は最小パッケージ構成にした。インストール元はftpを選択する。

```:インストール元FTP設定情報
server:ftp.riken.jp
directory:Linux/centos/5.11/isos/i386/
```

rootでログイン後、即

```bash:一般ユーザー追加とsudo権限追加
$ adduser <一般ユーザー名>
$ passwd <パスワード>
$ cd /usr/sbin
$ ./visudo
```

一度パッケージを全更新しておく。
`sudo yum update`
###ソースからrpmを作る
rpm製造はrootで作業をするものではないらしい。うっかり環境汚染するからだろうね。そのため、以下をユーザー権限で実行する。

```bash:checkinstallの実行環境変数設定とビルドを実施
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}  
$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
$ wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
$ sudo yum install rpm-build gcc gcc-c++ glibc glibc-devel
$ tar zxvf ./checkinstall.tar.gz
$ cd ./checkinstall-1.6.2
$ ./configure
$ make
$ make install
```

これで
`$ sudo /usr/local/sbin/checkinstall`
が使えるようになる。
今後、checkinstallで作成したrpmは`/home/<user>/rpmbuild/RPMS`に保存される。

### php5.3.19のrpm密造
```bash:ソースのダウンロードと展開
$ wget http://museum.php.net/php5/php-5.3.19.tar.gz
$ tar zxvf ./php-5.3.19.tar.gz
$ cd ./php-5.3.19
```

```bash:phpのビルドに必要なモジュール一式のインストール
$ sudo yum install http-devel libxml2-devel openssl-devel　
$ sudo yum install freetype 
$ sudo yum install gdbm-devel libXpm-devel libjpeg-devel libpng-devel freetype-devel
$ sudo yum install curl-devel libmcrypt-devel libxslt-devel
```
phpのビルド用に使わないけどMySQL5.0.95を入れておく。本番環境のPDOドライバが5系のため。理不尽である。

```bash:
$ sudo yum install mysql mysql-devel
```

```bash:本番環境と同じオプションでconfigureとmake
$ ./configure --with-apxs2  --disable-ipv6 --enable-mbstring --enable-mbregex --with-gd --with-zlib  --with-mcrypt --without-pgsql --enable-libxml --enable-xml --enable-dom --with-xsl --with-sqlite --with-mysql --with-pdo-mysql --with-pcre-regex --with-openssl --with-curl --with-iconv --enable-json --enable-pdo --with-pdo-sqlite --without-pdo-odbc --enable-exif --disable-fileinfo --enable-gd-jis-conv --enable-sqlite-utf8 --enable-zend-multibyte --with-db1 --with-gdbm
$ make
$ sudo /usr/local/sbin/checkinstall
```
php-5.3.19-1.i386.rpmの密造完了。まだここではインストールしない。

### wwwサーバ周辺を準備する
```bash:apache2(httpd)を入れる
$ sudo yum install httpd
$ sudo /sbin/chkconfig httpd on
```
```bash:自家製php5.3.19を入れる
$ sudo rpm -i --force ./php-5.3.19-1.i386.rpm
```

httpdとの依存関係が解消できないので **新しいほうで強制上書き** する。あとはphpハンドラを書いて終了。

```vi:/etc/httpd/conf/httpd.conf
AddType application/x-httpd-php .php
```

### httpdをroot以外で動かす
```bash:httpd用のユーザを追加する
$ sudo /usr/sbin/groupadd httpd
$ sudo /usr/sbin/useradd -g httpd -d /var/empty/httpd -s /sbin/nologin httpd
```
```vi:/etc/httpd/conf/httpd.conf
User httpd
Group httpd
```
```bash:最後の仕上げ
$ sudo /bin/chown -R httpd:httpd /var/www/
$ sudo /etc/init.d/httpd restart
```

### MySQL4.0を入れる
```bash:MySQL5をアンインストール
$ sudo yum remove mysql
```
依存モジュールが有ると警告されるが強気で全部消す。

```bash:MySQL4を入手
$ wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-server-4.0.24-0.i386.rpm
$ wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.0/MySQL-shared-compat-5.0.96-1.rhel5.i386.rpm
$ sudo rpm --test -ihv MySQL-shared-compat-5.0.86-1.rhel5.i386.rpm
$ sudo rpm -ivh MySQL-shared-compat-5.0.86-1.rhel5.i386.rpm
$ sudo rpm -ivh MySQL-server-4.0.24-0.i386.rpm
```

[こちら](http://e-garakuta.net/techinfo/doku.php/linux/mysql)を参考にした。
古いMySQLは公式で配られていないので注意すること。
[こちら](http://dbstudy.info/mysql/)などを参考にする。

### phpMyAdminを入れる
本番環境のphpMyAdminは2.7.0-pl1だが、見つけられなかったので2.11.11.3を入れる。

```bash:
$ wget wget https://files.phpmyadmin.net/phpMyAdmin/2.11.11.3/phpMyAdmin-2.11.11.3-all-languages.tar.gz --no-check-certificate
$ sudo tar zxvf phpMyAdmin-2.11.11.3-all-languages.tar.gz
$ sudo mv phpMyAdmin-2.11.11.3-all-languages myadmin
$ sudo mv myadmin /var/www/html 
```
色々不穏なエラーが出ているが、一通り動いたのでミッションコンプリート。

詰まったらこの辺でも探して頑張ろう。

- [Rpmfind mirror](http://fr.rpmfind.net/)
- [repoforge](http://pkgs.repoforge.org/)
- [rpmsearch](http://rpm.pbone.net/)