Laravel & React.js の学習用サンプルアプリケーションです。
- Laravelを初めて学習してみたい方
- Dockerを利用したLaravelの開発環境を構築したい方
- ECサイトを学習してみたい方
- 管理画面も作成(マルチログイン)を作成したい方
- Stripeを利用した決算処理を作成してみたい方
- ソーシャルログインを作成してみたい方
- オブジェクトストレージへの画像アップロードを作成してみたい方
- フロントエンドをReact.jsで作成してみたい方
- Apache 2.4.46 ・・・ WebサーバーとしてApacheを採用しました。自己証明書を設定済みなので開発環境でSSLとして動作可能です。
- MySQL 8 ・・・ DBサーバーにはMySQLを採用しました。データファイルや設定ファイル、 ログなどはコンテナの外に出して 開発時に参照出来るようにしています。
- phpMyAdmin ・・・ 起動したMySQLのデータを参照・編集するためのツールです。
- MailHog ・・・ ダミーのSMTPサーバーです。送信したメールをブラウザで閲覧することが可能です。実際にはメールは送信されないので開発時の誤送信してしまう心配がありません。
- Minio ・・・ S3に完全互換性のあるオブジェクトストレージです。アップロードした画像の保存先として利用しています。
- Redis ・・・ 永続化可能なインメモリデータベースです。DBから取得したデータのキャッシュとして利用しています。
- Laravel 10
- React 18
- Typescript
- Adminlte 3
- Bootstrap 4
- ログイン/ログアウト
- 会員登録
- パスワードリマインダ
- 商品一覧
- カートに追加
- 決算処理(Stripe)
- お気に入り追加
- お問い合わせ
- ソーシャルログイン(Google)
graph LR
classDef default fill: #fff,stroke: #333,stroke-width: 1px;
style funcA fill: #fff,stroke: #333,stroke-width: 1px;
style funcB fill: #fff,stroke: #333,stroke-width: 1px;
style funcC fill: #fff,stroke: #333,stroke-width: 1px;
style funcD fill: #fff,stroke: #333,stroke-width: 1px;
style header fill: #fff,stroke: #333,stroke-width: 1px;
TOP-->ログイン--ID/パスワード認証-->マイカート
TOP-->お問い合わせ入力
ログイン-->会員仮登録
ログイン-->パスワードリセット
subgraph funcA [商品購入]
マイカート-->商品購入完了
end
subgraph funcB [会員登録]
会員仮登録-->会員仮登録完了--メール送信-->会員登録完了
end
subgraph funcC [パスワードリセット]
パスワードリセット--メール送信-->パスワード変更
end
subgraph funcD [お問い合わせ]
お問い合わせ入力-->お問い合わせ完了
end
subgraph header [ヘッダ]
マイカート
お問い合わせ入力
ログアウト
end
https://laraec.isystk.com/admin/
- ログイン/ログアウト
- 商品管理
- 注文履歴
- 顧客管理
- お問い合わせ管理
- 画像管理
- CSVダウンロード
- PDFダウンロード
- 画像アップロード
- 商品CSV出力バッチ
- S3商品画像アップロードバッチ
※ この環境を利用する為には、事前にdocker、docker-composeが動作する状態であることが前提条件です。 (Windowsの場合は、以下を参考に「WSL」と「Docker Desktop for Windows」を用意してください)
参考 https://docs.microsoft.com/ja-jp/windows/wsl/install
WSLでUbuntuを起動する
# 初回起動時に、ユーザ名とパスワードが聞かれます。
# 何も入力せずにEnterを押すとroot ユーザーで利用できるようになるので、rootユーザーとして設定します。
# 初めにライブラリを最新化します。
$ apt update
# 日本語に対応しておきます。
$ apt -y install language-pack-ja
$ update-locale LANG=ja_JP.UTF8
$ apt -y install manpages-ja manpages-ja-dev
https://docs.docker.com/docker-for-windows/install/
↓コマンドプロンプトでバージョンが表示されればOK
docker --version
参考 https://qiita.com/endo_hizumi/items/0cc50bdfbd827579733e
1.通知領域から、dockerのアイコンを右クリックして、Settingを選択
2.Generalのexpose deamon on~~のチェックを入れます。
3.ResourcesのWSL INTEGRATION から、"Ubuntu" をスイッチをONにします。
WSL 側のルートを Docker for Windows に合わせるように WSL のマウント設定を行います。
$ vi /etc/wsl.conf
---
[automount]
root = /
options = "metadata"
---
以下のように Cドライブのパスが"/mnt/c/"→"/c/" に変更されていれば正常です。
$ cd /c/Users/USER/github/laravel-react-boilerplate
$ pwd
/c/Users/USER/github/laravel-react-boilerplate
# WSL 上にDockerとDocker Composeをインストールする。
$ apt install docker
$ apt install docker-compose
これでWSLからWindows側にインストールしたDockerが利用できるようになります。
# MySQLに接続する為のコマンドをインストールします。(バージョンは何でもOK)
# Windowsの場合
$ apt install mysql-client
# Macの場合
$ brew install mysql-client
.
├── docker (各種Daemon)
│ │
│ ├── apache (Webサーバー)
│ │ ├── conf.d (apacheの設定ファイル)
│ │ └── logs (apacheのログ)
│ ├── mysql (DBサーバー)
│ │ ├── conf.d (mysqlの設定ファイル)
│ │ ├── data (mysqlのデータファイル)
│ │ ├── init (mysqlの初期DDL)
│ │ ├── logs (mysqlのログ)
│ │ └── script (mysql関連のスクリプト)
│ ├── php (PHP-FRM)
│ │ └── logs (phpのログ)
│ ├── phpmyadmin (DB管理ツール)
│ └── s3 (オブジェクトストレージ)
│
├── htdocs (Apache公開ディレクトリ)
│ │
│ ├── app
│ │ ├── Console (バッチアプリケーション)
│ │ ├── Exceptions (例外処理)
│ │ ├── Http (Webアプリケーション)
│ │ ├── Models(モデル)
│ │ ├── Prociders(サービスプロバイダー)
│ │ └── Services(共通処理)
│ ├── bootstrap
│ ├── config
│ ├── database
│ ├── public
│ ├── resources
│ ├── routes
│ ├── storage
│ ├── tests
│ └── composer.json
└── dc.sh (Dockerの起動用スクリプト)
Usage:
dc.sh [command] [<options>]
Options:
stats|st Dockerコンテナの状態を表示します。
init Dockerコンテナ・イメージ・生成ファイルの状態を初期化します。
start すべてのDaemonを起動します。
stop すべてのDaemonを停止します。
apache restart Apacheを再起動します。
mysql login MySQLデータベースにログインします。
mysql export <PAHT> MySQLデータベースのdumpファイルをエクスポートします。
mysql import <PAHT> MySQLデータベースにdumpファイルをインポートします。
mysql restart MySQLデータベースを再起動します。
php login PHP-FPMのサーバーにログインします。
php cache Laravelのキャッシュをクリアします。
--version, -v バージョンを表示します。
--help, -h ヘルプを表示します。
データベースに接続してデータの参照や編集が可能です。 Dockerを起動後に以下のURLにアクセスすると利用可能です。
ダミーのメールサーバーです。実際にはメールは送信されず、送信されたメールはブラウザで閲覧できます。 Dockerを起動後に以下のURLにアクセスすると利用可能です。
S3に準拠したダミーのオブジェクトストレージです。 Dockerを起動後に以下のURLにアクセスすると利用可能です。
各種デーモンを起動する
# 下準備(初回のみ)
$ ./dc.sh init
# Dockerでローカル環境に各種デーモンを構築・起動する
$ ./dc.sh start
# データベースとPHPが立ち上がるまで少し待ちます。(初回は5分程度)
# MySQLにログインしてみる(ログインが出来れば成功です)
$ ./dc.sh mysql login
minioにバケットを作成する
こちらから以下のID/パスワードでログイン後、「laraec.isystk.com」という名前のバケットを作成します。 作成後、Manage から Access Policy を「Public」に変更してバケット内ファイルを外部参照可能な状態に公開します。
Username | Password |
---|---|
access_key | secret_key |
バックエンド環境を構築する
# PHPサーバーにログインしてみる(composer や artisan などのコマンドは基本的にここで行う)
$ ./dc.sh php login
# .envをコピーする
> cp .env.example .env
# モジュールをダウンロード
> composer update
# encryption keyを生成する
> php artisan key:generate
# テーブルとテストデータの作成
> php artisan migrate:fresh --seed
# ディレクトリにアクセス権限を付与
> chmod 777 -R bootstrap/cache
> chmod 777 -R storage
> chmod 777 -R resources/excel
# テスト用の商品画像をS3(Minio)にアップロードします。※事前に minioをセットアップしておくこと
> php artisan s3upload
# Larastan を実行してコードをチェックする
> ./vendor/bin/phpstan analyse --memory-limit=1G
フロントエンド環境を構築する
# PHPサーバーにログインしてみる
$ ./dc.sh php login
# フロントエンドをビルドする。
$ yarn && yarn run dev
その他(補足)
# ブラウザでアクセス(フロント)
$ open https://localhost/
# ブラウザでアクセス(管理画面)
$ open https://localhost/admin/
# バッチを実行する(商品CSV出力バッチ)
$ ./dc.sh php login
$ php artisan stockcsv
# サーバーを停止する場合
$ ./dc.sh stop
プロジェクト | 概要 |
---|---|
Laravel10公式ドキュメント | Laravel10公式ドキュメントです。 |
AdminLTE Docs | AdminLTE Docs |
Bootstrap4 日本語リファレンス | Bootstrap4 日本語リファレンス |
Reactstrap | Reactstrap |
Laravel5.4でマルチ認証(userとadmin)を実装する方法 | Laravel でマルチ認証(userとadmin)を実装する方法で参考にしました。 |
React Stripe.js リファレンス | React Stripe.js リファレンス |
Laravel+Socialiteで簡単ソーシャルログイン実装! | Laravel でソーシャルログインを作成する方法で参考にしました。 |
Laravelの認証画面をReactで全とっかえ | Laravelのフロントエンドの認証周りをReactで作成する方法で参考にしました。 |