Laravel Sail プロジェクトを作成する
Raspberry Pi に Laravel プロジェクトを作成する方法を解説します。
解説
プロジェクトの作成の流れは以下です。
- Docker と Docker Compose のインストール
- Laravel プロジェクトの作成
- 動作確認
- Sailコマンドを簡単に実行できるようにする
- タイムゾーンの変更
- データベースの文字コード、照合順序の変更
前提
Docker と Docker Compose のインストール
Docker と Docker Compose をインストールしていない場合は、Docker と Docker Compose をインストールします。
参考)
Raspberry Pi に Docker と Docker Compose をインストールする
Laravel プロジェクトの作成
作成する Laravel プロジェクトの仕様
今回作成する Laravel プロジェクトの仕様は以下とします。
- ・プロジェクトを作成するディレクトリ
- ユーザーディレクトリの下にプロジェクトを作成する。
- ・プロジェクト名
- hello-laravel-sail
- ・データベースサービス
- データベースサービスとして、「MariaDB」を利用する
- ・メールサービス
- メールサービスとして、「MailHog」を利用する
今回作成する Laravel プロジェクト用のデータベースの仕様は以下とします。
- ・デフォルト文字コード
- utf8mb4
- ・データベース照合順序
- utf8mb4_bin
Laravel プロジェクトの作成
以下のコマンドを実行し、ユーザーディレクトリに移動します。
Laravel プロジェクトを作成するコマンドは以下です。
以下のコマンドを実行し、「hello-laravel-sail」というプロジェクト名のLaravel Sail プロジェクトを作成します。利用サービスとして、「MariaDB」と「MailHog」を指定します。
はじめてのLaravel Sail プロジェクト作成には時間を要します(30分以上要することもあります)。
プロジェクト作成が完了すると、プロンプトがコマンド入力待ち状態になります。
プロジェクト作成が完了するまで、数分待ちます。
コマンドの実行の結果、ユーザーディレクトリの下に[プロジェクト名]のディレクトリが出来ます。
今回は、「hello-laravel-sail」というディレクトリが出来ます。
動作確認
プロジェクトディレクトリへ移動
以下のコマンドを実行し、プロジェクトディレクトリに移動します。
Sailの起動
以下のコマンドを実行し、Sailを起動します。
コマンドオプション解説)
- ・-d
- Sailを「デタッチ(detached)」モードで起動します。すべてのDockerコンテナをバックグラウンドで起動します。
他のデバイスからアクセス
他のデバイスから、ブラウザで、以下のURLにアクセスしてみる。
http://[Sailを開始したデバイスのIPアドレス]
Laravelのデフォルトページが表示されます。
Sailの終了
以下のコマンドを実行し、Sailを終了します。
Sailコマンドを簡単に実行できるようにする
Sailコマンドを実行する際に「./vendor/bin/sail」の代わりに「sail」で実行できるようにします。
「.profile」ファイルを開く
以下のコマンドを実行し、ユーザーディレクトリ直下の「.profile」ファイルを開きます。
「.profile」ファイルの編集
ファイルの末尾に以下を追加します。
「.profile」ファイルを上書き保存し、閉じる
「ctrl + o」を押下し、ファイルを上書き保存します。
「ctrl + x」を押下し、ファイルを閉じます。
「.profile」ファイルの変更の反映
以下のコマンドを実行し、「.profile」ファイルの変更を反映させます。
これにより、Sailコマンドを、プロジェクトディレクトリから「sail」で実行できるようになります。
補足)
「Sailコマンドを簡単に実行できるようにする」作業は、Laravel Sail プロジェクトを作成する毎に行う必要はありません。
「Sailコマンドを簡単に実行できるようにする」作業は、1度実施した後は、別に作成した「Laravel Sail プロジェクト」においても、Sailコマンドを、プロジェクトディレクトリから「sail」で実行できます。
Sailの起動
以下のコマンドを実行し、Sailを再度起動します。
補足)
sailコマンドは、プロジェクトディレクトリで実行します。別のディレクトリにいる場合は、プロジェクトディレクトリに移動してから、sailコマンドを実行します。
タイムゾーンの変更
Sail環境のタイムゾーンは、協定世界時になっているので、日本標準時に変更します。
(日本標準時は協定世界時より9時間進んでいます)
補足)
Sail環境のタイムゾーンを変更する方法はいくつかあります。
たとえば、「Dockerfile」ファイルを編集する方法もありますが、変更の反映には、Dockerイメージの再ビルドが必要です。
今回は、Dockerイメージの再ビルドを必要としない「docker-compose.yml」ファイルを編集する方法で、Sail環境のタイムゾーンを変更します。
Sail環境の時刻の確認
以下のコマンドを実行し、Sail環境のシェルに入り、時刻を確認します。
現在時刻より9時間遅れた時刻が表示されました。
確認したら、「exit」を入力し、エンターキー押下し、Sail環境のシェルを抜けます。
「docker-compose.yml」ファイルの編集
以下のコマンドを実行し、「docker-compose.yml」ファイルを開きます。
以下を探します。
以下のように書き換えます。
解説)
「services:」>「laravel.test:」>「environment:」の項の末尾に、「TZ: 'Asia/Tokyo'」の行を追加します。
「ctrl + o」を押下し、ファイルを上書き保存します。
「ctrl + x」を押下し、ファイルを閉じます。
Sailの再起動と、Sail環境の時刻の再確認
以下のコマンドを実行し、Sailを再起動し、Sail環境の時刻を確認します。
現在時刻と差のない時刻が表示されました。
確認したら、「exit」を入力し、エンターキー押下し、Sail環境のシェルを抜けます。
データベースの文字コード、照合順序の変更
データベースの文字コード、照合順序を変更します。
Sail環境のデータベースの文字コードの確認
以下のコマンドを実行し、Sail環境のMariaDBサーバーに接続し、文字コードを確認します。
いくつかの文字セットに、「latin1」が設定せれていました。
補足)latin1 : ラテンアルファベットの文字コード標準。
確認したら、「exit」を入力し、エンターキー押下し、Sail環境のMariaDBサーバーから抜けます。
「my.cnf」ファイルの作成と編集
以下のコマンドを実行し、設定を記述する「my.cnf」ファイルを、プロジェクトフォルダの直下に新規作成し、開きます。
内容を以下のようにします。
「ctrl + o」を押下し、ファイルを上書き保存します。
「ctrl + x」を押下し、ファイルを閉じます。
「docker-compose.yml」ファイルの編集
以下のコマンドを実行し、「docker-compose.yml」ファイルを開きます。
以下を探します。
以下のように書き換えます。
解説)
「services:」>「mariadb:」>「volumes:」の項の末尾に、「- './my.cnf:/etc/my.cnf'」の行を追加します。
「ctrl + o」を押下し、ファイルを上書き保存します。
「ctrl + x」を押下し、ファイルを閉じます。
Sailの再起動と、Sail環境のデータベースの文字コードの確認
以下のコマンドを実行し、Sailを再起動し、Sail環境のデータベースの文字コードを確認します。
「latin1」が設定せれていた文字セットに、「utf8mb4」が設定さました。
確認したら、「exit」を入力し、エンターキー押下し、Sail環境のMariaDBサーバーから抜けます。
参考
作成されたプロジェクトのLaravelバージョンの確認
作成されたプロジェクトのLaravelバージョンを確認するには、プロジェクトディレクトリ直下で、以下のコマンドを実行します。
2022年8月現在、コマンドの結果は、「Laravel Framework 9.26.1」と表示されました。