そろそろ暖かくなってきたし CentOS6 に Laravel5 をインストールしてみた


最小構成かな？
またまたvagrant上に構成しています。firewallの設定は割愛します。
vagrant環境は以下の通りです。
OS：CentOS6.5
PHP：5.6.7
MySQL：5.5.43

## Vagrantfile
こんな感じ

```ruby:Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "centos65"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./data", "/var/www/html"
end
```

## Laravelに必要なもの
PHP：5.4 以上
PHPモジュール：php-mcrypt(えむくりぷとと読むらしい…), php-mbstring, php-pdo, php-mysqlnd, php-tokenizer(これ使ってるのか？)
必要のないものはインストールしません。
これがいまのところベターな構成ではないでしょうか。

## PHPをインストール
PHP5.4以上ということですが、せっかくなので5.6をインストールします。

1. PHP5.6に必要なremiレポジトリを追加します。

		
	```bash:console
	$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
	```
	
1. PHPと関連モジュールたちをインストール

	```bash:console
	$ sudo yum install -y --enablerepo=remi --enablerepo=remi-php56 php php-mcrypt php-mbstring php-pdo php-mysqlnd php-tokenizer
	```
	
1. 確認

	```bash:console
	$ php -v
	PHP 5.6.7 (cli) (built: Mar 19 2015 15:09:09)
	Copyright (c) 1997-2015 The PHP Group
	Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
	```
	
## Composerを手に入れる
Laravelは基本的にComposerでインストールします。Composerをゲットしましょう。

1. Composerをローカルインストール

	```bash:console
	$ curl -sS https://getcomposer.org/installer | php
	```

1. 今回はグローバルインストールしたいので、すでにPATHが通っているディレクトリに移動させます。

	```bash:console
	$ sudo mv composer.phar /usr/local/bin/composer
	```

1. 確認

	```bash:console
	$ composer
	   ______
	  / ____/___  ____ ___  ____  ____  ________  _____
 	 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
	/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
	\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
	Composer version 1.0-dev (921b3a0eba139820716f7aeefb553197c14656d8) 2015-04-15 18:27:04
	```

## Laravelインストーラーを手に入れる

1. 公式のインストーラーがあるので、ゲットする。

	```bash:console
	$ composer global require "laravel/installer=~1.1"
	```

1. PATHを通す

	```bash:console
	$ echo 'export PATH=~/.composer/vendor/laravel/installer:$PATH' >> ~/.bash_profile
	```

1. 設定を反映

	```bash:console
	$ source .bash_profile
	```
	
1. 確認

	```bash:console
	$ laravel
	Laravel Installer version 1.2.0
	```
	
## Laravelプロジェクトを作成する

1. さきほどPATHを通したlaravelコマンドを使う

	```bash:console
	$ laravel new test
	Crafting application...
	Generating optimized class loader
	Compiling common classes
	Application key [hogehogehogehogehoge] set successfully.
	Application ready! Build something amazing.
	```
	今回はtestというプロジェクトを作成しますが、各自変えてください。
	rails ne.. うっ頭が…

## 動かしてみる

1. Laravelにはアーチさんという職人がいるそうです。この方がビルトインサーバーもやってくれます。
	
	```bash:console
	$ cd test
	$ php artisan serve --host 0.0.0.0
	Laravel development server started on http://0.0.0.0:8000/
	
	```
	
	[artisan](http://ejje.weblio.jp/content/artisan)【名詞】
	熟練工, （腕のいい）職人
	多分読みはアーチさんではなくアルチザン…
	
	この状態でhttp://192.168.33.10:8000 にアクセス

	![Imgur](http://i.imgur.com/xtTMfvx.png)
	おー
	なんかナウいぞ
	
## Apacheで動かす
1. 関連モジュールとしてインストールされる記憶があったけど、インストールされていないならインストールする。

	```bash:console
	$ sudo yum install httpd
	```

	```bash:console
	$ sudo service httpd start
	Starting httpd: httpd: apr_sockaddr_info_get() failed for vagrant-centos65.vagrantup.com
	httpd: Could not reliably determine the servers fully qualified domain name, using 127.0.0.1 for ServerName
											[  OK  ]
	```
	起動した
	ServerName変えろよって怒られる。いつものこと。
	
1. 自動起動の設定もしちゃう

	```bash:console
	$ sudo chkconfig httpd on
	```
	
1. 確認
	http://192.168.33.10 アクセス
	
	![Imgur](http://i.imgur.com/ksGkUyw.png)
	
	ここまではOK
	ここでさっきのLaravelホーム画面みたいなの出したい
	
## とりあえずvagrantのsync設定書き換える
vagrant使ってない人は飛ばしてください。

```ruby:Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "centos65"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./data", "/var/www/html", owner: "apache", group: "apache", :mount_options => ["dmode=775"]
end
```

ディレクトリの所有者とグループをApacheに変更しつつ、apacheユーザーとapacheグループのみにread & write権限を付与

```bash:console
$ vagrant reload
```
リロードします。

## プロジェクトをドキュメントルートに移動

1. 普通にmv

	```bash:console
	$ sudo mv test/ /var/www/html/
	```

1. vagrant使ってない人はここで権限の設定しとく

	```bash:console
	$ sudo chown -R apache:apache /var/www/html/test/
	$ sudo chmod -R 775 /var/www/html/test/
	```

## Apacheの設定からドキュメントルートとか設定

1. ドキュメントルートを書き換える

	```bash:console
	$ sudo sed -i 's_DocumentRoot \"/var/www/html\"_DocumentRoot \"/var/www/html/test/public\"_' /etc/httpd/conf/httpd.conf
	```
	**プロジェクト名testの部分は各自書き換えてください**
	
1. Apache起動するたびに怒られるのでServerNameも書き換える

	```bash:console
	sudo sed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1/' /etc/httpd/conf/httpd.conf
	```
	
1. .htaccessも許可しとく

	```bash:console
	$ sudo sed -i '/<Directory \"\/var\/www\/html\">/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
	```
	こいつを変えておかないとルーティングがうまくいかない。
	
1. Apache再起動する

	```bash:console
	$ sudo service httpd restart
	Stopping httpd:                                        [  OK  ]
	Starting httpd:                                        [  OK  ]
	```
	もう怒られない。
	
1. 確認
	http://192.168.33.10 アクセス
	
	![Imgur](http://i.imgur.com/xtTMfvx.png)
	
	おぉ
	
## Laravel触ってみる
1. http://192.168.33.10/home アクセス

	![Imgur](http://i.imgur.com/mL3dag6.png)
	
	どうやらScaffoldでユーザー周りは作成されている模様
	
	右上のRegisterから新規ユーザー作ってみる
	
	![Imgur](http://i.imgur.com/FxiFHIx.png)
	
	register
	
	![Imgur](http://i.imgur.com/54INmcA.png)
	
	…せやな
	
## データベースに接続する

1. MySQLをインストールする。

	```bash:console
	$ sudo yum install -y --enablerepo=remi mysql-server
	$ sudo service mysqld start
	Starting mysqld:                            [  OK  ]
	```
	
	自動起動しとく
	
	```bash:console
	$ sudo chkconfig mysqld on
	```
	
1. データベースを作成する
	
	```bash:console
	$ mysql -uroot
	mysql> create database laravel;
	mysql> \q
	Bye
	```
	データベース名laravelにしましたが、好きな名前で構いません。
	
1. 設定ファイルを作成する	
	
	```bash:console
	$ cd /var/www/html/test/
	$ sudo vi .env
	```
	
	```:.env
	DB_HOST=localhost
	DB_DATABASE=laravel
	DB_USERNAME=root
	DB_PASSWORD=null
	```
	
	DB_DATABASEはさきほどのデータベース名
	それ以外は上記のような形に書き換える
	
1. Migrateする
	
	```bash:console
	$ sudo php artisan migrate
	Migration table created successfully.
	Migrated: 2014_10_12_000000_create_users_table
	Migrated: 2014_10_12_100000_create_password_resets_table
	```
	
	これでデータベースにテーブルとかカラムとか作ってくれる
	ほんとrailsっぽい

## Laravel触ってみる(2回目)

もっかいRegister

![Imgur](http://i.imgur.com/FxiFHIx.png)

はい、ドーン！

![Imgur](http://i.imgur.com/Hih24nP.png)

サインアップできました。
なんかもうお腹いっぱい。

## 終わりに

これから新卒とか、入学とかでPHP始めようと考えてる人の役に立てばと思う。Laravelのコードはまだ書いてないけど、多分これからLaravel使っていくと思うし、またエラーで悩んだりしたらTips残したい。