前回
-
Win10 home
にDocker Desktop
をインストール -
Docker Compose
を使ってNginx, node, PHP, MySQL, PhpMyAdmin
の構成を作成
今回の目標
- Laravelプロジェクトの作成
- 認証機能作成
- Vueに対応
- 最終的に作成されるディレクトリ
[myLaravel]
├── [docker]
│ ├── 省略
│ ....
│
└── [src]
├──[laravelプロジェクト]
│ ├── 省略
│ ....
│
├──[public_html] *シンボリックリンク
└── package-lock.json
Laravelプロジェクトの作成
前回の記事まで終わってる場合、Laravelがすでにインストールされてます。
Laravelプロジェクト作成コマンド実行
Docker Desktop
からPHPコンテナのコンソール画面を開いてください。
Dockerは各コンテナで役割が分かれており、PHPコマンドに関連する機能(今回はComposer
)を使う際はPHPコンテナから実行する必要があるようです。
コンソール画面を開きpwd
を実行すると、docker-composer.yml
のphp: volumes
で指定したディレクトリにいることが確認できます。
そのままその場でLaravelプロジェクトの作成コマンドを実行してください。
今回のサンプルではプロジェクト名はtest-project
で作成します。
# pwd
/var/www
#
# composer create-project --prefer-dist laravel/laravel test-project
これでLaravelプロジェクトが作成されました。
Laravelが実行されるには、ドキュメントルートがindex.php
の場所(public
フォルダ内)に合わせる必要があります。
[myLaravel]
└── [src]
└──[test-project]
├──[app]
├──中略...
└──[public] <- ココ!
└──index.php
public_htmlのシンボリックリンクを作る
今回、ドキュメントルートpublic_html
固定です。作成したLaravelプロジェクトと同じディレクトリ上にあります。(Xserverがドキュメントルートの変更できなかったので;)
そこで、public_html
ディレクトリをシンボリックリンクとして作成します。
Docker Desktop
よりnginx
コンテナのコンソール画面を開いて、下記のコマンドを実行してください。
## シンボリックリンクを作成するディレクトリへ移動
# cd /var/www
#
## シンボリックリンクを作成
# ln -s ./test-project/public public_html
#
## 確認
# ls -l | grep public_html
# lrwxrwxrwx 1 root root [略] public_html -> ./test-project/public
完了したらnginx
コンテナのブラウザアイコンから画面を開いてみてください。
(または http://localhost/
)
以前は白い画面だったのが、それらしいエラー画面が表示されたと思います。
Laravelが動作するように設定等の修正
エラー解消のため、ログ出力ディレクトリ等の権限を修正する必要があります。
修正箇所は2か所です。
nginxコンテナのコンソールから権限を変更してください。Laravelの初期画面が表示されるはずです。
chmod -R 777 /var/www/test-project/bootstrap/cache
chmod -R 777 /var/www/test-project/storage
これでLaravelプロジェクトが表示されるはずです。
先ほどと同様にnginx
コンテナからブラウザを開いてください。
これでLaravelの開発にとりかかる準備が整いました
vue・認証機能を追加
Laravelには認証機能を簡単に追加することが出来ます。
composerを使うので再びPHPコンテナ
のコンソールを開いて、下記コマンドを実行してください。
# composer require laravel/ui
ディレクトリをLaravelプロジェクト直下に移動して、artisan
を使ってvueをインストールします。
また、-auth
を付けるとついでに認証機能も追加できます。
# cd /var/wwww/test-project
#
# php artisan ui vue --auth
実行するとインストールに成功した旨と、npm install
等を実行するようメッセージが表示されます。
この時点での画面を確認すると、右上にログインとユーザー登録画面へのリンクが追加されています。
npm
npm install
ログイン画面を開くと、フォームはできてますがスタイル等は何もありません。
そこで、npmを使ってJSやCSSのコンパイルを実行します。
php artisan ui vue --auth
の実行後に表示されたメッセージ通りにやるだけです。
Docker Desktop
のnodeコンテナ
からコンソール画面を開いて下記コマンドを実行してください。
## packeage.jsonがあるディレクトリまで移動
# cd /var/www/test-project
#
## nodeを使ってvueに必要なライブラリのパッケージをインストール
# npm install
npm installでのトラブル
npm install
を実行するとこのようなエラーが出ました
原因調査
npm audit
でエラーの詳細な内容を見ることが出来ます。
解決方法
大抵の問題はnpm audit fix --force
で解決するようです。
# npm audit fix --force
npm installに関する作業はここまでです。
npm run dev
インストールだけでは認証画面のスタイルは解決されません。
jsやcssのコンパイルが必要なので、残りのコマンドを実行します。
# npm run dev
コンパイルが成功した後、ログイン画面を開くとスタイルが適用されています。
vueに関係するコードを修正した場合、毎回コンパイルをする必要があるそうです。
変更があれば自動でコンパイルするよう監視することもできるようなので、適宜コマンドを実行してください。
npm run watch-poll
DBの準備
.envファイル修正
MySQLへの接続設定をするため、laravelプロジェクト直下の.env
ファイルを修正します。
*
が付いてる箇所が修正した行となります。
DB_CONNECTION=mysql
DB_HOST=db *
DB_PORT=3306
DB_DATABASE=sample_project *
DB_USERNAME=root
DB_PASSWORD=root *
migration実行
DBの設定が終わったら認証に必要なテーブルを作成します。
Laravelにあらかじめ用意されているuserテーブルをmigration機能を使って準備します。
phpコンテナ
のコンソール画面を開いて、Laravelプロジェクト直下で php artisan migrate
を実行してください。
PhpMyAdminコンテナ
をブラウザで開いてDBの確認をしてください。(またはhttp://localhost:4000/)
下記のように4つのテーブルが追加されています。
確認
これでようやく認証機能が使えるようになったはずです。
Laravelの会員登録画面から会員登録→ログインが可能なことを確認してください。
会員登録が完了し、ログイン状態となったことが確認できます。お疲れさまでした。
参考にさせていただいた記事
https://biz.addisteria.com/laravel8_vue_install/
https://qiita.com/ryosukes/items/24a556b9e634c183f93b