Laravel Homestead
Bài đăng này đã không được cập nhật trong 6 năm
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
- Ubuntu 16.04
- Git
- PHP 7.1
- Nginx
- MySQL
- MariaDB
- Sqlite3
- Postgres
- Composer
- Node (With PM2, Bower, Grunt, and Gulp)
- Redis
- Memcached
- Beanstalkd
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.1 hoặc VMWare và Vagrant. 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.
Để sử dụng Parallels provider, bạn sẽ cần thêm Parallels Vagrant plug-in. Nó là free. 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
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:
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.
Để huy thì sử dụng lệnh vagrant destroy --force
.
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 Vagrantfile
và Homestead.yaml
ftrong thư mục gốc. Lệnh make sẽ tự động cấu hình sites và folders 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ệnhvagrant 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 trongclass 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:
SSH: 2222 → Forwards To 22
HTTP: 8000 → Forwards To 80
HTTPS: 44300 → Forwards To 443
MySQL: 33060 → Forwards To 3306
Postgres: 54320 → Forwards To 5432
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)"
Cập nhật Homestead
Bạn có thể cập nhật Homestead trong 2 bước đơn giản. Đầu tiên, bạn cần cập nhật Vagrant box sử dụng lệnh vagrant box update:
vagrant box update
Tiếp theo, bạn cần cập nhật source code Homestead. Nếu bạn lấy từ repository bạn có thể git pull origin master tại đường dẫn thu mục của bạn lấy repository.
Nếu bạn cài Homestead qua file composer.json, bạn nên đảm bảo file composer.json chứa "laravel/homestead": "^4" và cập nhật các dependencies:
composer update
Versions cũ
Bạn có thể dễ dàng ghi đè version của box Homestead bằng cách thêm dòng sau vào file Homestead.yaml
version: 0.6.0
Ví dụ:
box: laravel/homestead
version: 0.6.0
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox
Khi bạn sử dụng version cũ của Homestead box bạn cần match chúng với version source code Homestead. Bảng dưới đây là những box versions support, những version Homestead source code để sử dụng, và version của PHP:
Homestead Version | Box Version | |
---|---|---|
PHP 7.0 | 3.1.0 | 0.6.0 |
PHP 7.1 | 4.0.0 | 1.0.0 |
All rights reserved