---
lang:`ja-jp`
robots:content="noindex,nofollow,noarchive"
---
###### tags: `Laravel` `Laradock`
Laradockを使ったLaravel開発環境構築 + Laravel-admin導入
===

[TOC]
# 本日のゴール
* Laradockを使った仮想環境構築
* Laravelインストール
* Laravel-adminインストール
* Laravel Auth導入(ログイン機能)の追加+mailhogでメール認証確認
* ~~Laravel-adminのログイン画面変更(なんちゃってWOW)~~ ※次回
* ~~登録済みユーザーをLaravel-adminで確認~~ ※次回
# 前提
* Docker Desktop(homeの場合VirtualBox)がインストールされている事
# 出来ること・メリット
* 仮想環境を構築するのが楽(Dockerの知識がなくても大体出来る)
* サービスを追加するのが楽(大体は揃ってる)
* DockerFileやdocker-compose.ymlを自作する必要なし!
* Laravel以外のプロジェクトでも使える
# フォルダ構成
```
study-laradock/ : 勉強会用作業ディレクトリ
├ laradock/ : Laradockを入れるフォルダ
│ └ env-example
└ www/
└ larawow/ : Laravelを入れるフォルダ
├ config
├ app
:
└ .env.example
```
# 仮想環境&サービス
* Apache2系
* MySQL5.7
* phpMyAdmin
* PHP7.2
* Laravel5.8
* Laravel-Admin
* Mailhog(受信メール確認用)
# 作業開始
## 1. 作業ディレクトリ作成
* ローカルに作業ディレクトリを作成してください。
* 例:C:\Users\{ユーザ名}\PhpstormProjects\study-laradock
## 2. Install laradock
作成した **作業ディレクトリ** に移動してから作業を開始してください。
```
$ cd ~/PhpstormProjects/study-laradock
```
Laradockのインストール
```
$ git clone https://github.com/Laradock/laradock.git
```
### 2.2 Win HomeのDocker Toolboxで以下エラーが出た場合
```
ERROR: Service 'mailhog' failed to build: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: read udp 10.0.2.15:60158->10.0.2.3:53: i/o timeout
```
1. Docker Toolbox起動
2. Docker Quickstart Terminal起動
3. 以下コマンドよりDockerMachineにssh接続
```
$ docker-machine ssh default
```
4. 名前解決修正
```
$ sudo vi /etc/resolv.conf
以下名前解決修正
-----
nameserver 10.0.2.3
↓
nameserver 8.8.8.8
```
## 3. Laradock 環境変数の編集
デフォルトで用意されている **env-example** を **.env** にコピーし、
設定を編集していきます。
```
$ cp laradock/env-example laradock/.env
$ vi laradock/.env
```
```
# APPのパスを修正
APP_CODE_PATH_HOST=../
↓
APP_CODE_PATH_HOST=../www
# MySQLデータ永続化のパス変更
DATA_PATH_HOST=~/.laradock/data
↓
DATA_PATH_HOST=.laradock/data
# apacheの設定
APACHE_DOCUMENT_ROOT=/var/www
↓
APACHE_DOCUMENT_ROOT=/var/www/larawow/public
# MySQLのバージョンを5.7に変更
MYSQL_VERSION=latest
↓
MYSQL_VERSION=5.7
```
## 4. build & 起動 & コンテナにログイン
laradockフォルダに移動し、イメージのビルド&起動します。
初回ビルド ⇒ **約10~20分**
```
$ cd laradock/
# build
$ docker-compose build apache2 mysql workspace phpmyadmin mailhog
# 起動
$ docker-compose up -d apache2 mysql workspace phpmyadmin mailhog
# web serverにbash接続 ※winの場合winptyを付ける
$ winpty docker-compose exec workspace bash
```
## 5. Laravel インストール
インストール方法は2パターンあります。
* インストーラー経由でインストールする方法
* ターミナルでComposerのcreate-projectコマンドを実行し、Laravelをインストールする方法
### インストーラー経由
#### 5.1
ホストOSにlaravel installerを追加
```
composer global require laravel/installer
```
#### 5.2 環境変数の追加
laravel コマンドを実行出来るように、Windows環境変数にパスを追加
```
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin
```
#### 5.3 Laravel インストール
```
laravel new larawow
```
### ターミナル経由
#### 5.1 Create Project Laravel
コンテナに接続後、Laravelをインストールしていきます。
※/var/www ⇒ study-laradock/www に該当します。
※--prefer-dist : zipでダウンロード指定, 高速
```
# バージョン指定
$ composer create-project --prefer-dist laravel/laravel larawow "5.8.*"
# 最新
$ composer create-project laravel/installer larawow
```
## 5. Laravel 環境変数の編集
LaravelのDB接続情報をLaradockに合わせます。
ついでにsendmailの内容を確認できるツール、 **mailhog** の設定も変更します。
```
$ cd larawow
$ vi .env
```
```
# mysqlの設定
DB_CONNECTION=mysql
DB_HOST=mysql #127.0.0.1となっているでmysqlに変更
DB_PORT=3306
DB_DATABASE=default #homesteadとなっているのでdefaultに変更
DB_USERNAME=default #homesteadとなっているのでdefaultに変更
DB_PASSWORD=secret
# mailhogの設定
MAIL_DRIVER=smtp
MAIL_HOST=mailhog # smtp.mailtrap.io をmailhogに変更
MAIL_PORT=1025 # 2525 を1025に変更
MAIL_USERNAME=user # null をuserに変更
MAIL_PASSWORD=password # null をpasswordに変更
MAIL_ENCRYPTION=null
```
## 7. Admin系のツールを導入
### 7.1 Install laravel-admin
laravel-adminをインストールしていきます。
```
$ composer require encore/laravel-admin
$ php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
$ php artisan admin:install
```
laravel-admin設定微調整
```
# config/filesystems.php の設定変更, disksに以下追加
'admin' => [
'driver' => 'local',
'root' => public_path('uploads'),
'url' => env('APP_URL').'/uploads',
'visibility' => 'public',
],
# config/admin.php の prefix を wowに変更(管理画面のURL
'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'),
↓
'prefix' => env('ADMIN_ROUTE_PREFIX', 'wow'),
```
### 7.2 Install Laravel Voyager
```
$ composer require tcg/voyager
$ php artisan voyager:install --with-dummy
```
## 8. 管理画面ログイン
※Win Homeの場合、「localhost」⇒「**192.168.99.100**」
* laravel
* http://localhost/
* laravel-admin
* http://localhost/wow/auth/login
* admin / admin
* phpMyAdmin
* http://localhost:8080/
* サーバ: mysql
* ユーザ名: default
* パスワード: secret
* mailhog
* http://localhost:8025/
## 9. Laravel Auth導入
Laravel Authを導入し、フロントから
* 会員仮登録
* メール認証
* 会員本登録
を確認します。
デフォルトでは即本登録されるので、
仮登録から本登録への **メール認証機能** を **有効化** させていきます。
```
# Laravel Auth導入
$ php artisan make:auth
```
メール認証を有効化させます。
```
# app/User.php
class User extends Authenticatable
↓
class User extends Authenticatable implements MustVerifyEmail
```
/home を 本登録していないと閲覧できないようにします。
```
# routes/web.php
Auth::routes();
↓
Auth::routes(['verify' => true]);
Route::get('/home', 'HomeController@index')->name('home');
↓
Route::middleware('verified')->group(function() {
// 本登録ユーザーだけ表示できるページ
Route::get('/home', 'HomeController@index')->name('home');
});
```
## 10. Laravel Auth 動作確認
仮登録から本登録の流れを確認していきます。
最初に[mailhog](http://localhost:8025/)にアクセスしておいてください。
* 仮登録
* http://localhost/register
* 名前、メールアドレス、パスワードを入力
* メールアドレスはmailhog上で受け取るので何でもOKです。
* 
* 入力したらRegisterボタンから送信
* mailhogで送信メール確認
* 送信するとmailhogのwebpushが届きます。
* 
* mailhogを見ると、送信メールが確認出来ます。
* 
* Verify Email Address をクリックすると本登録完了!
* 
* /home にログイン状態でアクセス出来たら完了です。
* 