laravelの学習をする第1章
0からAIと一緒にlaravelを学習する!
2026/3/25 · 学習ログ
0からAIと一緒にphp-laravelを学習する!
AIから課題を受けてそれを進めていく
今回の目標は自宅の環境を使用してブラウザにlaravelのロゴまで表示させる
laravelを勉強したくなったから
vcpu:4
メモリ:8GB
ストレージ:128GB
OS:debian13
自宅のproxmoxにdebian13のLXCがあるのでそれを使用する
以下を行った
以下コマンド一覧
#※LXCでなおかつ学習用のためすべてroot権限を使用
apt update && upgrade -y
#パッケージの情報更新と既存パッケージのアップグレード
timedatectl set-timezone Asia/Tokyo
#タイムゾーンの変更
apt install -y curl wget zip unzip ca-certificates gnupg lsb-release
#必要なものを追加
chmod a+r /etc/apt/keyrings/docker.gpg
#読み取り権限の付与
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
#docker公式リポジトリをAPTに登録
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#docker関係を追加
curl -fsSL https://tailscale.com/install.sh | sh
#リポジトリの追加
systemctl enable --now tailscaled
#サービスの起動
tailscale up
#表示されたURLにアクセスして使用できるようにする
nano /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin prohibit-password
PasswordAuthentication no
#パスワードログインを禁止して公開鍵認証のみにする
#※下3行をsshd_configの最後の行に追加
chmod 700 .ssh/
chmod 600 .ssh/authorized_keys
#権限設定
作業ディレクトリ:/root/laravel/
構成するサービス:nginx,php,mariadb,phpmyadmin,mailpit
ディレクトリ構成
/root/laravel/
├── docker-compose.yml
├── docker/
│ ├── nginx/
│ │ └── default.conf
│ └── php/
│ └── Dockerfile
└── src/
要件
nginx、php、mariadb、phpmyadmin、mailpit の5サービスを定義する ./src をコンテナの /var/www/html にマウントするポート設定
要件
/var/www/html/public)をルートに設定する php:9000 に転送する try_files でSPA風のルーティングに対応する要件
php:8.3-fpmpdo_mysql(MariaDB接続用のPHP拡張)composer(パッケージ管理ツール)laravelのロゴが出たら第0章のゴール
記述できたもの
記述できなかったもの
サービス内で記述するボリュームの記述できなかった理由
ポートの記述ができなかった理由
記述できたもの
記述できなかったもの
意味わからん
AIに模範解答もらっても理解できなかった
各行に解説入れても理解できなかった
下記の図解でやっと理解
ブラウザ
│ http://ipアドレス:8080/users
▼
nginx(ポート80で受け取る)
│
├─ /users → ファイルが存在しない → index.phpに転送 ← try_files の仕事
│
▼
index.php(PHP-FPMに渡す) ← location ~ .php$ の仕事
│ fastcgi_pass php:9000 で渡す
▼
phpコンテナ(PHP-FPM)
│ Laravelがルーティングして処理
▼
レスポンスをnginx経由でブラウザへ返す
記述できたもの
記述できなかったもの
指定があったためイメージは記述できた
しかしapt installでpdo_mysqlをインストールしようとしていたため正しく記述できていなかった
phpの知識とかあったら記述できていたかもしれない
composerについては何それ状態で「そんなことできるんだー」って気持ちになった
とりあえず全部記述できたのでdocker起動!
http:ipアドレス:8080,8081,8025にアクセスもできた!
laravelのプロジェクトを作成しようとしたが必要なツールがないからエラー
そのためDockerfileをunzip,gitとphp拡張のzipを追加できるように修正
もう一度行うと次は別のエラーが起きlibzip-devが足りないとの内容だったため再度Dockerfileを修正
再度プロジェクトの作成を行うと止まらずに最後まで実行!
laravelのロゴを期待して確認へブラウザを開くとHTTP 500 Internal Server Error
どうやらコンテナがstorage/ と bootstrap/cache/ に書き込みを行うらしいが権限がないからエラーが起きているとのこと
権限を開放して次こそはlaravelのロゴが出ることを期待しましたがまたエラー
laravel11以降デフォルトでSQliteを使うらしくsrc/.envにmariadbの情報を記述しないといけないらしい
.envを更新してマイグレーションを行うことで無事にlaravel13のロゴにたどりつきゴール!
どれだけ他人やAIを頼りに生きてきたかわかりますね
いざ自分で0からやってみると何も分かっていない!
今回作成したファイルはいつもなら既にあるものだったりネットから流用・AIに作らせていたので
自分で0から作ってみることでなんとなく理解できただけでも大きい
ただこれは環境構築の第0章ですのでまだなにも始まっていない
第0章で終わらずphp-laravelの学習をブログにしていきたい!
services:
php:
container_name: php
build: ./docker/php
volumes:
- ./src:/var/www/html
networks:
- laravel-net
mariadb:
container_name: mariadb
image: mariadb:12.2.2-noble
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=laravel
- MYSQL_USER=laravel
- MYSQL_PASSWORD=laravel_password
- TZ=Asia/Tokyo
volumes:
- mariadb-data:/var/lib/mysql
networks:
- laravel-net
nginx:
container_name: nginx
image: nginx:1.29.7
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
networks:
- laravel-net
phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin:latest
ports:
- "8081:80"
environment:
- PMA_HOST=mariadb
networks:
- laravel-net
mailpit:
container_name: mailpit
image: axllent/mailpit:latest
ports:
- "8025:8025"
networks:
- laravel-net
volumes:
mariadb-data:
networks:
laravel-net:
server {
listen 80;
root /var/www/html/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
FROM php:8.3-fpm
RUN docker-php-ext-install pdo_mysql
RUN apt-get update && apt-get install -y git unzip libzip-dev && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install zip
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
0からAIと一緒にlaravelを学習する!
LXCのtailscaleについてメモします。
このブログの作り方について説明します。