Laravelのドキュメントを読み解く 〜開発準備〜

# 前提
- WindowsでLaravelを使うための準備についてまとめています
- リファレンスなどをもとに学習したことを自分が理解しやすいように直してまとめています
- Laravelの環境構築にはLinuxコマンドの使い方やvimの使い方に関する知識などが必要です
- Laravel5.4のリファレンスをもとにしています

# 概要
- Laravelを導入するには一定の環境要件を満たす必要があります
- その環境を手動で用意するのは大変苦労がいりますが、Laravelには Homesteadという専用の仮想マシンを作成するための方法が標準で用意されています
	- Homesteadを使わずに環境を構築する方法はこちら
		- http://qiita.com/yunomi/items/bb1358ed205ffe541c2d
- Laravelを始めるためには、ローカルにComposerをインストールしておく必要があります
- ComposerをインストールするためにはPHPをインストールしておく必要があります
- gitがWindows環境で使えるようにしておく必要があります

# Windows 10 に PHP 7.1 と Composer をインストールする
https://mseeeen.msen.jp/install-php7-and-composer-in-windows-10/

# 仮想開発環境の構築(Laravel Homestead)
1. VirtualBoxとVagrantのインストールを終えたら、早速Laravel専用のBoxを追加します

		vagrant box add laravel/homestead
2. 環境を構築したい階層に移動してgitを使ってHomesteadのデータをクローンします

		git clone https://github.com/laravel/homestead.git Homestead
3. クローンが完了したら「cd Homestead」でディレクトリを移動する。そして、masterブランチは常に安定しているわけではないので、バージョンタグがついたHomesteadにブランチを変更する。

		git checkout v5.4.0

4. ブランチを切り替えたら、Homesteadディレクトリ内で下記のコマンドを実行し、Homestead.yamlを作成する。Homestead initialized!と表示されたら成功です

		./init.sh

5. 開発環境へ接続する際、毎回パスを入力するのは不便なので下記コマンドを実行し、秘密鍵、公開鍵（id_rsa と id_rsa.pub）を作成します。既に作成済みの場合は不要です
	- http://qiita.com/digdagdag/items/9e5c061e7d86e0af9a57
	- 鍵の作成時に入力を3度求められます。一度目はEnter/二度目、三度目は鍵に使うパスワードを入力します

6. Homesteadディレクトリに再度戻り以下のコマンドを実行し、Homestead.yamlを編集します。このファイルを編集することでHomesteadの設定を変更することができます

		vim Homestead.yaml(またはvi Homestead.yaml)


7. Homestead.yaml内の下記の部分を適時編集します

	```php:Homestead.yamlのサンプル.txt
	---
	ip: "192.168.10.10"　←　開発環境として割り当てるIPアドレス
	memory: 2048
	cpus: 1
	provider: virtualbox　←　使うVM
	
	authorize: ~/.ssh/id_rsa.pub　←　SSH公開鍵の場所
	
	keys:
	    - ~/.ssh/id_rsa　←　秘密鍵の場所
	
	folders: ← Windows上と仮想マシン上とで共有したいフォルダを指定します
	    - map: ~/MyVagrant　←　Windows上の開発環境(D:/Developなどの指定も可)
	      to: /home/vagrant/Code　←　仮想マシン上の開発環境
	
	sites:
	    - map: homestead.app　←　ホスト名
	      to: /home/vagrant/Laravel/public　←　公開するルート
	
	databases:
	    - homestead
	```

8. なお、プロビジョニング後にHomestead.yamlを変更した場合、下記コマンドを実行する必要があります

		vagrant reload --provision
				

9. すべての準備が整ったのでHomesteadディレクトリ内で下記のコマンドを実行し、仮想開発環境を構築します

		vagrant up


# Laravelのインストール
1. Homesteadディレクトリで下記コマンドを実行し仮想開発環境へアクセスします
	- RLoginなどのツールで接続する場合は下記のコマンドは不要です

			vagrant ssh

2. Homesteadを使うと、仮想開発環境にはcomposerが予めインストールされているので、composerを使ってLaravel環境を構築します。phpStorm側でLaravelのプロジェクトで作成して、それをサーバにアップロードするという形でも可能です

		composer create-project laravel/laravel --prefer-dist Laravel(ディレクトリ名となる)
3. ブラウザで192.168.10.10にアクセスした際、Laravelのデフォルトページが表示されていればインストール成功です

# Laravelの設定変更
## 概要
- Laravelの設定ファイルは、configディレクトリに保存されています
- configディレクトリの設定は.envファイルの値を参照しています
- .envファイルを用意することで開発環境、本番環境の切り替えを容易にしています
- .envファイルがない場合は、.env.exampleをコピーして使います
	- コマンド：「cp .env.example .env」

## .envファイルの主要な変更箇所
- 下記の内容を設定した内容に沿うように変更する
	- DB_DATABASE=hogehoge
	- DB_USERNAME=hogehoge
	- DB_PASSWORD=hogehoge
	- APP_DEBUGをtrueにしておく
		- trueにしておくと例外発生時にスタックトレースが表示される
- .envファイル内にアプリケーションキーを登録する(APP_KEY欄がSomeRandomStringの場合)
	- コマンド：「php artisan key:generate」

## app.phpファイルの主要な変更箇所
- 下記の内容に変更する
	- 'timezone' => 'Asia/Tokyo',
	- 'locale' => 'ja',


# 備考
- フォルダ構造について
	- https://readouble.com/laravel/5.4/ja/structure.html
- ipアドレスではなく通常のURLのようなアクセス方法をしたい場合
	- https://readouble.com/laravel/5.4/ja/homestead.html#configuring-homestead
- アプリケーションの高速化のために設定ファイルをキャッシュする（本番適用時）
	- コマンド：「config:cache Artisan」
	- https://readouble.com/laravel/5.4/ja/configuration.html#configuration-caching
- SQLをログに残す
        - http://kimagureneet.hatenablog.com/entry/2016/08/18/194857

# Macの場合
Macの場合であっても基本はWindowsとほぼ同じです。Macの場合、Mac環境側の構築がWindowsと異なります

- MacにHomebrewを導入する
	- http://qiita.com/_daisuke/items/d3b2477d15ed2611a058
- MacのPHP5をPHP7にbrewでアップデートする
	- http://qiita.com/yamatmoo/items/4ff2fe1785f771e67e08
- MacでComposerのインストール
	- プラグインが最新でない場合はエラーが発生する
		- エラーが発生した場合は、コマンドで　vagrant plugin update と打つ
	- http://qiita.com/zeriyoshi/items/f995668d435d3c7a7d9d

# 参考
- Linuxコマンド
	- http://childhooddream.sakura.ne.jp/2017/06/26/linux%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/
- Vimの操作について
	- http://childhooddream.sakura.ne.jp/2017/07/02/vim%E3%81%AE%E6%93%8D%E4%BD%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
- エラーが出てlaravelのプロジェクトを作成できない場合の対処法(DLの高速化)
	- https://packagist.jp/
	- composer config -g repositories.packagist composer https://packagist.jp
- 【Laravel超入門】開発環境の構築（VirtualBox + Vagrant + Homestead + Composer）
	- http://qiita.com/7968/items/97dd634608f37892b18a