Hướng dẫn chi tiết cài đặt Laravel 9 với Sail trên Windows và MacOS

Laravel 9 đã ra đời vào tháng 2/2022 với nhiều tính năng mới, tuy nhiên khi tìm kiếm thì mình chưa thấy bài viết nào hướng dẫn cụ thể cho bạn bè cách thiết lập bằng Sail như trên trang chủ Laravel đề cập. Để đỡ tốn thời hạn cho những đồng đội mới cài thì vooclaptrinh sẽ hướng dẫn cụ thể cách setup Laravel với Sail cả trên Windows 10 .Quảng cáo

1. Laravel Sail là gì ?

Laravel Sail là một giao diện dòng lệnh nhẹ để tương tác với môi trường tự nhiên tăng trưởng Docker mặc định của Laravel. Sail cung ứng một điểm khởi đầu tuyệt vời để thiết kế xây dựng ứng dụng Laravel bằng PHP, MySQL và Redis mà không nhu yếu kinh nghiệm tay nghề Docker trước đó .

Để chạy Laravel bằng Sail đầu tiên chúng ta cần tạo file docker-compose tại thư mục gốc của dự án Laravel.

Các lệnh tạo như sau :

composer require laravel/sail --dev
php artisan sail:install

Sau đó nó sẽ hỏi DB mà bạn đang muốn dùng trong project, ở đây mình dùng MySQL thì điền 0

 Which services would you like to install? [mysql]:
  [0] mysql
  [1] pgsql
  [2] mariadb
  [3] redis
  [4] memcached
  [5] meilisearch
  [6] minio
  [7] mailhog
  [8] selenium
 > 0

Lúc này trong project sẽ sinh ra một file docker-compose.xml
Để khám phá rõ hơn về thao tác sử dụng sail thì bạn hoàn toàn có thể tìm hiểu thêm : https://v1study.com/laravel-packages-sail.html
Quảng cáo

2. Cài đặt Docker Desktop cho Windows 10

Chúng ta khởi đầu thiết lập môi trường tự nhiên .
Để dùng được Sail thì tiên phong máy tính của bạn phải setup docker desktop : https://www.docker.com/products/docker-desktop/
Ở bước này quan tâm khi tải Docker Desktop về cần chạy file thiết lập của Docker với quyền Adminstrator nhé .
Tiếp theo cần thiết lập WLS trên Windows 10

WSL là gì ?

WSL ( Windows Subsystem for Linux ) là một trình dòng lệnh trên Windows 10, giúp bạn hoàn toàn có thể chạy những dòng lệnh của Linux trên Windows .

Trước kia để chạy được Docker trên Windows chúng ta thường cài đặt thông qua máy ảo Hyper-V hoặc dùng phần mềm thứ ba là VirtualBox. Tuy nhiên, hiện giờ nếu bạn đã cài đặt WSL 2 bạn có thể chạy các Container Linux mà không cần những máy ảo trên. Docker lúc này ổn định và nhanh hơn sử dụng Hyper-V.

Để thiết lập WSL với những máy ảo khác bạn bè hoàn toàn có thể tìm hiểu thêm : https://docs.microsoft.com/en-us/windows/wsl/install .

3. Cài đặt WSL Ubuntu 20.04

Để thiết lập Ubuntu 20.04 triển khai gõ command sau ở PowerShell của Windows 10

wsl --install -d Ubuntu-20.04

Cập nhật WSL version WSL 1 thành WSL 2 và setup wls mặc định gọi máy ảo Ubuntu 20.04

wsl --set-default-version 2, replacing 1
wsl --setdefault Ubuntu-20.04 2
wsl --set-version Ubuntu-20.04 2

Cài đặt Windows Terminal tại Microsoft Store nếu chưa có : https://www.microsoft.com/en-us/p/windows-terminal/
Sau khi setup xong WSL thì mở Start Menu lên sẽ thấy WSL ubutu 20.04 .
wsl windows 10wsl windows 10Khi mở WSL trên thì tất cả chúng ta đã có thể thao tác với Ubuntu 20.04 trên Windows 10 một cách thông thường .

  • Cập nhật Ubuntu 20.04

Giao diện của WSL ubuntu 20.04Giao diện của WSL ubuntu 20.04

4. Cài đặt môi trường tự nhiên PHP 8.1 cho Laravel 9

Mặc định Ubuntu 20.04 chỉ có sẵn PHP đến version 7.4, do vậy để thiết lập PHP 8.1 ta thực thi những bước .

  • Cài đặt PHP trên unbuntu 20.04 ta chạy các lệnh sau:
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
  • Sau khi đã thêm reponsitory cho ubuntu 20.04 thì ta có thể cài đặt php 8.1
sudo apt install php8.1
  • Cài đặt các pakage PHP cần thiết cho dự án
sudo apt install -y php8.1-{cli,gd,curl,mysql,ldap,zip,fileinfo,fpm,xml,mbstring,exif,pspell,imagick,bcmath}
  • Đối với các dự án có dùng Laravel-mix anh em cài thêm NodeJs và npm
sudo apt install nodejs
sudo apt install npm
  • Tiếp theo cd vào thư mục home trên Ubuntu và clone source Laravel.
cd ~
curl -s https://laravel.build/example-app | bash
cd ./example-app

Hoặc project đã tồn tại thì cài git và clone

Chạy lệnh setup những pagekage cho dự án Bất Động Sản Laravel

npm install
composer install

Copy file. env cho dự án Bất Động Sản Laraevel

cp .env.example .env

Ở bước này cần chỉnh file docker-compose cho đúng mực nhé. Lưu ý DB_HOST trong file. env cần biến hóa thành services name trong file docker-compose chứ không phải là 127.0.0.1 nhé .
Bước sau cuối là căng buồm thôi. Option – d được cho phép sail chạy trong nền mà không hiện log lên cmd .

./vendor/bin/sail up -d

Tuy nhiên, thay vì gõ liên tục command trên thì để triển khai những lệnh Sail, bạn hoàn toàn có thể thông số kỹ thuật bí danh Bash được cho phép bạn triển khai những lệnh của Sail thuận tiện hơn :

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

Sau này chỉ cần chạy sail up là sửa chữa thay thế command. / vendor / bin / sai up
Để tắt container đang chạy ngầm hoàn toàn có thể dùng Ctrl + C hoặc dùng lệnh

./vendor/bin/sail stop

Trường hợp muốn xóa container đã tạo thì chạy command. Option – v được cho phép xóa luôn volume của container tránh trường hợp lưu data cũ bị sai .

./vendor/bin/sail down -v

Để code trong máy ảo ubuntu thì máy Windows 10 cần setup sẵn Visual Code khi đang ở wsl thư mục source thì gõ lệnh dưới là code được .

code .

Chạy 1 số ít lệnh artisan xóa cache :

php artisan config:clear
php artisan cache:clear
php artisan key:generate

Chạy lệnh set up DB

./vendor/bin/sail artisan migrate.
./vendor/bin/sail artisan db:seed

Cuối cùng chạy http://localhost trong trình duyệt .
Trường hợp project có dùng những pakage của NodeJs thì chạy thêm

sudo npm install
sudo npm run dev

5. Một số lỗi thường gặp

Laravel: file_put_contents() failed to open stream: Permission denied for Session folder

Chạy lại 2 command

php artisan config:clear
php artisan cache:clear

Không kết nối được vào database

Thử login với username = root và password rỗng ở file. env. Tại file docker-compose.yml thêm constant MYSQL_ALLOW_EMPTY_PASSWORD

    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1

Truy cập vào docker container để kiểm tra xem đã có db chưa.

Từ WSL command gõ lệnh : docker ps

docker ps
docker exec -it {id-container} bash

Tiếp theo gõ mysql > show databases
Trên đây mình đã ghi chú chi tiết cụ thể những bước khởi tạo ứng dụng Laravel với Laravel sail trên Windows 10. Trong quy trình setup nếu xảy ra 1 số ít lỗi bạn bè hoàn toàn có thể search thêm google nhé .