Vagrant+VirtualBox+CentOS7.2を用いたCakePHP環境構築(その1)


## はじめに

筆者はweb開発初心者です。様々な記事を参考にしながらCakePHPで作ったサイトをなんとかローカルで表示するまでに至ったので、手順をまとめてみました。初心者目線でつまづいたところは丁寧に書くようにしたので、かなり初心者向きの内容になっていると思います。
間違いがあったら是非コメントの方に、よろしくお願いします。

その１では**phpで作ったページをブラウザから表示できるようにするまで**の設定を行います。

また記事執筆に至り、以下の記事を参考にさせていただきました。
http://qiita.com/tiwu_official/items/f135e6b6fbbe3ec6aa54
http://qiita.com/deconcepter/items/bc90d6c2080eb19e9ff7

#### 対象とする読者

- Web開発の経験は長くない
- CakePHPで作ったページをローカルで表示する環境を作りたい
- Vagrantを使ってみたい

## 1. Vagrant・VirtualBoxの導入

#### ・Vagrantのダウンロード・インストール

公式サイトから最新版を導入
https://www.vagrantup.com/downloads.html

#### ・VirtualBoxのダウンロード・インストール

公式サイトから最新版を導入
https://www.virtualbox.org/wiki/Downloads


## 2. boxの導入と仮想マシンの作成

#### ・導入するboxを選ぶ

以下のサイトから導入するboxを選ぶ
http://www.vagrantbox.es/
Vagrantでは新しく環境構築する際の雛形としてboxというものを使用する。ここではminimalのcentOS7.2を使用するが、すでにインストール済みの構成をそのまま使うことも可能。構築した環境を自分でbox化することもできる。

#### ・boxを追加する

```
vagrant box add <box名> <url>
```

box名は自由につけて良く、urlは上記のサイトから選んだものを使う。
(例)

```
vagrant box add centOS7-2 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
```

#### ・適当な場所に作業用ディレクトリを作る
centOSdirなどでok。
以降基本的にこのディレクトリで操作を行う。


## 3. 仮想マシンへのログイン
#### ・Vagrantfileを作成する

```
$ vagrant init <box名>
```

カレントディレクトリに、指定したboxをもとにVagrantfileを作る。
Vagrantfileとは、構築する仮想マシンについての諸々の設定をRubyで記述したfileと捉えておけば良い。
(例)

```
$ vagrant init centOS7-2
```

#### ・仮想マシンを起動する

```
$ vagrant up
```

カレントディレクトリにあるVagrantfileを元に仮想マシンを起動する。

#### ・仮想マシンにssh接続する

```
$ vagrant ssh
```

ちなみに、以下のコマンドを実行すると、どのディレクトリからでも仮想マシンにssh接続できるようになる。

```
$ vagrant ssh-config --host NAME >> ~/.ssh/config
$ ssh NAME
```

(例)

```
$ vagrant ssh-config --host centOSssh >> ~/.ssh/config
$ ssh centOSssh #どこからでもログイン可能
```

仮想マシンからログアウトする際は、`exit`でログアウトできる。

## 4. httpd、phpの設定

#### ・phpとApacheのインストール

※以降の作業で、sudoをいちいちつけるのが面倒なら、`su`を実行し、rootにログイン。passwordはvagrant。

```
$ sudo yum install http
$ sudo yum install php php-cli php-common php-gd php-in tl php-mbstring php-mysql php-pdo
```

これでApacheサーバーを立てること、phpを表示することが可能になる。ただしこのままではホストマシンから仮装マシンのサーバーに接続できないため、いったん`exit`してVagrantfileを書き換える必要がある。

#### ・Vagrantfileの書き換え

Vagrantfileから

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

という行を見つけ、コメントアウトを外す。
これで自分のPC(ホスト側)と、そこで構築した仮想マシン(ゲスト側)との間でのみ、通信が行えるようになる。
Vagrantfileを更新した際は

```
$ vagrant reload
```

を実行して更新を反映させる。

#### ・Apacheサーバーの起動

```
$ systemctl start httpd #httpdの起動
$ systemctl enable httpd #httpdの自動起動設定
```

なお、centOS6.x系の場合はコマンドが異なるため調べてください。

#### ・ホストマシンのブラウザからアクセス

初期設定では`/var/www/html`がルートディレクトリになっているため、そこに`index.html`(内容はなんでも良い)を作ってやれば、`http://192.168.33.10/`でブラウザからアクセスできるようになる。

```
cd /var/www/html
sudo vi index.html
```

ここで、`http://192.168.33.10/`からアクセスできるかどうかを確認。
できない場合には、以下を試す。
1.pingで反応がない場合
ホスト側から`ping 192.168.33.10`を実行
この時点で反応がない場合は、ゲスト側で`systemctl restart network`を実行し、network.serviceをリスタートする。

2.pingで反応はあるがページが表示されない場合
(a)httpdの状態確認、(起動していない場合は)起動

```
$ systemctl status httpd #httpdの状態確認
$ systemctl start httpd #httpdの起動
```

(b)`/var/www/html`にファイルが正しく配置されているか確認
(c)ファイアウォールの無効化

```
$ systemctl stop firewalls
```

(d)Vagarntfileの設定確認
(e)複数の仮想マシンが起動していないかを確認

#### ・ApacheにPHPを対応させる

sudo vi /etc/httpd/conf/httpd.conf
でhttpd.confを開き、AddTypeで検索。
viの使い方については調べてください。

```httpd.conf
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
```

この下に下記2行を追記。

``` httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
```

#### ・phpの表示を確認

先ほどのindex.htmlをindex.phpに書き換え、適当なphpプログラムを書く。
ブラウザからアクセスして、phpが実行できていることを確認。

## 次回へ続く

その1は以上になります。単にPHPをローカルで表示するための設定はこれで終了です。
その2ではCakePHPを使って作ったサイトを表示するための設定、複数サイトをローカルで表示するための設定を行なっていきます。
その2→http://qiita.com/ymt193/items/868c7e000803d3290bc9