Laravel Homestead

Giới thiệu

Laravel cố gắng làm cho toàn bộ các kinh nghiệp phát triển PHP trở lên thú vị, bao gồm cả môi trường phát triển local của bạn. Vagrant cung cấp đơn giản, thoải mái để quản lý máy ảo.

Laravel Homestead là bản chính thức, trước khi đóng gói Vagrant box cung cấp cho bạn một môi trường tuyệt vời mà bạn không phải cài PHP, web server hay bất cứ phần mền nào khác trên môi trường local của bạn. Không phải bận tâm về hệ điều hành của bạn là gì? Vagrant boxes đã đầy đủ tất cả mọi thứ, việc bạn chỉ việc phát triển ứng dụng. Nếu có lỗi gì bạn có thể hủy và tạo lại một box chỉ trong vài phút!

Homestead có thể chạy trên Windowns, Mac hay Linux, nó bao gồm cả Nginx web server, PHP 7.0, MySQL, Postgres, Redis, Memcached, Node, và tất cả những thứ khác bạn cần để phải triển ứng dụng Laravel.

Nếu bạn dùng Windowns, bạn cần bật tính năng hardware virtualization (VT-x). Nó thường được bật thông qua BIOS. Nếu bạn dùng Hyper-V trên hệ thống UEFI bạn cần phải vô hiệu hóa Hyper-V trước khi bật VT-x.

Phần mền bao gồm

Cài đặt & thiết lập

Bưới khởi tạo

Trước khi chạy môi trường Homestead của bạn, bạn cần phải cài đặt VirtualBox 5.x hoặc VMWareVagrant. Tất cả những phần mền trên đều cung cấp giao diện người dùng và rất dễ cài đặt cho tất cả các hệ điều hành phổ biến.

Để sử dụng VMware, bạn cần mua cả VMware Fusion / Workstation và cả VMware Vagrant plug-in. Dù không miễn phí, nhưng VMware có thể cung cấp hiệu năng truy cập thư mục chia sẻ nhanh hơn.

Cài đặt Homestead Vagrant

Sai khi bạn đã cài VirtualBox / VMware and Vagrant, bạn cần thêm hộp laravel/homestead bằng cách sử dụng lệnh trên terminal. Bạn sẽ mất vài phú để tải nó, phụ thuộc vào tốc độ internet của bạn nhanh hay chậm:

vagrant box add laravel/homestead

Nếu dòng lệnh bị lỗi, bạn hãy cập nhật phiên bản mới nhất Vagrant rồi chạy lại.

Cài đặt Homestead

Bạn có thể cài Homestead bằng cách clone từ kho lưu trữ về.Hãy cân nhắc sao chép vào Homestead trong thư mục "home" của bạn, như vậy thì Homestead sẽ có thể hoạt động như host cho tất cả dự án của bạn:

cd ~

git clone https://github.com/laravel/homestead.git Homestead

Sai khi đã clone Homestead từ kho lưu trữ về, chạy lệnh bash init.sh từ thư mục Homestead để tạo file cấu hình Homestead.yaml. File Homestead.yaml sẽ được để ẩn trong thư mục ẩn ~/.homestead:

bash init.sh

Cấu hình Homestead

Thiệt lập provider

Từ khóa provider trong ~/.homestead/Homestead.yaml chỉ ra Vagrant provider nào sẽ được sử dụng: virtualbox, vmware_fusion, or vmware_workstation. Bạn có thể thiết lập provider theo ý bạn:

provider: virtualbox

Cấu hình Folder chia sẻ

Thuộc tính folders trong file Homestead.yaml liệt kê tất cả các folder mà bạn muốn chia sẻ với môi trường Homestead. Nếu như file nào có trong folder này thay đổi, thì nó sẽ được đồng bộ giữa môi trường local của bạn và môi trường Homestead. ạn có cấu hình nhiều folder chia sẻ nếu cần:

folders:
    - map: ~/Code
      to: /home/vagrant/Code

Để bật NFS, bạn chỉ cần thêm một cờ đơn giản vào cấu hình chia sẻ folder của bạn:

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "nfs"

Cấu hình Nginx

j chưa dùng Nginx bao giờ! Không sao cả. Thuộc tính sites cho phép bạn dễ dàng map một "tên miền" đến một folder trong môi trường Homestead của bạn. Một ví dụ là file cấu hình Homestead.yaml. Một lần nữa, bạn có thể thêm nhiều trang vào môi trường Homestead của bạn nếu cần. Homestead có thẻ hoạt động thoải mái, ảo hóa thuận tiện cho mọi dự án Laravel bạn làm việc:

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

Nếu bạn thay đổi thuộc tính sites sau khi cung cấp hộp Homestead, bạn cần phải chạy lại lệnh vagrant reload --provision để cập nhập lại cấu hình Nginx trên máy ảo.

File Hosts

Bạn cần thêm "tên miền" cho trang Nginx vào file hosts. File hosts sẽ chuyển hướng request của bạn đến trang Homestead sang máy chủ Homestead của bạn. Trên máy Mac và Linux, nó đặt ở /etc/hosts. Trên Windowns, nó đặt ở C:\Windows\System32\drivers\etc\hosts. Dòng bạn cần thêm vào file này sẽ có dạng bên dưới:

192.168.10.10  homestead.app

Bạn phải chắc chắn là địa chỉ IP được liệt kê là địa chỉ có trong file ~/.homestead/Homestead.yaml. Sau khi bạn đã thêm tên miền vào file hosts file và chạy hộp Vagrant, bạn sẽ có thể kết nối đến trong thông qua trình duyệt:

http://homestead.app

Khởi động Vagrant Box

Sau khi bạn chỉnh sửa Homestead.yaml theo ý bạn, chạy lệnh vagrant up từ trong thư mục Homestead. Vagrant sẽ khởi động má ảo và tự động cấu hình folder chia sẻ và trang Nginx.

To destroy the machine, you may use the vagrant destroy --force command.

Cài đặt cho từng dự án

Thay vì cài đặt Homestead một cách toàn cục và chia sẻ hộp Homestead giống nhau cho tất cả dự án, bạn có thể cấu hình từng Homestead cho từng dự án. Cài đặt Homestead cho tưng dự án có lợi ích nếu bạn muốn gửi kèm Vagrantfile với dự án của bạn, cho phép người khác làm việc trên dự án đơn giản bằng lệnh vagrant up.

Để cài Homestead trực tiếp vào dự án của bạn, sử dụng Composer:

composer require laravel/homestead --dev

Sau khi Homestead đã được cài, sử dụng lệnh make để tạo file VagrantfileHomestead.yaml ftrong thư mục gốc. Lệnh make sẽ tự động cấu hình sitesfolders vào file Homestead.yaml.

Mac / Linux:

php vendor/bin/homestead make

Windows:

vendor\\bin\\homestead make

Tiếp theo, chạy lệnh vagrant up từ terminal và truy cập vào dự án tại http://homestead.app bằng trình duyệt. Nhớ rằng, bạn sẽ cần phải thêm homestead.app hoặc tên miền bạn chọn vào file /etc/hosts.

Cài đặt MariaDB

Nếu bạn thích dùng MariaDB hơn MySQL, bạn có thể thêm tùy chọn mariadb vào file Homestead.yaml. Lựa chọn này sẽ loại bỏ MySQL và cài đặt MariaDB. MariaDB sẽ hoạt động thay cho MySQL vì vậy bạn cũng có thể dùng mysql database driver trong cấu hình cơ sở dữ liệu của bạn:

box: laravel/homestead
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true

Cách sử dụng thường xuyên

Truy cập Homestead trên toàn hệ thống

Thỉnh thoảng bạn muốn chạy vagrant up để khởi động máy ảo Homestead tại bất cứ đâu trong hệ thống. Bạn có thể làm điều đó bằng cách thêm hàm Bash đơn giản vào Bash profile. Hàm này sẽ cho phép bạn chạy lệnh Vagrant cở bất cứ đâu trong hệ thống và nó sẽ tự động chuyển lệnh đấy về nơi mà Homestead được cài đặt:

function homestead() {
    ( cd ~/Homestead && vagrant $* )
}

Đảm bảo rằng bạn đã chỉnh đường dẫn ~/Homestead đúng với nơi mà bạn cài đặt Homestead. Khi đó bạn có thể chạy lệnh như homestead up hoặc homestead ssh từ bất cứ đâu trong hệ thống.

Kết nối qua SSH

Bạn có thể kết nối SSH vào máy ảo bằng lệnh vagrant ssh từ thư mục Homestead.

Tuy nhiên, nếu bạn muốn kết nối SSH đến máy ảo thường xuyên, bạn nên cân nhắc việc thêm "function" được mô tả bên trên đến máy của bạn để có thể kết nối SSH đến hộp Homestead một cách nhanh chóng.

Kết nối với cơ sở dữ liệu

Một cơ sở dữ liệu homestead đã được cấu hình sẽ cho cả MySQL và Postgres. Để thuận tiện,File .env cấu hình của Laravel framwork có thể kết nối đến cơ sở dữ liệu.

Để kết nối đến cơ sở dữ liệu MySQL hay Postgres từ môi trường local thông qua Navicat hoặc Sequel Pro, bạn nên kết nối đến địa chỉ 127.0.0.1 và cổng 33060 (MySQL) or 54320 (Postgres). Username và mật khẩu cho cả 2 loại cơ sở dữ liệu là homestead / secret.

Bạn chỉ nên sử dụng những cổng không chuẩn khi kết nối đến cơ sở dữ liệu từ máy của bạn. Bạn sẽ dùng những cổng mặc định 3306 và 5432 trong cấu hình cơ sở dữ lieuj cho dự án Laravel vì Laravel thường được chạy trong máy ảo.

Thêm trang bổ sung

Khi môi trường Homestead của bạn đã được cung cấp và hoạt động, bạn có thể thêm các trang bổ sung Nginx cho ứng dụng laravel của bạn. Bạn có thể chạy nhiều ứng dụng dụng laravel theo ý bạn trên cùng một môi trường Homestead. Để thêm một trang, bạn chỉ cần thêm vào file ~/.homestead/Homestead.yaml và chạy lệnh vagrant reload --provision từ terminal trong thư mục Homestead.

Cấu hình lịch Cron

Laravel cung cấp rất thuật tiện cho việc tạoschedule Cron jobs bằng cách lên lịch một câu lệnh schedule:run Artisan để chạy cho mỗi phút. Câu lệnh schedule:run sẽ kiểm tra công việc đã được lên lịch được khai báo trong class App\Console\Kernel để quyết định xem công việc nào sẽ được thực thi.

Nếu muốn lệnh schedule:run thực thi cho trang Homestead, bạn có thể tùy chọn schedule thành true khi khai báo trang:

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
      schedule: true

Cron job của trang sẽ được dịnh nghĩa trong thư mục /etc/cron.d của máy ảo.

Cổng

Mặc định, dưới đây là một số cổng cho môi trường Homestead của bạn:

Chuyển tiếp giữa các cổng

Nếu bạn muốn, bạn có thể chuyển tiếp các cổng bổ sung đến hộp Vagrant, miến là xác định được giao thức của chúng:

ports:
    - send: 93000
      to: 9300
    - send: 7777
      to: 777
      protocol: udp

Giao thức mạng

Thuộc tính networks của Homestead.yaml ccấu hình giao thức mạng cho môi trường Homestead của bạn. Bạn có thể tùy biến cấu hình nhiều giao thức theo yêu cầu:

networks:
    - type: "private_network"
      ip: "192.168.10.20"

Để bật giao thức bridged, cấu hình cài đặt bridge và thay đổi lại của network sang public_network:

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

Để bật giao thức DHCP, bạn chỉ cần bỏ ip khỏi cấu hình:

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"
Nguồn: https://laravel.com/docs/5.3/homestead