【Laravel】Laravel sailを使用して環境構築をする方法を解説します。

Laravel PHP 環境構築

【Laravel】Laravel Sailを使用して環境構築をする方法を解説します。

なやむくん
Laravel Sailとは何でしょうか…。
なやむさん
Laravelの開発環境を簡単に構築したい…。

などの疑問や悩みを解決してまいります。

Laravel Sailとは

Laravel Sailは、Dockerを使ってLaravelの開発に必要な環境を簡単に構築・管理できるようにするツールです。

みつた
Dockerを使った開発環境を整えることが不慣れな場合でも、Laravel Sailを使用することで簡単に環境構築ができます!

Laravel Sailのインストール方法

それではさっそくLaravel Sailをインストールしていきます。

Laravel Sailをインストールする前に以下の条件をクリアしておく必要があります。

インストールする上での前提条件

  • Dockerのインストール
  • Composerのインストール

問題なければまずは以下のコマンドを実行します。

docker run -it -v $(pwd):/opt -w /opt laravelsail/php81-composer:latest /bin/bash

このコマンドは、Laravel Sailで使用されるDockerコンテナの中で、PHP 8.1とComposerがインストールされた環境を起動し、コンテナ内のBashシェルに入るためのコマンドです。

Bashシェルに入ることが出来たら、Laravelをインストールします。

composer create-project 'laravel/laravel:10.*' sail-example

今回はディレクトリ名を「sail-example」としていますが、任意ですので好きな名前にしてください。

これでLaravel 10.xバージョンのアプリケーションがインストールされます。

インストールがされましたら、Laravelプロジェクトディレクトリに移動します。

cd sail-example

移動したらLaravel Sailをインストールします。

php artisan sail:install

このコマンドによって、Laravel Sailがプロジェクトにインストールされ、必要なサービスの設定ファイル(docker-compose.yml)を生成することができます。

インストールが完了しましたら、sailコマンドが使用できるようになっています。

主なSailコマンド

  • sail up: コンテナを起動し、Laravelの開発環境を開始
  • sail down: コンテナを停止
  • sail build: 新しいコンテナイメージをビルド
  • sail artisan <command>: ArtisanコマンドをSail経由で実行

Dockerコンテナを起動させてみましょう。
以下のコマンドを実行します。

./vendor/bin/sail up -d

このコマンドによってLaravel Sailで定義されたDockerコンテナがバックグラウンドで起動し、ブラウザからプロジェクトにアクセスできるようになります。

http://localhost/にアクセスしてみましょう。

しかし上記のようにエラーが表示されると思います。

エラー内容

The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log

このエラーの原因は、権限が違うことでログの書き込みができないという状態になっていることです。

そのため現在使用している権限に書き換える必要があります。

まずは現在使用している権限を確認します。

whoami // ユーザー名の確認

groups ユーザー名 // そのユーザーが所属しているグループ名の確認

上記のコマンドを実行すると現在使用している権限が表示されます。

次に使用している権限に変更します。

sudo chown -R 所有者(user):グループ(group) .

-Rは指定したディレクトリとその中にあるすべてのファイルやサブディレクトリも含めて変更するオプションです。

.はカレントディレクトリ(現在のディレクトリ)を指定しています。
このディレクトリとその中にあるすべてのファイルやディレクトリが対象になります。

これでディレクトリ、ファイルの権限が変更されたと思いますので、再度アクセスをしてみてください。

みつた
ls -laで現在位置のすべてのファイル(隠しファイルも含む)の権限を確認することができます。

Laravelのページが表示されたらひとまずはOKです!

Laravelのwelcomeページ

DB接続

次にDBクライアントツールでDB接続を行います。

みつた
今回は「DBeaver」を使用して解説します。

まず接続設定は.envファイルに記載されている内容を元に設定します。

.envファイルのDB部分の記述
DBeaverの接続設定

このように設定したら「テスト接続」を行い、成功したらOKです。

テスト接続時に「Public Key Retrieval is not allowed」が出る場合

このエラーが表示される主な原因は、クライアント(Laravel、phpMyAdmin、またはMySQLクライアント)が、サーバーに接続する際にパスワードを非セキュアな方法で送信しようとしていることです。

具体的には、MySQLが caching_sha2_password 認証方式を使用している場合に、公開鍵を取得してパスワードを暗号化する必要がありますが、デフォルトでは「公開鍵の取得が許可されていない」ため、このエラーが発生します。

こちらのエラーを解消するには、接続設定の「ドライバの設定を編集」で以下のプロパティ追加します。

allowPublicKeyRetrieval=true

これでエラーが解消されDB接続が可能になるはずです。

Laravel sailエイリアスの設定

最後にエイリアスの設定を行います。

なやむさん
エイリアスとは何ですか?
みつた
エイリアス(alias)とは、コマンドや文字列に短い名前を付けて、元のコマンドを簡単に呼び出せるようにするための仕組みです。

Sailは/vendor/binのフォルダに入っているため、サーバーを起動するたびに./vendor/bin/sail upとコマンド入力しなくてはならないのは少々面倒です。

そのためエイリアスの設定をすることで、短いコマンド文でサーバーを起動することができるようになるので便利です。

設定方法ですが、まずUbuntuのターミナルで以下のコマンドを実行します。

vim ~/.bashrc

このコマンドは、~/.bashrc ファイルを編集して、Bash シェルの設定を変更またはカスタマイズするために使用します。ここでエイリアスを作成できます。

編集画面が表示されたら、エイリアスを追記するためにIキーを押してINSERTモードに変更します。

モード変更できましたら、最下部など適当な場所に以下の内容を追記します。

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

追記したらEscキーでINSERTモードを抜けて:wqEnterキーで保存して編集を終了できます。

最後に記載したコマンドを~/.bashrcに反映させるために以下コマンドを実行します。

source ~/.bashrc

ここまで手順を踏めたら一度ターミナルを再起動する必要があるのでwsl --shutdownを実行し、再起動出来たら以下のコマンドを実行してみてください。

sail up -d

これで./vendor/bin/sail up -d同様にサーバーを起動することができればOKです!

  • この記事を書いた人
  • 最新記事

みつた

完全未経験&異業種から30歳の年でIT企業に転職。

Web系開発言語が好き。
どちらかというとバックエンドよりもフロントエンドが好き(現時点では…)

最近はサウナと観葉植物にハマっている。
野球が好きで一応投手。

-Laravel, PHP, 環境構築