CentOS
Apache
vagrant
VirtualBox

Vagrant+VirtualBoxでローカルWEBサーバー on Windows

WindowsPCにWEB開発環境を構築するぞ

というわけで、Vagrant+VirtualBoxでVMをつくったメモ。
OSはCentOS6.5を選択。

① VirtualBoxインストール

https://www.virtualbox.org/wiki/Downloads

  1. 「Window hosts」からダウンロード
  2. インストーラーを起動してインストール

② Vagrantインストール

https://www.vagrantup.com/downloads.html

  1. 「Windows」からダウンロード
  2. インストーラーを起動してインストール
  3. Windows再起動

③ boxファイルの登録

コマンドプロンプトを立ち上げ、以下のコマンドを打つ。

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

※ソースは http://www.vagrantbox.es/ から適したものを探す。

・コマンドの意味
vagrant box add {box名} {ソース}

登録が終わったら、下記コマンドで確認。

vagrant box list

④ Vagrantfile作成

ルートとなるディレクトリをつくり、そこに移動。

cd C:\path\to\hoge

以下のコマンドを実行。

vagrant init hogehoge

※box名は③で登録した名前

⑤ Vagrantfile編集

④のディレクトリに「Vagrantfile」というファイルができるので、テキストエディタで開く。

プライベートネットワークの行を編集してコメント外す。

config.vm.network "private_network", ip: "192.168.33.10"

同期フォルダの行を編集してコメント外す。(任意)

config.vm.synced_folder "C:/path/to/src/", "/var/www/html/"

これをやると対象のディレクトリがローカルとVMで同期されるので、
ソースファイルのアップロードのような作業が不要になる。

⑥ hosts追加(任意)

ブラウザアクセスしやすいようにhost名を指定する。
hostsをテキストエディタで編集。

C:\Windows\System32\drivers\etc\hosts

#追記
192.168.33.10 hogehoge

※⑤で指定したIP

動かしてみよう

VM起動

④のディレクトリで以下のコマンドを実行。

vagrant up

少し時間がかかる。
※VirtualBoxのアクセスを確認するUACダイアログが出たら許可。

色々出た後、

==> default: Machine already provisioned. ...

と出れば成功。

また、

vagrant status

で状態を確認できる。

VMに接続

起動が完了したら、WinSCP/Putty/TeraTermなどでSSH接続できる。

  • ホスト:⑤で指定したIP/⑥で指定したhost名
  • ユーザー:vagrant
  • パスワード:vagrant

必要な初期設定をする。(とりあえずApache)

$ sudo yum update
$ sudo yum -y install httpd
$ sudo service httpd start
$ sudo chkconfig httpd on

ブラウザでも⑤のIP/⑥のhost名でアクセス可。

VM終了

④のディレクトリで以下のコマンドを実行。

vagrant halt

少し時間がかかる。

おまけなど

boxファイル作成

共有用にVMイメージをboxファイルとして作成できる。
VM終了後、④のディレクトリで以下のコマンドを実行。

vagrant package --output hoge.box

box導入側は③のソースをOSリンクではなくboxファイルを指定すればOK。

パーミッションについて

VM上の /home/vagrant 及び認証鍵のパーミッションを変えると正しく起動できなくなる。
次が正しいパーミッション。

  • /home/vagrant => 700
  • /home/vagrant/.ssh => 700
  • /home/vagrant/.ssh/authorized_keys => 600

vagrantコマンド用プロンプト

いつもカレントディレクトリを移動しないといけないので、
そこにバッチファイルを用意しておいてそれを叩くことにしてみた。

@echo off

title Vagrant Prompt

cd /d %~dp0
prompt $G

cls
vagrant -v
echo.
echo Current Directory is: "%cd%"
echo.

echo ================================
vagrant status
echo ================================
echo.

cmd /q /k

goto :eof

念のため最初にVMの状態をチェックする。
立ち上がったプロンプトに vagrant up 打てばOK。

参考

Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築
Windows上にVirtualBox+VagrantでCentOS環境構築
Vagrantのインストール、設定手順