2020年9月8日に新しくLaravel8がリリースされました。LTS(long term support)ではないので1年間のサポートになります。Laravel7から半年しか経過していないのであまり変わっていないだろうと思っている人も多いかもしれません。しかし、Jetstreamが新たに追加され認証機能、フロントエンド部分で大きな変更がありました。認証機能については本文書ではほとんど触れてませんがLaravel8のインストール方法を確認してみましょう。

macOS Catalina環境でのLaravel8のインストールからユーザの登録について説明を行っています。

composerのインストール

LaravelをインストールするためにはPHPのパッケージ管理ツールcomposerをインストールしておく必要があります。

compserがインストールされていないではcomposerコマンドを実行してもコマンドがないので下記のエラーとなります。


 % composer
zsh: command not found: composer

composerをインストールするためにはcomposerのサイトにアクセスします。composerで検索するとサイトを見つけることができます。

composerのトップページにある”Download”ボタンをクリックしてください。

composerのトップ画面
composerのトップ画面

Downloadページの上部にあるスクリプトをコピー&ペーストして実行してください。

composerページのスクリプト
composerページのスクリプト

ターミナルで実行するとcomposerのダウンロードが行われ、カレントディレクトリにcomposer.pharファイルが保存されます。


 % php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Installer verified
All settings correct for using Composer
Downloading...

Composer (version 1.10.12) successfully installed to: /Users/mac/composer.phar

カレントディレクトリに保存されたcomposer.pharでもcomposerを実行することができます。


% ./composer.phar -V
Composer version 1.10.12 2020-09-08 22:58:51

他のディレクトリからでもcomposerが実行できるようにユーザのホームディレクトリの”.composer”(ドットがついているので注意してください)の下にvendor/binディレクトリを作成しその下にcomposerという名前に変更してcomposer.pharファイルを保存します。保存しただけではパスが通っていないためcomposerを実行することはできないのでexportコマンドでパスの追加を行います。


% mkdir -p .composer/vendor/bin
% cp composer.phar .composer/vendor/bin/composer
% export PATH="$HOME/.composer/vendor/bin:$PATH"
% which composer
/Users/mac/.composer/vendor/bin/composer
% composer -V
Composer version 1.10.12 2020-09-08 22:58:5

ターミナルをログアウトするとパスの設定が解除されるため.zshrcファイルにパスの設定を追加します。


% echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.zshrc
Mac Catalinaのデフォルトのzshシェルの場合の設定方法です.bashを利用している場合は.bashrcファイルにパスを設定する必要があります。

以上でcomposerのインストールは完了です。

Laravelのインストール

Laravelのインストールツール(パッケージ)laravel/installerのインストールを行います。


 % composer global require laravel/installer
Changed current directory to /Users/mac/.composer
Using version ^4.0 for laravel/installer
./composer.json has been created
 ・
 ・
Use the `composer fund` command to find out more!
composer create-project –prefer-dist laravel/laravel <プロジェクト名>コマンドでもLaravelのインストールが可能です。

インストールしたパッケージの情報は.composer/composer.jsonの中に記述されます。


 % more composer.json 
{
    "require": {
        "laravel/installer": "^4.0"
    }
}

laravelコマンドでLaravelプロジェクトを作成します。

Laravel7では認証機能を追加するためにLaravelインストール後にlaravel/uiパッケージをインストールしていました。Laravel8では新たな認証機能のパッケージとしてLaravel Jetstreamが追加されました。Laravel JetstreamはLaravelのインストール時に一緒にインストールすることが可能です。Laravelの認証機能を利用する場合は、”Laravelのインストール with Laravel Jetstream”でLaravelに進んでください。

 % laravel new laravel8

インストール完了後、プロジェクトディレクトリに移動して、php artisan serveコマンドを実行します。


 % cd laravel8
 % php artisan serve
Starting Laravel development server: http://127.0.0.1:8000

ブラウザで確認すると下記の画面が表示されます。

Laravel8 トップページ
Laravel8 トップページ

Laravelのインストール with Laravel Jetstream

Laravel8では新たにLaravel Jetstreamが追加されました。Laravel Jetstreamは認証に関する機能でログイン、Email認証、二要素認証を実装することができます。Jetstreamに関しては新しい機能なので別の文書で説明を行う予定です。ここではJetstreamをLaravelと一緒にインストールします。

laravelコマンドを実行する際に–jetを追加します。


 % laravel new laravel8 --jet

livewireを利用するかinertiaを利用するか聞かれるので0のlivewireを選択します。


Which Jetstream stack do you prefer?
  [0] livewire
  [1] inertia
 > 0

[commet]livewireを選択すると認証画面などのScaffoldingがLivewire + Blade, inertiaを選択するとInertis + vue.jsで作成されています。Livewireを選択するとScaffoldingを構成するファイルがすべてPHPで記述されています。なぜPHPで記述できるかを知るためにはLivewireを理解する必要があります。[/comment]

teamsを利用するかどうか確認があるのでyesを選択します。


 Will your application use teams? (yes/no) [no]:
 > yes

インストールが開始されます。インストール完了後はJavaSriptのライブラリのインストールとコンパイルを行います。

事前にnpmのインストールを行っておく必要があります。もしインストールが完了していない場合はnpmのインストールについては下記が参考になります。

Laravelをインストールしたプロジェクトディレクトリに移動して、npmコマンドを実行します。


% cd laravel8 
% npm install && npm run dev

実行後、php artisan serveコマンドを実行します。


 % php artisan serve                  
Starting Laravel development server: http://127.0.0.1:8000

ブラウザでアクセスするとエラーが発生します。Jetstremをインストールする場合はデータベースの設定まで行わないとトップページにアクセスすることはできません。

トップページでエラーが発生
トップページでエラーが発生

Sqliteデータベースの作成

動作確認のため簡易的にデータベースの作成が行えるsqliteを利用します。sqliteのデータベース用のファイルを作成します。


% touch database/database.sqlite
databaseディレクトリの中にdatabase.sqliteファイルを作成する理由はデータベースの設定ファイルである/config/database.phpファイルのデフォルト値に設定が行われているためです。

作成後、.envファイルを更新していsqliteデータベースへアクセスできるように変更を行います。


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_jetstream
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTIONをsqliteに変更します。


DB_CONNECTION=sqlite

設定後、ターミナルからphp artisan migrateコマンドを実行して、テーブルの作成を行います。


 % php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (2.08ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (1.23ms)
Migrating: 2014_10_12_200000_add_two_factor_columns_to_users_table
Migrated:  2014_10_12_200000_add_two_factor_columns_to_users_table (1.26ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (1.18ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated:  2019_12_14_000001_create_personal_access_tokens_table (1.66ms)
Migrating: 2020_05_21_100000_create_teams_table
Migrated:  2020_05_21_100000_create_teams_table (1.40ms)
Migrating: 2020_05_21_200000_create_team_user_table
Migrated:  2020_05_21_200000_create_team_user_table (1.14ms)
Migrating: 2020_09_09_022058_create_sessions_table
Migrated:  2020_09_09_022058_create_sessions_table (1.67ms)

テーブル作成後にphp artisan serveコマンドを実行してブラウザで確認すると先ほどまでエラーが出ていた画面ではなくトップページが表示されます。

画面右上にloginとregisterが表示されていることが確認できます。

login、registerが表示されたトップ画面
login、registerが表示されたトップ画面
php arisan migrate:rollbackやmirage:refreshを利用する場合はdoctrine/dbalパッケージのインストールも行っておいてください。composer require doctrine/dbal。

ユーザの登録

Registerボタンをクリックするとユーザの登録画面が表示されるのでユーザの情報を入力後、Registerボタンをクリックします。

ユーザ登録画面
ユーザ登録画面

 ログイン後は下記のDashboard画面が表示されます。

ユーザ登録後のdashboard画面
ユーザ登録後のdashboard画面

Mac環境でのLaravelのインストールからLaravelユーザの登録までの一覧の流れを確認することができました。