Vagrant

PHP5.3.3の環境を作成する方法

こんにちは!ともです(@_tomo_engineer)!

PHP5.6のサポートが終了するらしいですが、実際にはPHP5.3とかで動いてるシステムってものがあるんですよね。

僕も顧客の本番環境がPHP5.3.3と言う状況に会いまして、開発環境としてPHP5.3.3の環境を整える必要になりました。

今回はVagrantでPHP5.3.3の環境を作成する方法についてまとめたいと思います。

Vagrant

Vagrantとは『ホスト型仮想化』と呼ばれる、ホストOSにゲストOSをインストールするタイプの仮想環境を作成するソフトウェアです。

VagrantFileに設定項目を記述する事でVirtualBoxの設定を行う事ができ、ファイルを共有する事で開発者が同じ環境を簡単に立ち上げる事を可能にします。

ですので、事前にVagrantVirtualBoxの導入をする必要があります。

vagrant init “ボックス名”

vagrant init centos/6

上記のコマンドによりVagrantFileの雛形が作成されます。下記のVagrantFileは今回不必要な部分を取り除きました。

# このブロック内に設定コードを記述する
Vagrant.configure("2") do |config|
  # 利用するboxを設定する
  config.vm.box = "centos/6"
  # ネットワークの設定
  config.vm.network "private_network", ip: "192.168.33.10"
  # フォルダ同期の設定
  config.vm.synced_folder ".", "/vagrant_data"
end

vagrant add box “ボックス名”

vagrant box add  centos/6

これによりcentos6.9のボックスをダウンロードする事ができます。

This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) libvirt
3) virtualbox // ←3)を選択
4) vmware_desktop

上記の様な選択を迫られますが、今回はvirtualboxをboxのproviderとしますのでvirtualboxを選択します。

boxのダウンロードには私の環境では2時間程かかりました。ネットワークが不安定だったり、スリープモードになると途中で切れますので注意してください。

vagrant up

『vagrant up』により仮想環境を立ち上げます。

しかし次の様な共有フォルダのマウントに失敗する場合があります。

Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem “vboxsf” is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

こればVirtualBoxとGuestOS間でのバージョンの不一致が原因です。

vagrant plugin install vagrant-vbguest

『vagrant-vbgest』と言うプラグインをインストールする事でこの問題を解決できます。

このプラグインをインストール後

vagrant reload

をします。バージョンを不一致を解決するために色々なモジュールがインストールされて行きます。

その後

vagrant ssh

でVMにログインします。

su -
パスワード:vagrant

で管理者権限となり作業を進めます。

Apacheの導入

Apacheの導入

yum install -y httpd

このコマンドによりApacheをVMにインストールします。

ドキュメントルートの変更

ドキュメントルートは任意ですが、今回はVM側とホスト側の共有フォルダである『/vagrant_data』をドキュメントルートとします。

『/etc/httpd/conf/httpd.conf』にApacheの設定ファイルがありますので、それを次の様に編集します。

# /etc/httpd/conf/httpd.conf
DocumentRoot "/vagrant_data" // ここ!

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/vagrant_data"> // ここ!
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

index.htmlの作成

ブラウザに表示させるファイルをindex.htmlをVagrantFileがあるディレクトリで作成します。

#index.html
Hello World!

192.168.33.10をブラウザで叩く

ブラウザのURLで192.168.33.10を叩きます。このIPはVagrantFileで設定したprivate_ipとなります。

おそらく次の様な画面になると思います。

Apacheは動作している事が分かりますが、index.htmlのHello Worldが表示されません。

SELinuxを無効化

SELinuxと言う強力なアクセス制御のソフトウェアがCentOSには入っています。

下記の記事にSELinuxについて書きましたので一読ください。

setenforce 0

でSELinuxを無効化する事ができます。開発時には邪魔になる事があるのでSELinuxをきっておきます。

再度『192.168.33.10』を叩くと次の様に見えます。

hello worldが表示されました。

PHP5.3.3の導入

yum install php

こちらのコマンドでPHPをインストールできます。

php -v

でバージョンを確認すると

PHP5.3.3がインストールできている事が分かります。CentOS6.9ではPHP5.3.3が入ってくれますが、CentOS7では新しいバージョンがインストールされます。

まとめ

VagrantでCentOS6.9+Apache2.1.5+PHP5.3.3の環境を作成する方法について書きました。

CentOS7でPHP5.3.3を入れるのは大変で、PHPのソースからmakeファイルを作成して等しないといけないので注意してください。

環境構築で何か役に立てたのであれば幸いです。