運用中本番環境と同規模の環境を構築したい人生だった
ただしサーバの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で上記環境再現に挑戦するもことごとく失敗。
かなり真理に近づいたけど、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をここから取り寄せる。
しかしnetinstallerだとVMWareの自動インストーラーが反応しないようだ。仕方ないのでCUIインストールウィザードで入れる。この辺の詳細は割愛。今回は最小パッケージ構成にした。インストール元はftpを選択する。
server:ftp.riken.jp
directory:Linux/centos/5.11/isos/i386/
rootでログイン後、即
$ adduser <一般ユーザー名>
$ passwd <パスワード>
$ cd /usr/sbin
$ ./visudo
一度パッケージを全更新しておく。
sudo yum update
ソースからrpmを作る
rpm製造はrootで作業をするものではないらしい。うっかり環境汚染するからだろうね。そのため、以下をユーザー権限で実行する。
$ 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密造
$ 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
$ 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系のため。理不尽である。
$ sudo yum install mysql mysql-devel
$ ./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サーバ周辺を準備する
$ sudo yum install httpd
$ sudo /sbin/chkconfig httpd on
$ sudo rpm -i --force ./php-5.3.19-1.i386.rpm
httpdとの依存関係が解消できないので 新しいほうで強制上書き する。あとはphpハンドラを書いて終了。
AddType application/x-httpd-php .php
httpdをroot以外で動かす
$ sudo /usr/sbin/groupadd httpd
$ sudo /usr/sbin/useradd -g httpd -d /var/empty/httpd -s /sbin/nologin httpd
User httpd
Group httpd
$ sudo /bin/chown -R httpd:httpd /var/www/
$ sudo /etc/init.d/httpd restart
MySQL4.0を入れる
$ sudo yum remove mysql
依存モジュールが有ると警告されるが強気で全部消す。
$ 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
こちらを参考にした。
古いMySQLは公式で配られていないので注意すること。
こちらなどを参考にする。
phpMyAdminを入れる
本番環境のphpMyAdminは2.7.0-pl1だが、見つけられなかったので2.11.11.3を入れる。
$ 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
色々不穏なエラーが出ているが、一通り動いたのでミッションコンプリート。
詰まったらこの辺でも探して頑張ろう。