MacでVagrant勘どころ

Vagrant Logo

MacのWeb開発環境として、今更だがVagrant(ベイグラント)を導入した。今まではOSXに最初から入っているApacheとPHPを使ってローカル環境を構築していたが、これはこれで個人で開発する分には何も問題ないが、OSXがMavericks→Yosemite→El Capitanとアップグレードする度に再構築が必要だった。

Vagrantを使えばOSアップグレード毎にサーバー環境の再構築は必要なくなり、長期的に見れば便利。おそらく今どきはMAMPやXAMPPよりスタンダードなんだろう。というわけでMacに導入して感じたことを。

 

思ったよりずっと簡単

VagrantとはつまりVirtualBoxを制御するソフトで、VirtualBoxもインストールする必要がある。VirtualBox側にも何らかの設定が必要かと思ったが、インストールさえしてあればVirtualBox側は触る必要もない。

VagrantとVirtualBoxをGUIでインストール後、あとはコマンドラインからVagrantを使うことになる。

Vagrantがインストールできたら、コマンドラインでBoxファイルというVagrant用のOSイメージをダウンロードして、そのBoxを基礎に仮想サーバを構築する。その仮想サーバの設定はVagrantfileというテキストファイルのみで制御できる。

既に解説ページは沢山あるが、私はこちらのページが最も参考になった。

Macにサーバと同じ環境を構築する 〜Vagrant編〜 - QiitaのスクリーンショットMacにサーバと同じ環境を構築する 〜Vagrant編〜 - Qiita

しかし解説通りに進めてもブラウザからアクセスすると403 Forbiddenに。これはSELinuxを解除することで解決した。

# ブラウザから見えない場合はSELinuxを疑う
sudo vi /etc/selinux/config
    SELINUX=enforcing
    SELINUX=disabled

 

勘どころ

というわけで、あっという間にvagrant sshで仮想サーバが触れるようになる。立ち上がった仮想サーバにapache、phpなどをインストールしていくのだが、この仮想サーバを初期状態にリセットするには?とか、その際Boxファイルにも影響がでるか?といった点が次の疑問だと思う。

サーバの初期化はvagrant destroyだけで出来る。この一行でサーバ環境は消去され、再びvagrant upでBoxファイルの初期状態に戻る。つまりBoxファイルは雛形にすぎず、仮想サーバにどれだけ変更を加えようがBoxファイル自体に影響はない。

今までサーバ環境の構築というと、セットアップの頻度も少ないのでハードルが高いという印象があったが、Vagrantのこの手軽さを経験してしまうと、失敗が何ら怖くなくなり、サーバ構築のハードルがぐっと低くなったように感じる。

 

MacのApacheと共存

仮想サーバへのWEBアクセス方法は2つあり、標準ではローカルPCの8080番ポートを仮想サーバの80番ポートにフォワードするか、あるいは任意のIPアドレスでアクセスするかを選べる。

ローカルPCの8080番ポートを使った場合は、ブラウザからはhttp://localhost:8080/でアクセスできるし、同じネットワークのPCからもアクセスできる。一方IPアドレス(デフォルトでは192.168.33.10)を使った場合は、ローカルPCからしかアクセスできない。

私は今のところIPアドレスでアクセスすることにした。その場合、ブラウザからはhttp://192.168.33.10/とアクセスすることになるが、Macのhostsを編集してhttp://vagrant/でアクセスできるようにした。

$ sudo vi /etc/hosts
127.0.0.1       localhost
192.168.33.10   vagrant

 

先ほどの解説ページのとおりにすれば、プロビジョニングによりapache/mysql/php/gitの環境まで一気に構築できる。通常のWEB開発はこれで十分だが、せっかくVagrantで手軽に環境を触れるようになったので、私はPHP7やMySQL5.6といった最新環境を構築することにした。それについては次の記事で。