【Laravel 5.5】Homesteadでの環境構築メモ

# 【Laravel 5.5】Homesteadでの環境構築

## 0. 始めに

二つ目以降のプロジェクトを作成するときに、作り方を忘れるのでメモ.
おそらく 5系なら同様の操作で構築可能です.
~~これを読むよりも、公式を読んだほうが正確だとおもいます.~~


### 0.1 環境
- プロジェクト名: thunder
- テスト用のサイトURL: thunder.test
- データベース名: thunder
<br><br>
- windows 10 64bit
- vagrant 2.0.0
- Homestead(virtualbox 4.0.0)
- PHP 7.1.13
- Laravel 5.5
- mysql 5.7
<br><br>
- **事前に `vagrant` と `homestead` 、 `composer` と `laravel installer` の設定が終了している前提**
- 日本国内で使うサイトを想定
- ユーザー認証あり
- 二つ書いてあったら、上がサンプル、下が実行例

### 0.2 リンク
> Laravel
> http://laravel.jp/

> ReadDouble
> https://readouble.com/laravel/5.5/ja/installation.html





## 1. サイトの初期起動まで

### vagrant 環境に接続する  
```console
vagrant up
vagrant ssh
```




### 1.1 vagrant 環境に laravel のインストール  
```console
$ cd ~/Code
$ composer create-project --prefer-dist "laravel/laravel=5.5.*" <プロジェクト名>
```
```console
$ cd ~/Code
$ composer create-project --prefer-dist "laravel/laravel=5.5.*" treeking
```
- 個人的にはアプリケーション名を付けることが多い
- 実行する際のディレクトリに注意
- ディレクトリが存在すると作成失敗
- `laravel new <アプリケーション>` だと、最新のバージョンがダウンロードされる
- 私の環境では composer を使用したほうが確実（な場合が多い）




### 1.2 windows の homestead.yaml にサイトの情報を追加  
```yaml:Homestead.yaml
sites:
  - map: <テストドメイン名>
    to: /home/vagrant/Code/<プロジェクト名>/public
```
```yaml:Homestead.yaml
sites:
  - map: thunder.test
    to: /home/vagrant/Code/thunder/public
```

- 私の環境では `C:\Users\<ユーザー名>\.homestead\Homestead.yaml`
- **編集には `TeraPad` や `atom` を使用する**
- map と to の組みで複数記載可能



### 1.3 windows の hosts にサイトの情報を追加  
```text:hosts
<テスト用のIPアドレス>     <テスト用のサイトのURL>
```
```text:hosts
192.168.xxx.yyy  thunder.test
```

- 私の環境では `C:\Windows\System32\drivers\etc\hosts`
- chrome では ```.app``` 等の開発ドメインは使用できなくなりました
- 個人的には ```<アプリケーション名>.test```で統一
- laravel では public ディレクトリをルートにする
- hosts は即時適応されるらしい
- 会社などでプロキシ等が設定されている場合、 hosts を見てくれない可能性がある
- そのような場合は素直に `php artisan serve` でアクセス（`-p` でのポート指定をおすすめ）

> 参考：Google Chromeで.devなどの開発DomainがHTTPSに変更される。
> https://qiita.com/lara_bell/items/f7f3c5189530090229ed



### 1.4 windows で vagrant 環境に設定を読み込ませる  
```console
vagrant provision
```



### 1.5 chrome でアクセス確認

- 今回の場合は `http://thunder.test/` にアクセス
- 失敗する場合は以下のファイルにヒントがある可能性がある
- `<プロジェクト名>/storage/logs/laravel.log`
- nginx や apache のログ


### 1.6 github 等に上げる（スキップ可能）  
```console
$ cd thunder
$ vim ./readme.md
$ vim ./.gitignode

$ git init
$ git config user.name "<gitのユーザー名>"
$ git config user.email <gitのメールアドレス>
$ git add --all
$ git commit -m "first commit"
$ git remote add origin https://github.com/<githubユーザー名>/<リポジトリ名>.git
$ git push -u origin master
```

- 先に github でリポジトリを作成しておく.
- `Initialize this repository with a README` のチェックを入れると、勝手にコミットされているので注意.
- `readme.md` が laravel のものなので、自身のものに修正.
- お好みで `.gitignore` の編集を.
- ユーザー名とメールアドレスを指定すると、コミットした人が分かる.

- first commit はまっさらな状態が良い.(個人的こだわり)
- 個人的にはコマンドで git を扱うのはここまで.　ここからは素直に `Sourcetree` を使う.





## 2. laravel の開発開始まで

ここからはお好みで.
以下、オレオレ環境用メモ.

### 2.1 vagrant 環境で各種ライブラリを入れる  
PHP のライブラリ

```console
$ composer require "doctrine/dbal"
```

Laravel のライブラリ

```console
$ composer require "laravelcollective/html":"^5.5"
$ composer require "barryvdh/laravel-ide-helper"
$ composer require "barryvdh/laravel-debugbar --dev"

$ php artisan vendor:publish
```

- バージョン指定はいい感じにしてください
- パージョンが足りなければエラーが出るため、それに従う感じで
- laravel 5.5 から package discover が導入されたため、対応していれば config をいじらなくても良くなった
- 対応していない場合は、各種 github 等を読んで config の書き換え
- おすすめがある場合は、教えてください（懇願）

> LaravelCollective/html
> https://github.com/LaravelCollective/html

> barryvdh/laravel-ide-helper
> https://github.com/barryvdh/laravel-ide-helper

>  barryvdh/laravel-debugbar
> https://github.com/barryvdh/laravel-debugbar





### 2.2 vagrant 環境で laravel の環境設定を行う  
```console:.env
APP_NAME=<お好みで ex)thunder_local>
APP_URL=<サイトのURL>
DB_DATABASE=<データベース名>

DEBUGBAR_ENABLED=true
```

```php:config/app.php
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
'fallback_locale' => 'en',
```


```console
// 英語のリソースをコピー
$ cp -r ./resources/lang/en ./resources/lang/ja
```

- `lang/ja` は適宜日本語化する
- 翻訳は先人の力を借りるべし（ぱっと見つけたものを以下に記載）

> rito-nishino/Laravel5.5-Japanese-Language-fileset
> https://github.com/rito-nishino/Laravel5.5-Japanese-Language-fileset

> sutara79
> https://gist.github.com/sutara79



### 2.3 Model をフォルダに移動する

```php:config/auth.php
'providers' => [
  'users' => [
    'model' => App\Models\User::class,  
  ],
],
```

```console
$ mkdir ./app/Models
$ mv ./App/User.php ./App/Models/User.php

$ vim ./App/Models/User.php
  - namespace App;
  + namespace App/Models;

$ php artisan dump-autoload
```

- 大体 model が多くなるので早めに対処
- この辺りは開発者の好みになると思われる



### 2.4 DB の準備と認証機能の実装  
```console
$ mysql -u <mysql ユーザー名> -p -e "CREATE DATABASE <データベース名>;"

$ php artisan make:auth
$ php artisan migrate
```


- laravel にはログインシステムが既に用意されている
- 大抵これで事足りる（拡張がいる場合もこれをベースとすることが多い）



### 2.5 chrome でアクセス確認 その2

- 今回の場合は `http://thunder.test/` にアクセス
- 右上に `LOGIN` と `REGISTER` が生えているはず
- 失敗する場合は、大体データベースが悪い






## 3. html 周り  
また今度




## 4. 終わりに
- Laravel 便利！