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
コメント