Laravelも7になったしLaradockもv10になったのでWindowsでのWEB開発環境構築としてインストールと各種設定をPHP7.4へのアップグレードも含めてまとめておきます。なお、Dockerがインストールされていることが前提です。
目次
Laradockのインストール
PS C:\> mkdir laravel7
PS C:\> cd laravel7
# Laradockをクローンして環境設定
PS C:\laravel7> git clone https://github.com/laradock/laradock.git
Laradockの設定
PS C:\laravel7> cd laradock
# Laradock環境設定ファイル作成
PS C:\laravel7\laradock> cp env-example .env
Laradock環境設定ファイルを編集
# MySQLのデータディレクトリ設定
DATA_PATH_HOST=.laradock/data
MYSQL_VERSION=5.7
Laradock起動
C:\laravel7\laradock> docker-compose up -d workspace mysql nginx phpmyadmin
エラー発生
ERROR: for phpmyadmin Cannot start service phpmyadmin: driver failed programming external connectivity on endpoint laradock_phpmyadmin_1(082d68484d846f4c8e254d2e7fa0a10afb225bf0050eb2997e4baba3d31c576e): Bind for 0.0.0.0:8080 failed: port is already allocated
※v10.0からWORKSPACEのコンテナが8080番ポートを使用しているみたいで同じく8080番ポートを使用するphpmyadminは起動できないようなのでLaradockの環境設定でWORKSPACEが使用しているポートを変更する。
WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080
↓
WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8088
※8088番に設定した。
ついでにPHPアップグレード
// WORKSPACEコンテナに入る
C:\laravel7\laradock> docker-compose exec workspace bash
// PHPのバージョン確認
root@f348ab4e7940:/var/www# php --version
PHP 7.2.20-2+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jul 25 2019 11:42:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.20-2+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
// WORKSPACEコンテナから抜ける
root@f348ab4e7940:/var/www# exit
PHPのバージョンを7.4に設定
PHP_VERSION=7.4
PHPアップグレード
C:\laravel7\laradock> docker-compose build php-fpm
C:\laravel7\laradock> docker-compose build workspace // CLIもアップグレード
// Laradock起動
C:\laravel7\laradock> docker-compose up -d workspace mysql nginx phpmyadmin
// WORKSPACEコンテナに入る
C:\laravel7\laradock> docker-compose exec workspace bash
root@f348ab4e7940:/var/www# php --version
PHP 7.4.5 (cli) (built: Apr 19 2020 07:36:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies
Laravel7
インストール
root@f348ab4e7940:/var/www# composer create-project laravel/laravel project1
–prefer-distを付けるとzipでダウンロードするらしいので
# composer create-project –prefer-dist laravel/laravel project1
のほうがいいね!
タイムゾーンとロケールの設定
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
日本語化
https://github.com/caouecs/Laravel-lang
src/jaディレクトリをresources/lang以下に配置
json/ja.jsonも同じくresources/lang以下に配置
※ユーザ登録ページやメールを日本語化してくれます。
データベースとメール(Gmail)を設定
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=alpha
DB_USERNAME=root
DB_PASSWORD=root
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxxxxxx@gmail.com
MAIL_PASSWORD=xxxxxxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=xxxxxxxx@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
Auth(ユーザ認証)インストール
root@f348ab4e7940:/var/www# composer require laravel/ui
root@f348ab4e7940:/var/www# php artisan ui vue --auth
root@f348ab4e7940:/var/www# php artisan migrate
root@f348ab4e7940:/var/www# npm install
「npm ERR! Maximum call stack size exceeded」とかエラーが出た。
※何度か再試行しないとダメかも・・・
# npm cache clean –force
で解決するかも。
コンパイル
root@f348ab4e7940:/var/www# npm run dev
# または
root@f348ab4e7940:/var/www# npm run watch
SSLエラー対策
stream_socket_enable_crypto(): SSL operation failed with code 1.
OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
※config/mail.phpの設定パターンが変わりました。
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
],
・・・
ユーザメール認証
Userモデルの変更
//class User extends Authenticatable
class User extends Authenticatable implements MustVerifyEmail
ルーティング
//Auth::routes();
Auth::routes(['verify' => true]);
# メール認証済のユーザだけに見せるページ
//Route::get('/home', 'HomeController@index')->name('home');
Route::get('/home', 'HomeController@index')->name('home')->middleware('verified');
# またはグループ化して
Route::middleware('verified')->group(function() {
Route::get('/home', 'HomeController@index')->name('home');
});
モデルをapp/Modelsディレクトリ以下に配置
# app/Modelsディレクトリ作成
root@f348ab4e7940:/var/www# mkdir app/Models
# app/User.phpファイル移動
root@f348ab4e7940:/var/www# mv app/User.php app/Models/
名前空間の修正
//namespace App;
namespace App\Models;
//use App\User;
use App\Models\User;
// 'providers' => [
// 'users' => [
// 'driver' => 'eloquent',
// 'model' => App\User::class,
// ],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
//use App\User;
use App\Models\User;
ユーザのホームを/userにする
public const HOME = '/home';
↓
public const HOME = '/user';
後記
WindowsでLaradockによるLaravel7のWEBシステム開発環境構築を行いました。
サンプルとして構築しておくと後はディレクトリごとコピーして
①.envを変更
②データベース変更
③# php artisan key:generate
ぐらいで同じ開発環境が構築できるので便利ですね。