ConoHa VPSでLaravel5.1環境を構築

この記事は、[ConoHa Advent Calendar2015](http://qiita.com/advent-calendar/2015/conoha)の6日目の記事です。

はじめまして、6日目担当のスズムシ[@rinri_suzu](https://twitter.com/rinri_suzu)です。

技術力がないヤツでも、「こういうイベントに参加してもいいんだネ！」という良い見本という事でｗ

今回は「Laravel5.1」をConoHa VPSで使ってみようというお話です。

Laravelは、PHPで書かれたMVCなwebアプリケーションフレームワークです。
Eloquentにクセがあるものの、使い慣れると開発スピードは飛躍的に短縮されます。
人気急上昇！なはずなのですが、私の周りで使用している技術者はあまり見かけません。
便利なんですけどねぇ・・・

# ConoHa VPSでLaravel5.1環境を構築する
Laravel5.1の環境構築はポイントを押さえれば難しくありません。

Laravel5.1はPHP5.5.9以降で動作します。
現時点でCentos7.1標準でイストールされるPHPのバージョンは5.4.16です。

目的のPHPをインストールするには、Remiリポジトリを導入しPHP環境を構築する必要があるので、VPS構築時にはCentOS7.1を選択しておきます。
CentOS6系でも環境構築は可能ですが、PHPの依存関係に問題が出る場合があり、思わぬ手間がかかる場合があります。要件的に縛りが無いなら迷わずCentOS7.1を選びます。

また、Laravelはパッケージ管理にcomposerを使用しており、composerをインストールする必要があります。composerのインストールは簡単ですが、PHPのインストールが終わっている事が条件になります。

composerがLaravelパッケージをダウンロードしながらをプロジェクト毎に動作環境を構築するという仕組みです。


####少し脱線・・・
ConoHa VPSを構築した後は必ずOSアップデートを行いましょう

```
# yum -y update
```

####httpdはインストールした？
まだならやってしまいましょう

```
# yum -y install httpd
```

###epelとremiのリポジトリインストール
```
# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

###PHP5.6のインストール
```
# yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
```

###composerのインストール
```
# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
```

以上で環境構築は完了です。

#Laravel5.1プロジェクトの作成
プロジェクト作成は、composer経由とlaravelインストーラの2通りがありますが、[ララ帳](https://laravel10.wordpress.com/2015/02/13/laravel%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/)によると、laravelインストーラに不具合があり、現在はcomposer経由でしかプロジェクト作成が出来ないそうです。

###プロジェクトの作成
以下の命令でcomposerを使いLaravel5.1のプロジェクトを作成します。

```
composer create-project laravel/laravel --prefer-dist PROJECT_NAME
```
-prefer-distオプションは、「リリース・安定版」をダウンロードするという意味です。
PROJECT_NAMEはconohaとして作成します。

```
# cd /var/www
# composer create-project laravel/laravel --prefer-dist conoha
```

###storageのパーミッションを変更
作成したconohaプロジェクトのstorageディレクトリのパーミッションを変更しておきます。
この手順を忘れると動作しません。

```
# chmod -R 777 /var/www/conoha/storage
```



#web公開準備
httpd.conf内のドキュメントルートをプロジェクト内のpublicに変更します
※firewalldで80番ポートは開けておきましょう

###httpdコンフィグの編集
```
# vi /etc/httpd/conf/httpd.conf

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
#DocumentRoot "/var/www/html"

DocumentRoot "/var/www/conoha/public"

```

httpdを再起動後、アクセスしてLaravel5が表示されれば完了です。

<img width="1055" alt="aaa.png" src="https://qiita-image-store.s3.amazonaws.com/0/100025/a5c235bf-35f0-a633-7c26-2eca2585b294.png">

#ConoHa VPSで簡単に一工夫
ConoHa VPSの優れた特徴として『サーバー構築の簡素化』が上げられます。

今回ご紹介したLaravel5.1、実開発ではDBが必ず登場します。
私の場合、DBは専用サーバーとして構築し、インターネットから見えない場所（DMZ）に必ず設置します。DBを切り離す目的として「セキュリティの確保」と「ロードバランサー導入準備」が上げられます。

従来では大変面倒な作業でしたが、ConoHa VPSでは画面で選択する作業がメインになります。
黒い画面も登場しますが、難しい作業ではありません。

特にWordPressコンテンツは、DBのDMZ化をやっておいて損はないでしょう！
というか負荷分散を考えると必須かもしれませんね

詳しくは、ConoHa VPS公式ドキュメント[このべん](https://www.conoha.jp/conoben/)で紹介されています

[【アプリケーションサーバーを追加する】](https://www.conoha.jp/conoben/archives/9157)
[【DBサーバー接続用ネットワークを使う】](https://www.conoha.jp/conoben/archives/9103)

をご参照ください。
ご要望があれば、Laravel5.1やWordPressのDMZなど書いてみたいと思います。

#最後に
サーバーはテーブルに例えられます。
最近はどのコンテンツもリッチになり、「綺麗なお皿に盛られた豪華な料理」の様ですが、料理を乗せる肝心のテーブルが「ガタガタ」では安心して味わう事が出来ません。
SEOを頑張って人気が出ても、料理を乗せるテーブルが「ガタガタ」では料理の姿すら見えず、楽しむ事は出来ないでしょう。
また、テーブルの交換に時間がかかっても、ユーザーはすぐに離れてしまいます。
これでは豪華な料理の意味はありません。

ConoHa VPSは豪華な料理に合わせて即時カスタマイズでき、料理を思う存分味わうことが出来る「最高のテーブル」なのです。

しかも・・・安いときたもんだ！！！