ゴール
この環境が構築できると、Shell のプロビジョニングにて Vagrant 内に、いつでも次の状態を復元できます。Mac 上での構築となりますがご了承ください。
- CentOS 6.5
- Apache 2以上
- PHP 5.3 以上
- PostgreSQL 9.3
事前準備
これまで基本的な準備は下記の通り実施してきました。
ここまで実行すると、Mac 上の vagrant に CentOS6.5 と Apache が導入できていると思います。ここからもう少し環境を整理してみます。
※ 上記を実施したと仮定して記載していきます。
PHP インストールと確認
まずは Vagrant のトップディレクトリに移動します。Mac 上ですので下記の通りです。
$ cd /Users/your_username/CentOS65
$ ls
Vagrantfile httpd.conf index.html
ここで、PHP用のファイルを準備します。
$ echo "<?php phpinfo(); ?>" > info.php
$ ls
Vagrantfile httpd.conf index.html info.php
ブラウザでアクセスしてみます。
$ open http://192.168.33.10/info.php
まだファイルの内容がそのまま表示されます。
ここで、プロビジョニングにて PHP 環境構築します。
Vagrantfile に設定を追加します。
-*- mode: ruby -*-
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "CentOS65"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
vb.gui = true
end
config.vm.provision "shell", inline: <<-EOT
# timezone
cp -p /usr/share/zoneinfo/Japan /etc/localtime
# iptables off
/sbin/iptatbles -F
/sbin/service iptables stop
/sbin/chkconfig iptables off
# PHP
yum -y install php # --- ここを追加
# Apache
yum -y install httpd
cp -a /vagrant/httpd.conf /etc/httpd/conf/
/sbin/service httpd restart
/sbin/chkconfig httpd on
EOT
end
設定後、ホスト側にてプロビジョニングします。
$ vagrant provision
エラーなく完了しましたら、仮想環境に接続します。
$ vagrant ssh
仮想環境内で PHP のバージョンを確認します。
[vagrant]$ php -v
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
今回はバージョン情報が確認できました。バージョンが確認できたらインストールは完了です。
さらにホスト側にてブラウザにアクセスして確認します。
$ open http://192.168.33.10/info.php
PHP のバージョン情報などが掲載されたページが表示されれば確認完了です。
PostgreSQL インストールと確認
2014年6月4日現在、下記公式サイトを確認すると、CentOS では、version 8.1 となります。今回は、最新の 9.3 を利用したいので、別の手法をとります。
現状、インストールされているか仮想環境上で確認します。
[vagrant]$ psql --version
インストールされていないので、特に何も表示されません。
そして Vagrantfile を編集します。
-*- mode: ruby -*-
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "CentOS65"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
vb.gui = true
end
config.vm.provision "shell", inline: <<-EOT
# timezone
cp -p /usr/share/zoneinfo/Japan /etc/localtime
# iptables off
/sbin/iptatbles -F
/sbin/service iptables stop
/sbin/chkconfig iptables off
# PHP
yum -y install php
# PostgreSQL
yum -y install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm # --- ここを追加
yum -y install postgresql93-server postgresql93-contrib # --- ここを追加
/sbin/service postgresql-9.3 initdb # --- ここを追加
/sbin/chkconfig postgresql-9.3 on # --- ここを追加
# Apache
yum -y install httpd
cp -a /vagrant/httpd.conf /etc/httpd/conf/
/sbin/service httpd restart
/sbin/chkconfig httpd on
EOT
end
ファイル編集後、ホスト側でプロビジョニングします。
vagrant provision
エラーなく完了しましたら、仮想環境に接続します。
vagrant ssh
仮想環境上で、PostgreSQL のバージョンを確認します。
[vagrant]$ psql --version
psql (PostgreSQL) 9.3.4
バージョン情報が表示されれば無事インストールが完了です。
また、postgres アカウントが生成されているか確認します。
[vagrant]$ id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)
アカウントが生成されているのを確認しました。
補足として、timezone を確認しましたが、「Japan」になっていたので時刻設定は問題なさそうです。timezone は下記ファイル内にて確認できます。
[vagrant]$ /var/lib/pgsql/9.3/data/postgresql.conf
メモ
ここまで、環境構築をしてきました。不備、不明点などありましたらご指摘いただければ幸いです。どうぞよろしくお願い致します。
ちなみに、これで box 作成してしまえばどうかという意見をいただきました。確かにそういうのもありですね。次回は box 設定してそれを利用するものを準備してみたいと思います。
...追記(2014/06/05)
box 設定について追記
$ vagrant package
で box 作成ができるそうですね。作成してみました。ファイルサイズが300Mを越えましたが、これを管理しておけば、他のライブラリバージョンなどもそのままに仮想環境が作れそうですね。