Laravel Sail の開発勉強環境をセットアップ

概要

Laravel Sailを開発勉強環境構築のためにWindowsのWSLを利用してセットアップする。
今後、もしエラー等が出た場合に特別な理由が無ければ、
XAMPPで構築した方が楽かもしれないと思った。

参考にしたWebページ

手順

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は動いていると判断して、
とりあえずセットアップ完了とする。

コメント

タイトルとURLをコピーしました