概要
Laravel Sailを開発勉強環境構築のためにWindowsのWSLを利用してセットアップする。
今後、もしエラー等が出た場合に特別な理由が無ければ、
XAMPPで構築した方が楽かもしれないと思った。
参考にしたWebページ
- Laravel Sail – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/8.x/sail#introduction
https://laravel.com/docs/10.x/sail - How to Install Laravel PHP Framework on Rocky Linux | Atlantic.Net
(実際にRedHat系ディストリで公開する時に参考になりそう)
https://www.atlantic.net/dedicated-server-hosting/how-to-install-laravel-php-framework-on-rocky-linux-8/ - Docker on wsl2がうんともすんとも言わなくなった – Qiita
https://qiita.com/F_clef/items/0827eff5205f2aa104f1
手順
WSLのセットアップ
上記ページを参考にWSLをセットアップしておく。
Docker Desktop のセットアップ
Docker Desktop をインストールし、
Docker Desktop にてWSLにインストールしたディストリから
Dockerへアクセスできるように下記のように設定しておく。

Laravelのセットアップ
curlコマンドを利用したセットアップ
(RedHat系のディストリだと詰まるので注意)
次のコマンドを実行すると、LaravelのためにDBなどを含むDockerのコンテナがセットアップされるとのことだが、ハマった部分があった。
$ curl https://laravel.build/任意のプロジェクト名 | bash
上記URLから取得できるのはシェルスクリプトで、
内容を読むと最初にdocker infoコマンドを実行してdockerが使える状態かを確認するが、
Windowsを再起動しないとディストリのターミナルからdocker infoの結果が出てこなくなり、
途中で止まったままになるので注意。
上記コマンド実行前に、次のコマンドを実行して結果が返ってくるか確認した方が良い。
$ docker info
docker infoが実行できることを確認して進めると、apt-getコマンドが実行されていたが、
WSLで動かしているディストリがRedHat系のOracleLinuxなのでapt-getは使えない。
なので、また途中で止まったままになった。
WSLをセットアップすると標準でUbuntuがインストールされるが、
わざわざディストリを変更しているとここで詰まるので注意が必要。
https://laravel.build/<任意のプロジェクト名>で取得できるシェルスクリプトの内容
docker info > /dev/null 2>&1
# Ensure that Docker is running...
if [ $? -ne 0 ]; then
echo "Docker is not running."
exit 1
fi
docker run --rm \
--pull=always \
-v "$(pwd)":/opt \
-w /opt \
laravelsail/php82-composer:latest \
bash -c "laravel new 任意のプロジェクト名 && cd 20230516test && php ./artisan sail:install --with=mysql,redis,meilisearch,mailpit,selenium "
cd 20230516test
./vendor/bin/sail pull mysql redis meilisearch mailpit selenium
./vendor/bin/sail build
CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
BOLD='\033[1m'
NC='\033[0m'
echo ""
if sudo -n true 2>/dev/null; then
sudo chown -R $USER: .
echo -e "${BOLD}Get started with:${NC} cd 任意のプロジェクト名 && ./vendor/bin/sail up"
else
echo -e "${BOLD}Please provide your password so we can make some final adjustments to your application's permissions.${NC}"
echo ""
sudo chown -R $USER: .
echo ""
echo -e "${BOLD}Thank you! We hope you build something incredible. Dive in with:${NC} cd 任意のプロジェクト名 && ./vendor/bin/sail up"
fi
WSLにUbuntuをインストール
apt-getが使えるように、Debian系のUbuntuをインストールする。
> wsl --install -d Ubuntu
Ubuntuからcurlを利用してセットアップ
次のコマンドを実行すると、
$ curl https://laravel.build/20230516test | bash
次のような結果になった。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1039 0 1039 0 0 2172 0 --:--:-- --:--:-- --:--:-- 2173
Docker is not running.
WSLの規定のディストリにUbuntuを設定していないとこの結果が出ることがあるらしいので、
次のコマンドでUbuntuをWSLの規定のディストリに設定する。
> wsl -s Ubuntu
念のためDocker DesktopやUbuntuを再起動して、再度次のコマンドを実行すると、
$ curl https://laravel.build/20230516test | bash
次のエラーが表示された。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1039 0 1039 0 0 969 0 --:--:-- 0:00:01 --:--:-- 970
latest: Pulling from laravelsail/php82-composer
Digest: sha256:37549f980be6146efcb16b0dc352644edfc5cca32b9862494631eb197ef89737
Status: Image is up to date for laravelsail/php82-composer:latest
_ _
| | | |
| | __ _ _ __ __ ___ _____| |
| | / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V / __/ |
|______\__,_|_| \__,_| \_/ \___|_|
WARN TTY mode requires /dev/tty to be read/writable.
Creating a "laravel/laravel" project at "./20230516test"
https://repo.packagist.org could not be fully loaded (curl error 28 while downloading https://repo.packagist.org/packages.json: Failed to connect to repo.packagist.org port 443: Connection timed out), package information was loaded from the local cache and may be out of date
In CurlDownloader.php line 365:
curl error 28 while downloading https://repo.packagist.org/p2/laravel/larav
el.json: Failed to connect to repo.packagist.org port 443: Connection timed
out
create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--no-audit] [--audit-format AUDIT-FORMAT] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package> [<directory> [<version>]]]
bash: line 17: cd: 20230516test: No such file or directory
bash: line 19: ./vendor/bin/sail: No such file or directory
bash: line 20: ./vendor/bin/sail: No such file or directory
Please provide your password so we can make some final adjustments to your application's permissions.
[sudo] password for shinke:
Thank you! We hope you build something incredible. Dive in with: cd 20230516test && ./vendor/bin/sail up
要するにcurlでhttps://repo.packagist.org/packages.jsonを
読み込もうとしたらタイムアウトになりました、ってことらしいので、
試しに次のコマンドを実行してみた。
$ curl https://repo.packagist.org/packages.json
エラーが出るかと思ったら問題無く表示された。
また、Webブラウザからpackages.jsonを表示したが、文字列に違いは無かった。
念のためWindowsを再起動して、再度次のコマンドを実行すると、
$ curl https://laravel.build/test | bash
次のエラーが表示された。
docker: Error response from daemon: dial unix /mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.proxy.sock: connect: no such file or directory.
このページを参考に、次のコマンドを実行して、
$ sudo rm /usr/share/doc/docker-ce-cli/changelog.Debian.gz
$ sudo rm /usr/run/docker*
Docker Desktopを再起動後、再度次のコマンドを実行すると無事完了した様子だった。
$ curl https://laravel.build/test | bash
なので、次のコマンドでLaravelを実行して、
$ cd 設定した任意のプロジェクト名
$ ./vendor/bin/sail up
しばらくするとサーバへのアクセスログが表示されるようになった。
この状態でWebブラウザからhttp://localhost/へアクセスすると、
次の画像のように表示されたので、ひとまずLaravelは動いていると判断して、
とりあえずセットアップ完了とする。
