windows8.1にvagrantでCentOS6.4+php4+mysql4を作った

目的

Windows8.1(あえて64bitと明記)でvagrantでテストサーバを立てる。
都合上、php4/mysql4/apache2で構成。

用意するもの

vagrant 1.3.5(最新)
VirtualBox 4.2
現在4.3が最新ですが、Windows系64bitではVirtualBox Host-Only Ethernet Adapterがインストールできず積みます。(積みました)
ソースはここ→ https://github.com/mitchellh/vagrant/issues/2392
お好みのboxファイル
今回は http://www.vagrantbox.es から CentOS 6.4のminimalなものを探して、
https://github.com/2creatives/vagrant-centos/releases/tag/v0.1.0 構成のものを拝借。
Windows Powershell
これはお好み。コピペとサイズ変更が可能なDOS窓がほしかったんや。

やること

VirtualBoxをインストール

ダブルクリックのみ

vagrantをインストール

ダブルクリックしてインストール→再起動後、vagrant upまで。

> vagrant add box CentOS6_4 https://github.com/2creatives/vagrant-centos/releases/download/v0.1.0/centos64-x86_64-20131030.box

> mkdir CentOS6_4_php4_mysql4
> vagrant init

CentOS6_4_php4_mysql4/Vagrantfileを開いて

#書き換え
config.vm.box = "base"

↓ ↓

config.vm.box = "CentOS_6_4"

#以下は追記

config.vm.boot_timeout=60

保存したら

> vagrant up

結構待つ。

起動したら、以下の作業はすべてbox内。

> vagrant ssh

httpdほかインストール

sudo基本なので省略。

$ yum -y install httpd-devel bzip2-devel openssl-devel libjpeg-devel libpng-devel gmp-devel ncurses-devel flex gcc make

mysql4のインストール

sudo基本なので省略。

#php5用のmysql-libsが入っていて邪魔なので削除
$ yum remove mysql-libs

#perl-DBIがなくてインストールできないので先に入れる
$ yum install perl-DBI

#mysql4を入れる(チョイスはなんとなく)
$ wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-server-4.0.24-0.x86_64.rpm
$ wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-client-4.0.24-0.x86_64.rpm
$ wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-devel-4.0.24-0.x86_64.rpm
$ wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-share-4.0.24-0.x86_64.rpm

#順番に実行する
$ rpm -ivh ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-server-4.0.24-0.x86_64.rpm
$ rpm -ivh ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-client-4.0.24-0.x86_64.rpm
$ rpm -ivh ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-devel-4.0.24-0.x86_64.rpm
$ rpm -ivh ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-share-4.0.24-0.x86_64.rpm

順番に実行する。

すんなり入る。

設定ファイルはfindして、所定の位置にコピーする

$ sudo find / -name "*my*cnf"
$ sudo cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

文字コードの設定など。

php4のインストール

sudo基本なの(ry

configure直前まではこちらのサイト通り。

CentOS6でphp4とphp5を共存させる
(openssl.soの流れも行う)

configreオプションは

$ ./configure
 --prefix=/usr/local/php4
 --with-apxs2=/usr/sbin/apxs
 --with-mysql
 --with-gd
 --with-jpeg-dir=/usr
 --with-png-dir=/usr
 --with-zlib
 --with-bz2
 --with-openssl
 --with-gettext
 --with-gmp
 --with-iconv
 --with-ncurses
 --enable-exif
 --enable-gd-native-ttf
 --enable-memory-limit
 --enable-mbstring
 --enable-mbstr-enc-trans
 --enable-bcmath
 --enable-trans-sid
 --enable-sysvsem
 --enable-sysvshm

–enable-mbregex(これが原因でmakeコケる、たぶん使わない)と–with-sqlite(今回は使わない)を削除した。

※なお、makeまで進んでコケたときは、configre再実行前に

$ make distclean

する。

$ make

$ make install

ここから先も、前述のサイトの通りhttpd.confの書き換え、AddHandlerも行う。

php.iniの設定も忘れずに。

そのあとは

vagrant sshを抜けて、CentOS6_4_php4_mysql4/Vagrantfileを開いて

#行頭の#をとる
config.vm.network :private_network, ip: "192.168.33.10"

保存したらコンソールに戻って

> vagrant reload

httpd、mysqlの起動設定とかもろもろやって、動作確認が取れたら

> vagrant package

で、もう二度とこの面倒くさいことをせずとも、同じ環境がpackage.boxから復帰できるようになります。

めでたしめでたし。

余談

phpからmysqlに接続するときに/tmp/mysql.sock関連のエラーが出たら、mysql起動しているかどうか確認して、起きているならmy.cnfの

socket = /var/lib/mysql/mysql.sock
socket = /tmp/mysql.sock

とする。

「Client does not support authentication protocol」エラーが出たら、
こちらを参考に http://d.hatena.ne.jp/psquare/20061207/p1 なんか腑に落ちないけどテスト環境だからまあいいかな処理を施す。