Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築


MacでのVagrantによる仮想環境構築の情報は多くありますが、Windowsマシンで実現するためのTipsを記述します。

#1. 環境構築

##1-1. 仮想化支援機構の有効化

VirtualBoxでの仮想化のため、PCの「仮想化支援機構(Virtualization Technology)」を有効化しておく。
手順はPCのメーカー・機種ごとに異なるので、Webサイト等で確認すること。

以下はHP ProBook/EliteBookの場合。

1. PCの電源ON直後、「F10 Setup」と表示されている時点でF10キーを押下
1. BIOS画面が表示されたら、[システムコンフィグレーション]－[デバイス構成]に遷移
1. 「Virtualization Technology (VTx)」にチェックし、保存

##1-2. VirtualBoxのインストール
https://www.virtualbox.org/wiki/Downloads
より、WindowsOS版をダウンロード、インストールする。

##1-3. Vagrantのインストール
https://www.vagrantup.com/downloads.html
より、WindowsOS版をダウンロード、インストールする。

##1-4. CentOSのVirtualBoxへの登録
VirtualBox用boxファイルを
varant box add {適当な名前} {boxファイルURL}
で取得し、VirtualBoxに登録する。

コマンドプロンプトより

```
C:¥Users¥user> vagrant box add CentOS65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
```

※最新のboxファイルURLは http://www.vagrantbox.es を参照

##1-5. Vagrant初期設定

```
C:¥Users¥user> mkdir centos
C:¥Users¥user> cd centos
C:¥Users¥user¥centos> vagrant init CentOS65

C:¥Users¥user¥centos> dir
（Vagrantfileファイルが存在することを確認）
```

テキストエディタでVagrantfileを編集する。

```ruby:Vagrantfile
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.customize ["modifyvm", :id, "--memory", "1024"]
  end

end
```

#2. CentOSの起動・接続・停止

##2-1. CentOS起動

```
C:¥Users¥user¥centos> vagrant up
```

##2-2. CentOSへの接続

Mac等だと vagrant ssh でアクセスできるが、WindowsにはデフォルトでSSHクライアントがインストールされていないので

```
C:¥Users¥user¥centos> vagrant ssh
`ssh` executable not found in any directories in the %PATH% variable.
```

となってしまう。

Windows PCでSSHによりアクセスするには

+ Cygwinをインストールする
+ Git(msysGit)をインストールする
+ TeraTermやPuTTY等のSSHクライアントよりアクセスする

とあるが、ここでは手っ取り早くTeraTermでアクセスすることにする。

###1)TeraTermのインストール

http://sourceforge.jp/projects/ttssh2/
より最新版をインストールする。

###2)TeraTermからのアクセス

![tera1.png](https://qiita-image-store.s3.amazonaws.com/0/34400/9f6436fc-68e5-6ed9-7bd1-e507c4e0afcc.png)

ホスト：　 192.168.33.10
TCPポート：22

![tera2.png](https://qiita-image-store.s3.amazonaws.com/0/34400/5dd922ed-bfa1-ddf9-a576-122c8641aeba.png)

ユーザー名：vagrant
パスワード：vagrant
でログイン

```
[vagrant$vagrant-centos65 ~]$ 
```

##2-3. CentOSの停止

方法1. vagrantコマンドで停止する

```
C:¥Users¥user¥centos> vagrant halt
```

方法2. CentOSにログインした状態でシャットダウンする

```
[vagrant$vagrant-centos65 ~]$ sudo shutdown -h now
```

#3. フォルダ共有

CentOSの特定ディレクトリを、Windowsと共有することができる。
これにより、CentOS上でviなどを使用しなくても、Windows上のエディタ・IDEでソースコードの構築が可能となる。

##3-1. 共有フォルダの指定

Vagrantfileに下記のように記述する。

```ruby:Vagrantfile
  # config.vm.synced_folder "../data", "/vagrant_data"
  config.vm.synced_folder "../hello", "/var/www/html/hello"
```

##3-2. ソースフォルダ・ファイルの作成

C:¥Users¥user¥hello フォルダを作成し、
その下にソースファイル（今回はHTMLファイル）を置く。

```html:C：¥Users¥user¥hello¥index.html
<h1>Hello Vagrant!</h1>
```

##3-3. 設定の再読み込み

```
C:¥Users¥user¥centos> vagrant reload
```

CentOSは再起動される。

##3-4. フォルダ共有の確認

CentOSにログインし、共有したフォルダが見えていることを確認する。

```
[vagrant@vagrant-centos65 ~]$ ls -l /var/www/html/hello
-rwxrwxrwx 1 vagrant vagrant 25 Dec 21 21:23 index.html
```

##3-5. Webサーバの起動

CentOSにログインし、httpd(Apache)をインストール、起動する。

```
[vagrant@vagrant-centos65 ~]$ sudo yum -y install httpd
[vagrant@vagrant-centos65 ~]$ sudo chkconfig httpd on
[vagrant@vagrant-centos65 ~]$ sudo service httpd start
```

##3-6. Web表示の確認

ブラウザより http://192.168.33.10/hello/index.html にアクセスし、作成したHTMLソースが正しく見えることを確認する。

![hello.png](https://qiita-image-store.s3.amazonaws.com/0/34400/8aa75c4a-359e-590b-f992-e724aa117494.png)