お久しぶりです。放浪軍師です。ベンチャー企業に転職して色々と忙しい日々ですがなんとなく余裕もできてきた為、またブログを再開しようと思います。作りたいアプリもあるしね!どうぞよろしくお願いします。
Laravel でバックエンドを作ろう
さて、私はこのブログで Xamarin や Blazor Web Assembly など主に C# を用いた技術をアレコレ書いていましたが、実は私、ここ数年業務では C# を全く触っていません。基本的には Laravel という PHP のフレームワークを用いて Web サービスの バックエンド側を主軸に担当してきていて、現職でも同様です。そんな中で色んな技術も自分の中に溜まってきたので、整理も兼ねて記事をつらつらと書いていこうかなと思います。突然方向性が変わってごめんね!でも PHP より C# の方が好きだから!(動的型付き言語は色々と辛いっスよ...)
Docker で環境構築
開発には環境構築が必要です。C# であれば、Visual Studio をインストールすればそれで済むみたいなこともあるかと思うのですが、PHP の場合はそうはいきませんね。まずは Docker で環境を構築していきたいと思います。
Docker とは?
このブログでは初めて取り扱うので説明を入れます。Docker とは簡単に言えば、軽量な仮想環境です。例えば普通に PHP を用いた開発環境を Windows 上に整えようとすると、PHP や PHP 向けの便利なパッケージなどを Windows にインストールする必要があるかと思います。DB も準備しなければなりません。そうなると非常に手間ですし、複数名で開発するときはそのバージョンなどにも気をかけねばならず大変ですよね。
そこで Docker の出番です。必要となる情報をファイルに記述して、それを実行するだけで仮想環境を準備できるようになります。複数名で共有すれば、みんな同じ環境を一瞬で整えられるという事ですね。さらに言えば、GCP などのクラウドサービスにでさえ Docker を展開してサービスを提供するということも可能です。いやほんとすごいよね。詳しくは公式などをみてお勉強してみてください。正直私もまだ全然わかっていないですし一緒に頑張りましょう。
なお、前準備である Docker Desktop のインストールなどの説明は省略します。ご了承ください。
今回準備する環境
以下で行こうと考えています。現時点での最新ですね。私はこういったインフラに近い分野は非常に苦手なのですが絶対に必要なことなので、これを機会に記事を書きながら覚えていこうと思っていますので皆さんもチャレンジしてみてください。きっとできるさ。
本当はフロントエンドも別に用意したいのですけれど...まぁそこまで手を広げると流石に大変ですからね。機会があればにしましょう。
GitHub
今回作成したリポジトリです。参考にしてください。
ファイル構造
開発環境構築に必要なファイルは以下になります。少なくて良いね!まぁ正直初見どころか中級者であってもわけわからん箇所が多数ですが、とりあえずそんなファイルがあるんだね程度で良いと思います。必要になったらその時覚えればいいし!ぐらいの精神で居た方が楽ですよね。各ファイルの内容は GitHub を確認してください。
compose.yml
複数のDockerコンテナを定義し、管理するための設定ファイルです。今回は Laravel における最小構成で設計しています。Nginx Webサーバー、PHPアプリケーション、MySQLデータベースの3種類のコンテナが立つ構成ですね。
docker/nginx/default.conf
Nginx の設定ファイルです。Web サーバーとして動作する Nginx に対して、Webアプリケーションへの要求をどのように処理するかを定義しています。
docker/php-fpm/Dockerfile
PHP および Laravel 環境セットアップの為のファイルです。
docker/php-fpm/php.ini
PHP の設定ファイルです。
環境を構築してみよう
さて、なんだかよくわからないがとりあえず環境構築の準備は整いました。あとはコンソールからcompose.yaml
がある場所へ移動し、数回コマンドを叩くだけで環境が構築できます。ほんと超便利だね!
Docker のビルド
docker compose build
コマンドで Docker をビルドします。Docker の起動
docker compose up -d
コマンドで複数のコンテナが起動します。コンテナの中に入る
docker compose exec -it php-fpm bash
コマンドで php アプリケーションのコンテナに入ります。Laravel インストール
composer create-project --prefer-dist laravel/laravel laravel-project "10.*"
を実行すると、ファイルが色々と作成されて Laravel の環境ができあがります。-
chmod -R a+w laravel-project/storage/*
コマンドで storage フォルダの権限を変更する。これを行っておかないとログが吐けずにエラーとなります。
アクセスしてみよう
任意のWebブラウザで http://localhost:8000/ にアクセスします。このような画面がでれば成功です。
MySQL にアクセスしてみよう
データベースの設定
laravel-project/.env ファイルのデータベース設定を以下のように書き換える。
DB_HOST=mysql DB_PORT=3306 DB_DATABASE=database DB_USERNAME=db-user DB_PASSWORD=db-pass
マイグレーションの実施
cd laravel-prolect
でディレクトリを移動し、php artisan migration
を実行すると、以下のようなメッセージがコンソールに表示される。INFO Running migrations. 2014_10_12_000000_create_users_table ................................................................................................... 40ms DONE 2014_10_12_100000_create_password_reset_tokens_table ................................................................................... 51ms DONE 2019_08_19_000000_create_failed_jobs_table ............................................................................................. 31ms DONE 2019_12_14_000001_create_personal_access_tokens_table .................................................................................. 39ms DONE
データベースを確認する
任意のデータベース閲覧ソフトでデータベースを確認する。私は VSCode の拡張機能 Database Client を愛用しているので、そちらで確認しました。
できているようですね!ちなみに Database Client の設定は以下のようにします。Password のところは root です。
まとめ
これで無事に laravel 開発環境が整いました!次回からは私が蓄積してきた知識を小出しにしていこうと思います。なんせ折角覚えたことは残しておかないと忘れちゃうからね!