【Windows7(64bit)】VirtualBox+VagrantでCentOSの仮想環境構築

#はじめに
MEAN環境でWEB開発を行いたいと思い、
まず初めにVirtualBox+VagrantでCentOSの仮想環境構築をしてみました。
パソコンによっては仮想環境に対応していなかったり、
VirtualBoxとVagrantのバージョンの相性によってエラーが起きて上手くvagrant upできなかったりと...
色々苦労したので後日エラーに関してまとめて載せたいと思います。

今回はその準備段階の仮想環境構築についての手順をまとめたので参考にして頂けたら幸いです。
#1. インストール
WindowsにVirtualBoxとVagrantをインストールしていきます。
##1-1. VirtualBoxのインストール
以下のURLより**VirtualBox 4.3.26 for Windows hosts  x86/amd64**を押下し、
Windows版をダウンロード・インストールします。
（今回は最新バージョンのVirtualBox 4.3.26をインストールしました）
https://www.virtualbox.org/wiki/Downloads

`C:\Program Files\Oracle\VirtualBox`にインストールされ、
デスクトップにアイコンが追加されました。
##1-2. Vagrantのインストール
以下のURLよりWINDOWSの**Universal (32 and 64-bit)**を押下し、
Windows版をダウンロード・インストールします。
https://www.vagrantup.com/downloads.html
###Vagrantのバージョンの確認
Windowsでコマンドプロンプトを開き、
`vagrant --version`と書いて確認する。


```text:コマンドプロンプト
C:\Users\user>vagrant --version
Vagrant 1.7.2
```
(2015.4.26現在の最新は1.7.2です)

#2. Boxの追加
・以下のURLから追加したいBoxを確認することが出来ます。
　http://www.vagrantbox.es/
・今回はCentOS6.5を追加したいので、
　以下のようにコマンドプロンプトに書いて追加します。
　(CentOS65というBox名で追加します)

「追加方法」
**vagrant box add {適当な名前} {boxファイルURL}**

```text:コマンドプロンプト
C:¥Users¥user> vagrant box add CentOS65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
```
##2-1. Boxが追加されているか確認する
コマンドプロンプトで`vagrant box list`と書いて

```text:コマンドプロンプト
C:\Users\user>vagrant box list
CentOS65 (virtualbox, 0)
```
これで先程自分が付けた名前でBoxが追加されていることが確認できました。

###Boxの削除
もし、`vagrant box list`で使用していないBoxが見つかり、
削除したいなぁと思ったときは、
下記のコマンドで削除できます。（CentOS7というBoxを削除した場合）
`vagrant box remove CentOS7`
参考にしたサイト：http://qiita.com/mochizukikotaro/items/52f4434c3f69c4ba1f54

#3. 仮想マシンを作成
以下コマンドプロンプトで行っていきます。
・centosという名前のフォルダを作成します
　（今回はC:\Users\userに作成しました）

```text:コマンドプロンプト
C:\Users\user> mkdir centos 
```
・作成したcentosに移動します

```text:コマンドプロンプト
C:\Users\user> cd centos
```
・Vagrantfileを生成します

```text:コマンドプロンプト
C:¥Users¥user¥centos> vagrant init CentOS65
```
・Vagrantfileが生成されているかを確認する

```text:コマンドプロンプト
　C:¥Users¥user¥centos> dir
```
最後に、terapadなどのテキストエディタでVagrantfileを開きます。
**#**はその行をコメントアウトするということです。
そのため、以下のようなVagrantfileになっていればOKです。

```text:Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "CentOS65"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "../hello", "/var/www/html/hello"
end
```
　`config.vm.network "private_network", ip: "192.168.33.10"`の**#**を削除し、
　`config.vm.synced_folder "../hello", "/var/www/html/hello"`を追加しました。


`config.vm.synced_folder "../hello", "/var/www/html/hello"`は、
ファイル共有を可能にさせるプログラムです。
これで、C:\Users\userにあるhelloというフォルダを仮想OS上でも見れるようになります。
詳しくは次の項目で説明します。
##3-1. 共有フォルダの作成
CentOSの特定ディレクトリを、Windowsと共有することができます。
###3-1-1. フォルダの作成
`C:¥Users¥user`にhelloという名前のフォルダを新規作成します。
terapadなどのテキストエディタを使用して、
helloフォルダ内に以下のようにindex.htmlファイルを作成します。

```index.html
<h1>Hello Vagrant!</h1>
```
次の項目の「4. CentOSの起動」で、CentOSを起動した際、
`/var/www/html`にhelloというディレクトリがあり、
hello内にindex.htmlがあれば、
共有フォルダになっていることが確認できます。

#4. CentOSの起動
ここから実際にCentOSの起動・接続・停止を行って行きます。
##4-1. CentOS起動
コマンドプロンプトで`vagrant up`と書いて起動させます。

```test:コマンドプロンプト
C:¥Users¥user¥centos> vagrant up
```

「参考」
`vagrant up`：仮想マシンの起動
`vagrant halt`： 仮想マシンの終了
`vagrant status`： 仮想マシンの状態確認
`vagrant suspend`： 仮想マシンの一時停止
`vagrant reload`： 仮想マシンの再起動
`vagrant destroy`： 仮想マシンの削除

#5. SSH接続
SSH接続をする場合、
Macの場合は`vagrant ssh`で接続できるのですが、
Windowsはできないため、TeraTermを使用して接続します。
##5-1. Tera Termのインストール
下記のURLより**TeraTerm**をインストールします。
http://www.forest.impress.co.jp/library/software/utf8teraterm/
Tera TermとTera Term ポータブル版の2つがありますが、
Tera Termをダウンロード・インストールして下さい。

ダウンロード・インストールできたら
デスクトップにTera Termのアイコンが表示されます。
##5-2. Tera Termからのアクセス
Tera Termを開きます。
下記のようにホストとTCPポートを入力してOKを押します。
**ホスト：192.168.33.10**
**TCPポート：22**
![9f6436fc-68e5-6ed9-7bd1-e507c4e0afcc.png](https://qiita-image-store.s3.amazonaws.com/0/75241/60805bc5-3b17-f7b3-9702-f1c3ea6c2b68.png)

OKを押したらSSH認証の画面が出てきます。
下記のようにユーザー名とパスフレーズを入力してOKを押します。
**ユーザー名：vagrant**
**パスフレーズ：vagrant**
![5dd922ed-bfa1-ddf9-a576-122c8641aeba.png](https://qiita-image-store.s3.amazonaws.com/0/75241/742fe541-897e-f941-581e-c55dec38e9dc.png)

無事接続できると
`[vagrant@vagrant-centos65 ~]$`
が表示されます。

#6. 共有フォルダの確認
「3-1. 共有フォルダの作成」で作成したフォルダの確認をしてみましょう。
SSH接続が出来ている状態で、
Tera Termのターミナル内に`ls -l /var/www/html/hello`と打つと
index.htmlがあることが確認できます。

```text:TeraTerm
[vagrant@vagrant-centos65 ~]$ ls -l /var/www/html/hello
total 1
-rwxrwxrwx 1 vagrant vagrant 23 Apr 25 08:56 index.html
```
#7. Webサーバの起動
SSH接続が出来ている状態で、
Tera Termのターミナル内に以下のコマンドを打ち込んでいき、
httpd(Apache)をインストール・起動します。

```
[vagrant@vagrant-centos65 ~]$ sudo yum -y install httpd
[vagrant@vagrant-centos65 ~]$ sudo chkconfig httpd on
[vagrant@vagrant-centos65 ~]$ sudo service httpd start
```
##7-1. Web表示の確認
ブラウザより http://192.168.33.10/hello/index.html にアクセスし、
作成したHTMLソースが正しく見えることを確認します。
![8aa75c4a-359e-590b-f992-e724aa117494.png](https://qiita-image-store.s3.amazonaws.com/0/75241/47a7c622-fc97-431d-2528-c3a0fc0df5ad.png)

終了するときは、
TeraTerm側ではexitで終了し、
コマンドプロンプト側ではvagrant haltで終了します。

以上で、
Windows7でVirtualBox+VagrantでCentOSの仮想環境構築が出来ました。

#おわりに
今回は、共有フォルダのHTMLソースコードを表示させるだけでしたが、
今後は、新しくディレクトリを作成し、そこにMEAN環境を構築していきます。

----------**追記**---------------
以下に、MEAN環境を構築するための手順をまとめました。
[Vagrantで起動したCentOS6.5にMEAN環境を構築した](http://qiita.com/kobaboi/items/567f79537fd6e18305c5)

#参考サイト

「Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築」
URL：http://qiita.com/hiroyasu55/items/11a4c996b0c62450940f
「使ってないVagrant Boxを削除する」
http://qiita.com/mochizukikotaro/items/52f4434c3f69c4ba1f54