啟動 Laravel 專案前的環境設置還是挺麻煩的,不過目前 Laravel 官方指南的安裝方式變成用 Laravel Sail 直接建立一個 Docker ,就不用那麼傷腦筋了,理論上。
https://github.com/laravel/sail
Laravel Sail 會建立包含資料庫在內的 Laravel 環境容器,並且讓我們可以直接由指令視窗操作容器中的 Laravel 專案。
指令
curl -s "https://laravel.build/example-app" | bash
在 Linux 跟 MacOS 下可以直接使用著個指令,不過在 windows 要藉由 WSL (Windows Subsystem Linux) 執行。
如果指令正確執行的話會做幾件事:
example-app 是專案目錄的名稱,可以替換
順利的話等他跑完就可以進到專案中執行 Sail
cd example-app
./vendor/bin/sail up
而我就是特別不順利的那個,在 Windows 底下嘗試安裝時撞了好多牆 (大多是 WSL 的問題),這邊記錄一下
直接參考官方文件,蠻詳細的。
這邊要特別注意步驟 3 跟 4 ,要設定 Docker 可被 WSL 取用才能夠在 WSL 中使用 Docker 的指令。
在進入 Ubuntu 試圖執行 Docker 指令時可能會出現的錯誤。
首先確定上面安裝 Docker 時有設定可被 WSL 取用。
另外我遇到的是安裝 Microsoft Store 中的 Ubuntu 時不管怎麼設定都連不上 Docker,後來是改用 Ubuntu 20.04 LTS 才成功連上
執行創建專案指令時可能發生。
curl -s "https://laravel.build/example-app" | bash
問題發生在安裝腳本上,可以試著開啟連結 https://laravel.build/example-app ,可以看到腳本內容。
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 \
-v $(pwd):/opt \
-w /opt \
laravelsail/php80-composer:latest \
bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium"
cd example-app
CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
WHITE='\033[1;37m'
NC='\033[0m'
echo ""
if sudo -n true 2>/dev/null; then
sudo chown -R $USER: .
echo -e "${WHITE}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
echo -e "${WHITE}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 "${WHITE}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi
這邊確認起來應該是因為 11~14 行的指令有退行,導致 Docker 無法執行。
解決辦法就是複製這份腳本到本地,把退行刪掉,然後手動執行 bash。
需要改專案名稱的話就手動替換掉腳本內的 example-app
成功執行腳本後開始建立 Laravel 專案, Composer 卻安裝不了套件。
原因: WSL 記憶體不足。
找到 .wslconfig,一般放在 C:\Users\<使用者> 底下
// .wslconfig
[wsl2]
memory=128GB //將記憶體改大
swap=0
localhostForwarding=true
可以視需求調整分配給 WSL 的記憶體,我是拉到超大讓 WSL 可取用所有記憶體。
故障都排除的話 sail up 指令可以成功執行,就會開始容器的建置,第一次建置會跑比較久一些。
當 sail up 的指令跑完之後可以到 Chrome 網址輸入 locahost ,就能看到 Laravel 預設專案的歡迎畫面。