Memo

メモ > 技術 > フレームワーク: Laravel9 > 環境構築

環境構築
■準備 \\wsl$\Ubuntu-20.04\home\refirio\docker\laravel\code C:/windows/System32/drivers/etc/hosts
127.0.0.1 laravel.local
■インストール インストール 9.x Laravel https://readouble.com/laravel/9.x/ja/installation.html Sailを使用する場合、以下のようなコマンドから始める Sailを使用しない場合、これまでどおりcomposer create-projectから始めることもできる(詳細は上記のページを参照)
$ cd /home/refirio/docker/laravel/code $ curl -s https://laravel.build/laravel9 | bash
curl によって必要なファイルががダウンロードされる また、laravel9 が作成され、その中に必要なファイルも配置される この時点で、laravel9 をGit管理対象にしておく 具体的にはSourcetreeで「Create」からフォルダを選択し、コミット対象のファイルは初期コミットとしてコミットしておく 以下を実行
$ cd laravel9 $ ./vendor/bin/sail up
15分ほどでイメージのダウンロードが完了した 引き続きDockerfileの内容により諸々が取得される 20ほどで起動した(-d を付けていないからバックグラウンドでは無い) ブラウザから以下にアクセスして、Laravelの画面が表示された http://localhost/ 表示を確認出来たら、いったん Ctrl+C で終了する ■コマンドの調整
$ cd /home/refirio/docker/laravel/code/laravel9 $ sail Command 'sail' not found
.profile の最後にaliasのための設定を追加
$ vi ~/.profile
# set alias for sail alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
コンソールを再起動し、パス指定なしでsailコマンドを実行できることを確認する
$ cd /home/refirio/docker/laravel/code/laravel9 $ sail Laravel Sail
■起動と終了 以下でデーモンを起動できる
$ cd /home/refirio/docker/laravel/code/laravel9 $ sail up -d
以下にアクセスして表示を確認する http://laravel.local/ 以下のように操作できる 「sail shell」でシェルに入ることができるが、sailコマンド経由で直接操作することもできる
$ sail shell $ sail php -v $ sail composer -V $ sail artisan -V $ sail node -v $ sail npm -v $ sail mysql $ exi
各バージョンは以下のようになっていた
$ sail php -v PHP 8.1.27 (cli) (built: Dec 21 2023 20:19:54) (NTS) $ sail composer -V Composer version 2.7.2 2024-03-11 17:12:18 $ sail artisan -V Laravel Framework 9.19.0 $ sail node -v v18.20.0 $ sail npm -v 10.5.0 $ sail mysql Server version: 8.0.29 MySQL Community Server - GPL
以下でデーモンを終了できる
$ sail down
■環境の調整 Sail環境の現状を確認する タイムゾーンがUTCで、文字コードがlatin1になっている箇所があるので調整する
$ sail shell $ date Tue Apr 2 09:25:59 UTC 2024 $ exit $ sail mysql mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2024-04-02 09:28:17 | +---------------------+ 1 row in set (0.00 sec) > SHOW VARIABLES LIKE '%char%'; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+ 8 rows in set (0.00 sec)
Sail環境をカスタマイズする 以下のコマンドを実行すると、dockerフォルダ内にDocker用のファイルが出力され、これを編集することでSail環境をカスタマイズできる また docker-compose.yml も編集され、vendor/laravel/sail/runtimes/8.1 内ではなく docker/8.1 内のファイルが参照されるようになる
$ sail artisan sail:publish
以下のとおり、タイムゾーンと文字コードを変更する docker/8.1/Dockerfile
ENV TZ=UTC ↓ ENV TZ='Asia/Tokyo'
docker/8.1/my.cnf(新規に作成)
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin default-time-zone = 'Asia/Tokyo' [client] default-character-set = utf8mb4
docker-compose.yml
volumes: - 'sail-mysql:/var/lib/mysql' ↓ volumes: - 'sail-mysql:/var/lib/mysql' - './docker/8.1/my.cnf:/etc/my.cnf'
Dockerfileを編集したので、ビルドし直す
$ sail down $ sail build --no-cache $ sail up -d
ビルド中に以下のエラーになった
E: Release file for http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease is not valid yet (invalid for another 3d 14h 39min 16s). Updates for this repository will not be applied.
PCとWSLの時刻差が大きいと発生するみたい WSLの時刻を調整
$ date Wed Apr 3 06:32:54 JST 2024 $ sudo hwclock --hctosys $ date Sat Apr 6 22:07:11 JST 2024
ビルド中に以下のエラーになった
npm ERR! code EBADENGINE npm ERR! engine Unsupported engine npm ERR! engine Not compatible with your version of node/npm: npm@10.5.0 npm ERR! notsup Not compatible with your version of node/npm: npm@10.5.0 npm ERR! notsup Required: {"node":"^18.17.0 || >=20.5.0"} npm ERR! notsup Actual: {"npm":"8.19.4","node":"v16.20.2"}
nodeのバージョンは18もしくは20が必要となっているので、さらに以下のとおり調整して再度ビルドする docker/8.1/Dockerfile
ARG NODE_VERSION=16 ↓ ARG NODE_VERSION=18
完了したら、変更を確認する タイムゾーンがJSTで、文字コードがutf8mb4になっていることを確認できる
$ sail shell $ date Sat Apr 6 22:24:09 JST 2024 $ exit $ sail mysql mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2024-04-06 22:24:38 | +---------------------+ 1 row in set (0.00 sec) mysql> SHOW VARIABLES LIKE '%char%'; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+ 8 rows in set (0.01 sec)
mysql> QUIT

Advertisement