ホーム > プログラミング > PHP プログラミング > Laravel Sail プロジェクトを作成する

Laravel Sail プロジェクトを作成する

Raspberry Pi に Laravel プロジェクトを作成する方法を解説します。

解説

プロジェクトの作成の流れは以下です。

  1. Docker と Docker Compose のインストール
  2. Laravel プロジェクトの作成
  3. 動作確認
  4. Sailコマンドを簡単に実行できるようにする
  5. タイムゾーンの変更
  6. データベースの文字コード、照合順序の変更

前提

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」と表示されました。

参考ウェブサイト


ご意見、ご感想、ご質問、ご要望等は、「コメントを投稿する」もしくは「ホーム > コンタクト」よりお願いいたします。
内容の誤り、誤字脱字、リンクミスなどの問題点を発見された場合には「コメントを投稿する」もしくは「ホーム > コンタクト」より連絡していただけると幸いです。


Copyright (c) 2005-2018 Nobuki HIRAMINE All rights reserved.