Vagrantで開発を始めて、ある程度知識も溜まってきたので備忘録代わりにブログに書きたいと思います。
環境
HOST | Max OS X Lion |
---|---|
GEST | CentOS 5.9(64bit) |
Vagrant | 1.3.5 |
Virtual Box | 4.3.0 |
目次
- VirtualBox のインストール
- Vagrant1.3 のインストール
- box ファイルのインストール
- Vagrantfile の作成
- 仮想サーバを構築
Virtual Box のインストール
Downloads – Oracle VM VirtualBox.
上記からダウンロード、インストール。インストール時最新は、4.3.0。
Vagrant1.3 のインストール
上記からダウンロード、インストール。Rubyのgemコマンドでもインストールできるようです。インストール時最新は、1.3.5。
box ファイルのインストール
A list of base boxes for Vagrant – Vagrantbox.es.
イメージファイルを一から作るのは大変ですので、上記、Vagrantbox.esサイトからboxファイルを探して、インストールする方法が一番手軽です。ただ、他人が作ったイメージファイルなので、セキュリティがどうとかっていう事を聞いたことが有るので、そこは自己責任ですね。
会社のサーバーが古いのでそれに合わせて、イメージファイルを探して、インストールしました。
$ vagrant box add centos59_64 http://tag1consulting.com/files/centos-5.9-x86-64-minimal.box
Vagrantfile の作成
Vagrantfileはvagrantの設定ファイルになります。
$HOMEの下にvagrantというディレクトリと今回のサーバー用のディレクトリ(centos59_64)を作成して、その下で管理しています。
$ mkdir ~/vagrant $ cd ~/vagrant $ mkdir centos59_64 $ cd centos59_64
Vagrantfileはvagrant initコマンドで作成し、変更していきます。
$ vagrant init $ vi Vagrantfile
ちなみに、変更後のVagrantfileは以下の通りです。
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "centos59_64" config.vm.network :private_network, ip: "192.168.33.10" config.vm.synced_folder "/Users/suusuke/vagrant/centos59_64/home/", "/home/", \ create: true, owner: 'root', group: 'root', \ mount_options: ['dmode=777,fmode=666'] config.vm.provider :virtualbox do |vb| #vb.gui = true # Use VBoxManage to customize the VM. For example to change memory: vb.customize ["modifyvm", :id, "--memory", "1024"] end end
Vagrantのプロ?は、ここでchefやshellを使って、プロビジョニングしていくようですが、まだそこまで出来ないので、最低限の設定を書いています。
一つだけポイントとして、vagrantにはsynced_folderという機能があり、仮想サーバーのディレクトリを、ホストにマウントすることができます。今回は、Vagrantfileのあるディレクトリに、homeディレクトリをマウントさせています。これは、WEBサイトを作成する際に、ApacheのVirtualHostで各ユーザーディレクトリの下を公開ディレクトリにして開発する為です。
仮想サーバーを構築
vagrant upコマンドで、仮想サーバーを立ち上げます。
$ vagrant up
あとは、sshでサーバーにログインして、環境を作成していきます。
$ root@192.168.33.10
Apache、PHP、MySQL、PostgreSQL、Postfix、Dovecot 等をインストールして、それぞれ設定しホストPCでホストの設定をすればWEBの開発環境の完成です。
$ vi /etc/hosts 192.168.33.10 vagrant.localhost 192.168.33.10 test.example.com ....
実際にプログラムは、synced_folderのお陰で、ホストPCで変更したものが即座に反映されます。
僕は、Eclipseを普段使っているので、workspaceを~/vagrang/centos59_64/homeにして、開発をしています。
あと、WEBプログラムでメールのテストの為に、PostfixとDevcotで設定したのですが、逆にsynced_folderの機能のせいで、半日くらいうまく行かなくて時間を使ってしまったので、そちらは後ほど書き留めたいと思います。