Vagrant+CentOS6.5+Apache+PHP+Mysql+CakePHPの環境構築 その①

__キリが悪かったので追記しました。__

おそがけながら、必要になったので。
なんとなくVagrantを理解してきたよーな。。。
慣れたら一瞬で仮想マシン構築できるから、これは便利だわ。
って、今頃思ってます。

次はCakePHP導入まで行く。。。。ぞ。。。


#用意するもの

* Vagrant ([https://www.vagrantup.com/](https://www.vagrantup.com/))
* VirtualBox ([https://www.virtualbox.org/](https://www.virtualbox.org/))
* 上記をダウンロードしてる間に、作業用フォルダを適当に作っておく。

#Vagrantのインストールと使い方
VirtualBoxは入れるだけ。
Vagrantのインストールが終わったら、コンソールでバージョンコマンドを打ってみてレスポンスが返ってきたらOK。

```lang:console
$ vagrant -v
```

##Boxファイルを追加
Vagrantが使う仮想マシンイメージをBoxファイルを言うらしいので、
リンク先のリストから目当てのboxファイルを探してCopy！！

* Vagrantbox.es ([http://www.vagrantbox.es/](http://www.vagrantbox.es/))
* Vagrant Cloud ([https://atlas.hashicorp.com/boxes/search](https://atlas.hashicorp.com/boxes/search))

今回は「CentOS 6.5 x86_64」を使うので「centos65」って名前でboxファイル追加

```lang:console
$ vagrant box add centos65 CopyURL
```

`box list`コマンドで表示されたら追加OK。

```lang:console
$ vagrant box list
```


###vagrant box コマンド

* `vagrant box add`　boxの追加
* `vagrant box list`　boxの表示
* `vagrant box remove`　boxの削除
* `vagrant repackage`　よくわかりません

##仮想マシン初期化&起動
事前に用意した作業フォルダに移動して、初期化呪文を唱える。

```lang:console
$ cd /your/work/directory  ##作業フォルダに移動
$ vagrant init centos65  ##さっきつけたboxファイル名を指定して詠唱
```

そしていよいよ。。。
雑念を捨てながら、祈りながら、仮想マシンを起動。

```lang:console
$ vagrant up
```

読み込みが終わったら、SSHで仮想マシンへアクセス

```lang:console
$ vagrant ssh
```

プライベートキーのパスフレーズを聞かれるけど無視して`enter`
ログインパスワードを聞かれるので`vagrant`を入力

###vagrant 仮想マシン操作系のコマンド

* `vagrant status`　状態確認
* `vagrant suspend`　スリープ
* `vagrant resume`　スリープ解除
* `vagrant halt`　シャットダウン
* `vagrant reload`　再起動
* `vagrant destroy` 仮想マシンを削除

もっとコマンド調べたい時はここ
https://docs.vagrantup.com/v2/cli/index.html


#Apache導入とVagrantfile
ちょっと普通のCentOSの設定とは勝手が違ってちょっとコケた。
キーポイントはVagrantfileにあり。

##Apacheインストール
まずはお約束の`yum update`を実行した後、Apacheをインスコ。
(今回はローカルでの環境構築が主要素なので、セキュリティ周辺やらなんやらは割愛)

```lang:console
$ sudo yum update  ##お約束
$ sudo yum install httpd  ##Apacheインスコ
```

インスコしたら、Apache起動してマシン起動時に一緒に立ち上がるように設定。

```lang:console
$ sudo service httpd start  ##Apache起動
$ sudo chkconfig httpd on  ##マシン起動時に立ち上がるおまじない
```


##Vagrantfileを編集
Vagrantで仮想マシンを作るとルートに`vagrant`というフォルダが出来ていて、その中にある`Vagrantfile`を編集する。
コメントと一緒にだらだらーっと書かれてあって、ちゃんと読めばいいんだけど、このごろ目がショボショボして。。。

なので、コメントを削除してスッキリさせるとこう。

```lang:console
$ cat /vagrant/Vagrantfile
```

```lang:/vagrant/Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

  config.vm.box = "centos65"

  # config.vm.box_check_update = false

  #config.vm.network "forwarded_port", guest: 80, host: 8080

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

  # config.vm.network "public_network"

  # config.vm.synced_folder "../data", "/vagrant_data"

  # config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end

  # config.push.define "atlas" do |push|
  #   push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
  # end

  # config.vm.provision "shell", inline: <<-SHELL
  #   sudo apt-get update
  #   sudo apt-get install -y apache2
  # SHELL
end

```

それぞれの設定項目については公式参照
http://lab.raqda.com/vagrant/vagrantfile/machine_settings.html

ちゅーことで、ポート設定の行のコメントアウトを外す。

```lang:console
$ vi /vagrant/Vagrantfile
```

```lang:/vagrant/Vagrantfile
#config.vm.network "forwarded_port", guest: 80, host: 8080
↓ コメントアウト外す
config.vm.network "forwarded_port", guest: 80, host: 8080
```

このままだと、`Vagrantfile`の設定が反映しないので、仮想マシンを再起動。

```lang:console
$ exit　##仮想マシンログアウト
$ vagrant reload　##仮想マシン再起動
```
再起動が終了したら、[http://127.0.0.1:8080/](http://127.0.0.1:8080/) にアクセスしてApacheの画面が表示されればOK。

###Vagrantfileの詳しい設定方法
公式ドキュメント参照
http://lab.raqda.com/vagrant/vagrantfile/index.html

##Vagrantのフォルダ同期について
`vagrant init`した作業フォルダと、仮想マシンの`/vagrant`の中が同期しているみたい。
試しに仮想マシン側で何か適当なファイルを作ると、作業フォルダにも同じファイルが生成されるし、`Vagrantfile`も同期される。