【Laravel】#01 LaravelのインストールとDB構築方法

PHPのフレームワークといえばLaravelですよね。
Googleトレンドを見ても2016年にはCakePHPを抜いており、現在ではぶっちぎりの1位で最も人気のPHPフレームワークと言えます。

私は普段、WEBアプリケーション開発でYii Framework(マイナー過ぎて知らない方も多いと思います)を使用していますが、PHPを扱うエンジニアとしてLaravelをマスターと考えています。
私の他にも「人気なのは知っているけど触ったことがない」「案件で使ったことがあるけど、イチから勉強してみたい」方がいると思い、私がLaravelを学んで行く過程をブログに残そうと思います!

ローカルPCにPHPをインストールする場合は下記を参考にしてください。

目次

Laravelの開発環境構築方法

本記事で利用するバージョンは下記の通りです。

  • PHP:8.3.6
  • MySQL:8.0.32
  • Laravel:11.7.0

Dockerのインストール

Laravel SailはDockerコンテナ上で動作しています。そのため、ローカルPCにはDockerをインストールする必要があります。
※Dockerについては知っている前提で解説を進めていきます。

1.公式サイトからインストーラを入手します。

2.インストーラを起動し、Dockerをインストールします。

3.インストール後、バージョン確認し、バージョンが表示されればOKです。

docker --version
Docker version 26.1.1, build 4cf5afa

Laravelのインストール

1.ターミナルで以下コマンドを実行し、プロジェクトを作成します。
「task-back」はアプリケーション名ですので、お好きな名前を指定してください。「83」部分はPHPのバージョンです。今回は8.3を使用します。

curl -s "https://laravel.build/task-back?php=83" | bash

2.プロジェクトの作成が作成されたら、アプリケーションディレクトリに移動し、Laravel Sailを起動します。
sail upコマンドでDockerコンテナがローカルPCに構築されます。初回はイメージのclneなどで時間がかかりますが、2回目以降はすぐに起動するようになります。

3.設定ファイルを修正します。

docker-compose.yml

  • laravel.testをtask-backに変更する。
  • selenium関連とredis関連の記述をコメントアウトする。

.env

以下のようにファイルを修正します。

APP_NAME=task-back
APP_SERVICE=task-back
APP_TIMEZONE='Asia/Tokyo'
APP_LOCALE=ja
APP_FALLBACK_LOCALE=ja
APP_FAKER_LOCALE=ja_JP
DB_DATABASE=task_db

4.コンテナを起動します。

cd task-back
./vendor/bin/sail up -d

5.マイグレーションします。

./vendor/bin/sail artisan migrate

6.http://localhostにアクセスし、Laravelのトップページが表示されていることを確認します。

7.毎回起動するのがめんどくさいのでエイリアス登録します。

vi ~/.zshrc

# 以下を記述します
alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'

source ~.zshrc

8.よく使うコマンドを紹介します。

# コンテナ起動
sail up -d

# コンテナ停止
sail down

# コンテナにログイン
sail shell

# Mysqlにログイン
sail mysql

# コンテナにログインせずにコマンド実行
sail artisan <コマンド>

# テストコード実行
sail test

# Composer実行
sail composer

sail で起動したDockerコンテナをカスタマイズ(タイムゾーンの変更)

Dockerコンテナが起動することはわかりましたが、自分でいい感じにカスタマイズしたいなと思ったのですが、できるようです。

1.下記コマンドを実行するとdockerディレクトリが作られ、docker-compose.ymlが変更されます。(build対象のファイルが.docker/8.3になっています)

sail artisan sail:publish

2.たとえば、.docker/8.3/Dockerfileを開き、TZを’Asia/Tokyo’に変更してみます。

3.下記コマンドでDockerfileをビルドし、タイムゾーンを確認すると、JSTになっていることがわかります。

$ sail build --no-cache
$ sail down
$ sail up -d
$ sail shell
$ date

sail で起動したDockerコンテナをカスタマイズ(Mysqlの文字コードを変更)

Mysqlコンテナについて、初期状態だとマルチバイト文字が読み込めない(日本語が文字化けしてしまう)ため、設定を変更します。

1..docker/8.3/my.cnfを作成し、以下を記載します。

[mysql]
default-character-set=utf8mb4

[mysqld]
character_set_server=utf8mb4
collation-server=utf8mb4_bin

2.Mysqlコンテナのmy.cnfを書き換えるようにdocker-compose.ymlを修正します。(volumesに下記を追記)

volumes:
    - './docker/8.3/my.cnf:/etc/my.cnf'

3.Mysqlコンテナを再起動し、正しく文字コード設定がされていることを確認します。

$ sail down
$ sail up -d
$ sail mysql
mysql> show variables like '%char%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+

複数人で開発するために

.envは.gitignoreに記載されている通り、gitで管理しないファイルになります。
.env.exampleに.envの内容を記載して共有しましょう。

また下記コマンドで環境を再現できます。

$ docker run --rm -u "$(id -u):$(id -g)" -v $(pwd):/var/www/html -w /var/www/html laravelsail/php83-composer:latest composer install --ignore-platform-reqs
$ cp .env.example .env
$ sail artisan key:generate
$ sail artisan migrate:fresh
$ sail artisan db:seed
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次