2015.2.17

XAMPP/MAMPは不要!チームでの開発に最適なVagrantでの開発環境構築

vagrant

こんにちは。しげァsjdasaxnYhsキです。
WEB制作での開発環境について、うちでは案件によりますが、今までは主にXAMPP/MAMPを使用した開発を行っていました。
mamp
しかし、時代は流れに流れ、今更ながらPHPでの主な開発環境をMAMPから「Vagrant(ベイグラント)」へ移行させることにしました。

これまでの開発環境の問題点

これまでの開発環境についての問題点ですが、よくあるのが以下のようなことでした。

XAMPP/MAMP等でよくある問題点

  • チームでの開発の場合、それぞれ環境が違うと「あれ、こっち動かないよ」という人がでてくる
  • 複数案件を1台でやってるとVirtualHostが溢れる
  • port80が何者かに使われている、そして動かない
  • 複数人で環境を揃えるにはそれぞれソフトウェア等のインストールが必要

mampなどでの開発環境では、チームでのそれぞれのPHPのバージョンが違ったり、
portが何者かに使用されていて動かなかったりといろいろありました。それら問題点を解決するためにVagrantを導入しました。

Vagrant導入によるメリット

Vagrant導入による主なメリットについては以下のとおりです。

Vagrant導入による主なメリット

  • チーム内で全く同じ開発環境を共有できる
  • プロジェクト案件毎にそれぞれ別の環境を構築できる(バージョンやサーバーを指定できる)
  • ホストPCとは分離された環境を構築できる
  • 開発に必要なソフトウェアを自動でインストールできる

Vagrantを利用することによって同一構成の仮想環境を簡単に、そして複数作成することができます。
複数作成できるので、プロジェクトごとにPHP・MySQL、Apacheなどのバージョンを指定することができます。
作成については、主に1つのテキストファイルのみで管理できるため、プロジェクトリーダーの誰か1人がバージョン管理をしてくれれば、一人ひとり環境を合わせる必要なく、チーム全体で同じ環境で作業を行うことができます。

それではさっそくですがVagrantでの開発環境構築を進めていきます。

Vagrant導入で仮想環境の作成方法

VagrantはRubyで作られており、Win、Max、Linux等で動作します。

まず最初に、Vagrant単体では仮想環境を構築できないため、まずはじめに「VirtualBox」というものをインストールする必要がありがあります。

※本記事執筆の環境はMacOSとなります。以下、Winとあまり変わらないかと思いますが一応MacOS環境での記事となります。

1、VirtualBoxをインストールする

Vagrantは単体では動きません。VagrantはVirtualBox上で動作します。
まず以下公式サイトにてVirtualBoxのインストールファイルをダウンロードします。

Downloads – Oracle VM VirtualBox

Downloads_–_Oracle_VM_VirtualBox
OSに合わせてインストールファイルをダウンロードしてください。

※執筆時バージョン、4.3.22

ダウンロードが完了しましたら、インストーラーの指示に従ってVirtualBoxのインストールを進めてください。

vbusda

インストール後は、セットアップされたカーネルドライバとやらを確実にクリーンな状態にすることが推奨されているようなので、一応コンピューターを再起動させてください。
ここでは面倒なのですっ飛ばします。

2、Vagrantをインストールする

Vagrantを公式サイトのダウンロードページよりダウンロードしてください。

Download Vagrant – Vagrant

Download_Vagrant_-_Vagrant
こちらもOSに合わせてインストールファイルをダウンロードしてください。

※執筆時バージョン、1.7.2

ちゃんとインストールされたかの確認は、コマンドラインでバージョン確認をしてください。

例:
vagrant -v

これでVagrantを使用できる環境が整いました。
それでは次にいよいよVagrantで仮想環境を構築していきます。

3、boxファイルを選ぶ

ここはちょっとよくわかりにくいかと思いますが、Vagrantは仮想マシン自体をOSにインストールするのではなく、ディスクイメージを使用して仮想環境を作成します。
boxとは簡単に言うと、利用したい環境に合わせたイメージのテンプレートのことです。

つまり、まずは利用したい環境に合わせたboxを選び、それをダウンロードして環境を構築させます。
以下公式サイトでbox一覧を確認できます。

A list of base boxes for Vagrant – Vagrantbox.es

上記サイトから直接boxをダウンロードする必要はありません。
設定ファイルを作成することによって自動的に必要なboxをダウンロードできます。

4、設定ファイル「Vagrantfile」の作成

Vagrantはこの設定ファイル1つで、環境を構築することができます。

構築したい環境のboxファイルを選んだら、まずはコマンドラインでインストールしたいフォルダに移動します。

Macの場合

cd /Users/ユーザー名/プロジェクトフォルダ名

Windowsの場合

cd C:¥Users¥ユーザー名¥プロジェクトフォルダ名

boxファイルの追加方法は以下のようにコマンドラインに入力します。

vagrant init vagrantfile boxのURL

ちなみに以下のような書き方もありますが、どっちも実行結果は同じになります。

vagrant box add vagrantfile boxのURL

また、上記の「vagrantfile」の部分は任意の名前でOKです。
分かりやすいようにboxに合わせた名前にしておきましょう。

以下、ここでは例としてCentOSの開発環境を作るためにCentOS 6.5の64bitのboxをダウンロードしてみます。
以下サイトからダウンロードするboxのURLをコピーします。

A list of base boxes for Vagrant – Vagrantbox.es

A_list_of_base_boxes_for_Vagrant_-_Vagrantbox_es

先ほどの入力例のようにコマンドラインに以下のように打ち込み実行します。

vagrant init centos64 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

そうするとフォルダ内に、「Vagrantfile」というファイルが作られているのが分かるかと思います。

これで「Vagrantfile」作成は完了です。
次にいよいよ仮想マシンを立ち上げていきます。

5、仮想マシンを立ち上げる

Vagrantfileを作成したフォルダ内で、以下のようにコマンドを入力することで
仮想マシンを立ち上げることができます。

vagrant up

最初は結構時間がかかります。。
無事仮想マシンが立ち上がりますと、以下のようにVirtualBox上で仮想マシンが作られ実行されているのが分かるかと思います。

787587927

ちなみにインストールしたboxは以下のコマンドで確認できます。

vagrant box list

上記のように打つと以下のようにインストールしたbox一覧を確認できます。

centos64 (virtualbox, 0)

余談ですが、これらのboxファイルはホームフォルダのboxesという場所に格納されています。

cd ./.vagrant.d/boxes

さて、これでVagrantを使った仮想環境の作成は一応完了となります。
それでは次に、作成した仮想マシンの操作方法について書いていきます。

仮想マシンの停止・再起動・削除のやり方

以下、主な仮想マシンの操作方法になります。

仮想マシンの操作方法

vagrant status状態を見る
vagrant suspendスリープさせる
vagrant resumeスリープから復帰させる
vagrant halt終了させる
vagrant up終了してる状態から立ち上げる
vagrant reload再起動させる
vagrant destroy仮想マシンを削除する

vagrant destroyについてですが、
こちらは「もうこの環境いらないよ」といった時に使うものになります。
[y/N]イエス・ノーと聞かれるの削除したい場合はyと入力して削除してください。

※VirtualBox上で行った設定等はすべて消えてしまうので注意してください。

ただ、vagrant destroyで仮想マシン自体を削除しても、「Vagrantfile」や
box自体が消えるわけではないので、普通にvagrant upでまた同じ設定で仮想マシンを立ち上げることができます。

ちなみにこれらの操作はVirtualBoxからも行えます。

SSH接続して、Webサーバーを立ち上げる

それではそろそろ実践的なことをしていきます。
ここでは一例としてWebサイトを表示させるためにやることを実行していきます。

SSH接続する

まず、仮想環境にSSH接続でログインします。

以下のようにコマンドを入力し接続してください。

vagrant ssh

仮想マシンの中に「vagrant」というユーザー名でログインされます。

Webサーバをインストールする

次に仮想マシン内には何もないので、以下のようにコマンドを実行しApacheをインストールします。

sudo yum -y install httpd

インストールが完了しましたらサーバーを起動させます。

sudo service httpd start

chkconfigコマンドで、再起動してもサーバーが自動で起動するように以下を実行しておきます。

sudo chkconfig httpd on

テスト環境でのファイアーウォール等はいらないので、iptablesをstopさせます。

sudo service iptables stop

再起動してもiptablesが立ち上げらないようにoffにします。

sudo chkconfig iptables off

以上でWebサーバーはインストールはOKです。
次にWebページを表示させていきたいと思います。

Webページを表示させる

本記事例では、CentOSのため、以下ディレクトリに表示させたいページを作っていきます。

cd /var/www/html

現段階での表示確認等をしたい場合は、以下のように適当にファイルを作成してみてください。

sudo vi index.html

Vagrantfile内のネットワークの設定をする

まず、Vagrantfile内にネットワークの設定があるので、そこを少し編集します。

一旦、exitでvagrantから出て、

vi Vagrantfile

と入力し設定内容を開きます。

プライベートネットワークを使用するため、設定ファイル内の以下部分の行のコメントを削除します。

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.33.10"

コメント削除し、保存したら192.168.33.10/var/www/htmlへのアクセスが出来るようになります。

ちなみに今更ですがvimでの操作が分からない場合は以下サイトを参考に進めてください。
もしくはそのまま直接ファイル編集をしてください。
参考:viコマンド(vimコマンド)一覧(検索・置換)

設定を変更したので、以下コマンドでリロードします。

vagrant reload

作業するローカルディレクトリとvagrantをリンクさせる

当たり前ですが、vagrant ssh で接続しながら作業するわけにもいきませんので、
作業ディレクトリとvagrantサーバーをリンクさせます。

先ほど表示確認で「index.html」とかを作成していた場合は以下のように入力し消してください。

sudo rm -rf /var/www/html

vagrantサーバー上の/vagrantとローカルがリンクしているため、
/vagrantへシンボリックリンクを張ります。

以下を入力します。

sudo ln -fs /vagrant /var/www/html

上記のようにすることで、「Vagrantfile」があるフォルダとリンクされます。
試しに以下のようなindex.htmlファイルを作成し、フォルダ内に置いてみます。

<h1>Hellow world!</h1>

vhtmks

ブラウザで以下のように「192.168.33.10」と入力しindex.htmlを読んでみます。

sdiojdfs

Hellow world!と表示されています。

少し長かったですがこれでひと通り基本的なvagrant導入で仮想サーバー構築は完了です。

まだこの他にもvagrantについては書きたいことがあるのですが、それについては他の記事で更新しようと思います。

この記事に付けられたタグ