PHPフレームワーク「Laravel4」の環境を Vagrant, CentOS 6.6, PHP 5.6, MySQL 5.6 で作ってみた、その１

## PHP, Laravel4 の環境構築
PHPフレームワークでは、CakePHPが熱いって思っていたら（２年位前の頭ですｗ）、最近はLaravel4（ララベル）が熱いんですよ、ハゲさん！って言われてしまったのでまず環境構築から初めてみます。

⇒と思って、Laravel4 インストする方法書いたら… 禿さん！ Laravel5 じゃないのかよ？！と言われてしまった・・・orz

## Laravel4 動作環境(2015/03/12現在)
最新の Laravel を使用する場合は、PHP のバージョンも気にしないといけないとこが玉に傷。というのも CentOS 6.6 で標準レポジトリからインストールされるのは、php v5.3.3 ですのでここだけ注意すること。 

| ソフトウェア | バージョン |
|:-----------|:----------|
|Laravel4    |4.2.17      | 
|PHP         |5.4 以上    |
|apache, Nginx|     | 
|database    |任意     | 

## 環境構築
以下の構成で環境を構築してみます。


| ソフトウェア | バージョン |
|:-----------|:----------|
|Laravel4    |4.2.17      | 
|PHP         |5.6.6      |
|Apache      |2.2 |
|MySQL       |5.6     | 

## こんな Varagnt でｗ
さくっと作って立ち上げときます。

```
config.vm.define :web do |web|
  web.vm.network :private_network, ip: "192.168.11.200"
  web.vm.provider "virtualbox" do |v|
    v.customize ["modifyvm", :id, "--memory", 512]
  end
end
```

## PHP のインストール
epel から php 5.6系を取得しインストールします。Laravel4 は、mcrypt も必要とのことなのでその他に使いそうなライブラリと一緒にインスコします。

```
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum --enablerepo=remi,remi-php56 install php php-common
# yum -y install libmcrypt
# yum -y -–enablerepo=remi,remi-php56 install php-mcrypt
# yum -y –-enablerepo=remi,remi-php56 install php-pecl-apcu php-pdo php-gd php-mysqlnd php-mbstring php-pecl-mongo
```

インスコが終わったら、```php -v``` または、```yum info php``` にて 5.6系がインストールされていることを確認しておきます。

> [CentOS 6.5 + nginx 1.6.1 + Laravel 4.2のインストールメモ](http://qiita.com/yuppi/items/d5da1c15ae70f4b0abbb)

## Apache のインストール
いつものごとくのコマンドで導入する。

```
# yum -y install httpd
# chkconfig httpd on
# service httpd start
```

phpinfo でphpの状態を確認する。下記コマンドを実行し ```http://localhost/phpinfo.php``` で叩いてみて真っ白の画面でなければok。

```
# echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
```

## MySQL のインストール
とりあえずインストールしておきます(^^
ひととおりの物がインスコされます。

```
# yum -y install http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
# yum -y install mysql-community-server
```

とりあえず立ち上げときます。

```
# chkconfig mysqld on
# service mysqld start
```

## laravel のインストール
最新版をインストールします。あとコマンドラインのパッケージも導入できるように同時にインストールしてみます。

### Composerのインストール
なんだか Laravel4 は、Composer っていうパッケージ管理プログラムを使うらしく、まずこれをインストールするとこから初めます。

```
# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
```

パスを追加します。```.bashrc``` に追加しておくといいことありますね。

```
# export PATH=$PATH:/usr/local/bin
```

### コマンドラインで使用できる laravel をインストール
結構、インストールに時間がかかります。気長に待つとしますかね・・・。

```
# composer global require "laravel/installer=~1.1"
```

パスを追加します。```.bashrc``` に追加しておくといいことありますね。

```
# export PATH=$PATH:$HOME/.composer/vendor/bin
```

### laravel4 をインストール（プロジェクトの作成）
最新版＋日本語化されたコメントのlaravel4 をインストールしてみます。
```/var/www/html/``` 配下にインストールしないこと。ってまあわかりますよね。あとこちらも初回は symfony　とかいろいろとパッケージダウンロードされるので結構時間かかります。

```
# composer create-project "laravel-ja/laravel=~4.2" /var/www/laravel4-site/ --prefer-dist
```

> [composer create-project でインストールされるバージョンを指定する](http://qiita.com/shin1x1/items/476ed34858fc50669fdb)

## ビルトインサーバを使って起動してみる
とりあえず「細けー設定はどーでもいいから立ち上がるのか？」ってことで laravel をweb起動できるか確認です。
ちなみに vmつかってるときは、 ```--host``` でIPをしっかり指定しないとアクセスできない（http://localhost になるんで）そこんとこは注意すること。あと ```-port``` はデフォルトで、8080 使うのでこちらも適当に違う値にしておきます。
※ laravel.jp では アルチザンと読むそうです。

```
# cd /var/www/laravel4-site
# php artisan serve --host="192.168.11.200" --port="9090"
または
# php artisan serve --host="0.0.0.0" --port="9090"
```

![laravel4.png](https://qiita-image-store.s3.amazonaws.com/0/44540/e89f368e-ddf0-ebd0-58c6-94b208f526a0.png)


↑↑の画面表示された？よね？（汗）

## Apache で laravel4 のプロジェクトを動かす
Apache（もしくは Nginx）で laravel プロジェクトを動かす場合は、virtualhost で指定するそうです。ですので ```/etc/httpd/conf.d/``` に以下のファイルをさくっと作り、httpd を再起動します。

```text:/etc/httpd/conf.d/laravel4-site.conf
Listen 9999
NameVirtualHost 192.168.11.200:9999

<VirtualHost 192.168.11.200:9999>
    ServerName laravel4-site
    DocumentRoot /var/www/laravel4-site/public/
    <Directory "/var/www/laravel4-site/">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
```

httpd を再起動して…。```http://192.168.11.200:9999/``` にアクセスすると、オレンジ色のいつも…あれ？「Error in exception handler.」になりますね。

laravel/storage に書き込み権限が無い場合に出力されるエラーらしいので、権限を付与してあげます。

```
# cd /var/www/laravel4-site
# chmod -R 777 app/storage/
# chown -R apache:apache app/storage
```

として ```http://192.168.11.200:9999/``` にアクセスすると、オレンジ色のいつも画面がでますよね？

## laravel の初期設定
動作に問題ないっぽいですが初期設定するのを忘れていたので後付けでやっておきます。あと設定ファイルは必ずバックアップするようにしましょう。
app.php の変更箇所は、５か所（key は自動生成されるけど・・・）あります。

```
# cd /var/www/laravel4-site/app/config
# cp app.php app.php.old
# vi app.php
 'debug' => true,
 'url' => 'http://192.168.11.200',
 'timezone' => 'Asia/Tokyo',
 'locale' => 'ja',
 'key' => 'a0000GOlufqLFLe6OaLFcbFzsoAnxcRm',
```

データベースの設定は、次回にね！

### ところでバージョンおいくつなの？？
プロジェクトのあるディレクトリで以下のようにするとバージョンがわかります。

```
# cd /var/www/laravel4-site
# php artisan --version
Laravel Framework version 4.2.17
```

## 参考にさせて頂きましたサイト様

> [初めてのLaravel（PHP Framework）](http://qiita.com/CyberMergina/items/857f63e6d20f8958ee1f)
> [最新鋭のPHPフレームワーク「Laravel4」でWeb開発 | (1)導入編](http://www.monster-dive.com/blog/web_system/20140328_001128.php)