などの疑問や悩みを解決してまいります。
Laravel Sailとは
Laravel Sailは、Dockerを使ってLaravelの開発に必要な環境を簡単に構築・管理できるようにするツールです。
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です!
DB接続
次にDBクライアントツールでDB接続を行います。
まず接続設定は.envファイルに記載されている内容を元に設定します。
このように設定したら「テスト接続」を行い、成功したらOKです。
テスト接続時に「Public Key Retrieval is not allowed」が出る場合
このエラーが表示される主な原因は、クライアント(Laravel、phpMyAdmin、またはMySQLクライアント)が、サーバーに接続する際にパスワードを非セキュアな方法で送信しようとしていることです。
具体的には、MySQLが caching_sha2_password
認証方式を使用している場合に、公開鍵を取得してパスワードを暗号化する必要がありますが、デフォルトでは「公開鍵の取得が許可されていない」ため、このエラーが発生します。
こちらのエラーを解消するには、接続設定の「ドライバの設定を編集」で以下のプロパティ追加します。
allowPublicKeyRetrieval=true
これでエラーが解消されDB接続が可能になるはずです。
Laravel sailエイリアスの設定
最後にエイリアスの設定を行います。
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モードを抜けて:wq
→Enter
キーで保存して編集を終了できます。
最後に記載したコマンドを~/.bashrc
に反映させるために以下コマンドを実行します。
source ~/.bashrc
ここまで手順を踏めたら一度ターミナルを再起動する必要があるのでwsl --shutdown
を実行し、再起動出来たら以下のコマンドを実行してみてください。
sail up -d
これで./vendor/bin/sail up -d
同様にサーバーを起動することができればOKです!