Windows&Laravel sailの環境構築で苦労した話
はじめに
windwosOSを使っている時に、Laravelの環境構築をやろうと思い立ち、そういえばLaravel sailを使えばイチからdockerを構築するより簡単だったな、とはじめてみたはいいものOS差分につまづいた事がありました。
ポイントを公開いたします。
ポイント
CLIコマンド環境はwslが必須
powershellやgitbashだと動かなかった。
Laravel sailはdockerを利用しているがbashスクリプトも使っているらしく、powershellだとコケる。
またgitbashはlinux風のコマンドを提供してくれてはいるが、あくまでwindowsのソフトであって純正のLinuxとは色々違うため動かない。
wsl内でソースコードを置くのは/home以下
何も考えずにwindowsのフォルダ内からwslでターミナルを開くと/mnt 以下になっている。
ここにファイルを作るとfile_put_contentsエラーが解消できず動かなかった。
何かやりようがあるかもしれないが速度的にも数十倍遅くなるという記事もあったので素直に/homeに置いた方が良さそう。
この場所は通常windowsからは使わない場所なのでDocumentフォルダにでもショートカットを置いておくといいと思います。
wsl環境内にphpなどをインストールする
wsl&ubuntuを入れただけだとphpの実行環境が入ってなかったり、いろいろ足りなかったのでインストールした。
# phpをインストール
sudo apt install php-cli unzip curl
# composerをインストール
sudo apt install composer
# sailコマンドをインストール
php artisan sail:install
# php-xmlをインストール(Laravelのバージョンによっては不要かも?)
sudo apt install php-xml
コンテナを起動し、続きの作業。
dockerコンテナを立ち上げる。
./vendor/bin/sail up -d
コンテナの中にrootユーザで入ってsailがファイルを書き込めるようにする。
# rootユーザでコンテナにログインする。
docker exec -u root -it $(docker ps -qf "name=laravel.test") bash
# ファイルオーナーをsailに変更する。
chown -R sail:sail /var/www/html
その他Laravelの初期セットアップ
ココから下はsailに限らずXamppや普通のdocker-composeでも同様の手順を行うことが多い。
キャッシュでエラー起きていそうならoptimizeする。
./vendor/bin/sail artisan optimize
初回は以下のコマンドでセットアップしないとセッションエラーが起きた。
./vendor/bin/sail artisan session:table
./vendor/bin/sail artisan migrate
storage以下に必要なフォルダが出来ていない場合、手動で作る。
mkdir -p storage/logs
mkdir -p storage/framework/views
mkdir -p storage/framework/cache/data
storageへのリンクも張る。
./vendor/bin/sail artisan storage:link
おわりに
Webのローカル環境構築はlinuxやmacだと簡単でもwindowsだと余計な手間がかかったり不具合が起きやすいのですが、個別の事案が多くてあまり自分に合う記事が少ないのが実態です。
参考になれば幸いです。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion