Laravelを使ったアプリケーション開発のための環境構築
Laravelとは
LaravelはPHPのフレームワークです。ウェブ上にPHPを使って高度なアプリケーションを開発することができます。
開発環境の構築
WindowsにWSLとDockerをいれて、開発を行います。それぞれのソフトウェアのインストール方法は、別のページを参考にしてください。
WSLの確認
WindowsのアプリケーションとしてWSLを検索し、起動できることを確認してください。
Dockerの確認
WSLのターミナルで以下のコマンドを実行し、次のようにdockerのパスが表示されればOKです。
$ which docker /usr/bin/docker
開発用のディレクトリを作成
作成したプログラムや、種々の設定ファイルを置くフォルダを作ります。以後、断りがない限りこの study_laravel を作業ディレクトリとして使用します。
$ mkdir study_laravel $ cd study_laravel
PHPのコンテナ作成とLaravelのインストール
ウェブサーバーのNginxに公開するディレクトリ(src/public)を先に作ってしまうと、Laravelの新規インストールが失敗します。
そのため、まずはPHPのコンテナだけを起動してLaravelをインストールし、その後に作成される public フォルダをNginxのルートディレクトリに指定する手順を踏みます。
1. docker-compose.yaml の作成
study_laravel ディレクトリ直下に、以下の内容で docker-compose.yaml を作成します。
services:
php:
build: ./php
container_name: laravel_php
volumes:
- ./src:/var/www/html
- vendor:/var/www/html/vendor
environment:
- TZ=Asia/Tokyo
volumes:
vendor:
2. php/Dockerfile の作成
次に、php という名前のフォルダを作成し、その中にPHPコンテナの設定ファイルである Dockerfile を作成します。必要なツールやComposer(PHPのパッケージ管理ツール)をインストールする記述です。
FROM php:8.5-fpm RUN apt-get update && apt-get install -y unzip COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html
3. コンテナを起動して、コンテナ内に入る
ターミナルからコンテナをバックグラウンドで起動(-dオプションをつける)し、PHPコンテナの内部に入ります(コンテナ内でbashを起動する)。
$ sudo docker compose up -d $ sudo docker compose exec -it php bash
Laravelのインストール
Dockerのボリュームとして vendor が作られています。ここに直接インストールしようとすると競合して失敗するため、一度コンテナ内の tmp という一時ディレクトリにLaravelプロジェクトを作成し、その後でファイルを移動させます。(※以下のコマンドはコンテナ内で実行します)
# composer create-project laravel/laravel tmp # (インストールが完了したらファイルを移動) # mv tmp/vendor/* vendor/ # tmp/vendorの中身をボリュームのvendorに移動 # rmdir tmp/vendor # mv tmp/* tmp/.* ./ # 残りのtmpの中身をすべてカレントディレクトリ(src)に移動 # rmdir tmp # ls README.md bootstrap config phpunit.xml routes vendor app composer.json database public storage vite.config.js artisan composer.lock package.json resources tests # exit
コンテナから抜けたら(ホスト側のWSLに戻ったら)、生成されたファイルの所有者を変更します。一部のファイルはroot所有になっており編集できないため、自分自身のユーザー(whoamiコマンドで取得)に変更し、ウェブサーバー(www-data)がキャッシュなどを書き込めるように権限を設定します。
$ sudo chown $(whoami):www-data -R src $ chmod g+w -R src/storage/ src/bootstrap/cache/
Nginx(ウェブサーバー)の起動
1. docker-compose.yaml にNginxの設定を追加
先ほど作成した docker-compose.yaml を以下のように書き換えて、Nginxコンテナの設定を追記します。
services:
php:
build: ./php
container_name: laravel_php
volumes:
- ./src:/var/www/html
- vendor:/var/www/html/vendor
environment:
- TZ=Asia/Tokyo
nginx:
image: nginx:1.27-alpine
container_name: laravel_nginx
ports:
- "8002:80"
volumes:
- ./src/public:/var/www/html/public:ro
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
volumes:
vendor:
2. default.conf の作成
nginx という名前のフォルダを作成し、その中にNginxの設定ファイルである default.conf を作成します。Laravelの挙動に合わせたルーティングの設定です。
server {
listen 80;
server_name localhost;
root /var/www/html/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
3. 再度、全コンテナを起動
Nginxが加わったので、再度コンテナを起動し直します。
$ sudo docker compose up -d
Laravelの動作確認
ブラウザーで http://localhost:8002/ を開くと、データベース関連のエラー画面が表示されます。
これは、Laravelが起動時にセッション管理をデータベースで行おうとするものの、まだデータベースコンテナを用意していないために起きる正常なエラーです。今回はとりあえずセッションの保存先を一時的に変更して回避します。
ついでにURLの設定をします。Laravelは自動的にbase URLを設定しますが、時に思うような動作にならないことがあるので、きちんと設定しておくにこしたことはありません。
src/.env の修正
src/.env ファイルを開き、最初のAPP_NAME, APP_URL, APP_LOCALEと30行目あたりのSESSION_DRIVER の項目を以下のように書き換えます。
APP_NAME="My Lab's Stock" APP_URL=http://localhost:8002 # <- docker-compose.yamlのnginxの設定と合わせる APP_LOCALE=ja (途中省略) SESSION_DRIVER=database ↓ SESSION_DRIVER=file
書き換えたら、ブラウザーでページを再読み込みしてください。以下のようにLaravelのウェルカム画面が表示されれば、第1章の環境構築は完了です!
📂 作成したサンプルファイルのダウンロード
ここまでの手順で作成された完成版のファイル一式は、以下のGitリポジトリからダウンロード(クローン)して確認することもできます。
$ git clone https://kiku3.tsbio.info/git/study-laravel.git study_laravel
