概要
今まで基本的にJavaばっかり使ってきた奴がphpのLaravelを学習する際のメモ書きです。
JavaではspringbootとかSAStrutsとか所謂MVCフレームワークを使った開発を主にやってきました。
phpは学生時代の研究でやってた以来約12年ぶり、今度仕事でLaravelを触りそうだから勉強していこうと思います。
springbootとかと比べてLaravelはどうなっているかとかそういう観点で記事を書いていきたいと思います。
環境
- Windows10 Pro 64bit
- Docker
- Laravel8 Sail
- WSL2(ubuntu)
インストール
まず、Laravelを使うために、phpを入れたり、mysqlなどを入れたりする必要があります。
XAMPPを使えばオールインワンですぐローカル環境を構築できるでしょうが、
今回はあえてDocker開発環境を作ってみようと思います。
というのもLaravel公式からSailという、Docker開発環境を構築するためのお手軽ツールが出ているので、
簡単に構築できそうなのと、最近Dockerを使っているのでついでにという感じです。
SailはDockerを使うのでまずは、Dockerをインストールしておきます。
windowsならDocker Desktopでよし。
あとはWSL2のubuntuを起動して 以下を実行するだけ。
curl -s https://laravel.build/example-app | bash
example-app
がLaravelプロジェクトのプロジェクト名となりディレクトリが作成されます。
example-appは任意の文字列に置き換え可能です。
これだけでLaravelプロジェクト作成用のdocker-compose.ymlを含んだ諸々が出来上がります。
あとは、./vendor/bin/sail up
を実行するだけで、Laravelプロジェクト入のDockerコンテナが出来上がり、
サーバーが起動します。
サーバーはPHPのビルトインサーバーが起動します。
localhostにアクセスすればLaravelが表示されるはずです。
問題発生
ブラウザでlocalhostにアクセスしてみると、なんか不穏なエラーが出ています。
Permission denied
なんとstorage/logs/にログ出力をしようとして権限がないと怒られてます。
原因はstorage以下の所有者がrootになってて、rootにしか書き込み権限がなかったから・・・
phpのビルトインサーバーを起動しているユーザーがsailのようなので、
sailがログを書き込もうとして権限エラーになっているので、権限エラーが出ているようです。
所有者を変えてやるために、docker内に入って所有者をsailに変えてあげます。
docker exec -it コンテナID bash
chown -R sail:sail storage/
もう一度localhostにアクセス。
今度はエラー表示されることなくLaravelが表示されました。
sailさんせっかくお手軽インストールができるのにこの罠は酷いですよ。
取り敢えず、LaravelでWebアプリ学習する準備はこれで整いました。