Tạo môi trường phát triển web đơn giản với Homestead
Lời giới thiệu
Bạn là một web developer, bạn hầu như chỉ biết dev sản phẩm của mình và hầu như các công việc ở giai đoạn lằng nhằng như cài LAMP (Linux – Apache – MySQL -PHP) hay LEMP (Linux – NginX – MySQL – PHP), cấu hình tên miền, cấu hình server hay đại loại là SSL quá lằng nhằng và tất nhiên việc bạn đem project của mình từ môi trường windows (WAMP) lên server linux thì đúng không thể nào lường trước được nó sẽ ra bao nhiêu là lỗi. Bạn chỉ muốn tập trung vào việc code thôi và chắc rằng môi trường local giống môi trường production đương nhiên phải chắc chắn rằng bạn không cần làm những công đoạn lằng quằng đó. Đó chí là lý do ra đời của Homestead.
Homestead do Laravel phát triển, nó bao gồm:
- Ubuntu 14.04
- Git
- PHP 7.0
- HHVM
- Nginx
- MySQL
- MariaDB
- Sqlite3
- Postgres
- Composer
- Node (Bao gồm cả PM2, Bower, Grunt, và Gulp)
- Redis
- Memcached
- Beanstalkd
Homestead có thể chạy trên cả Windows, Mac, và Linux vì thế bạn không cần lo ngại về việc nó có thể chạy trên hệ điều hành của mình không?
Hướng dẫn cài đặt
Bước 1: Chuẩn bị
Trước khi thiết lập một môi trường Homestead, bạn cần phải cài đặt VirtualBox 5.x (miễn phí) hoặc VMWare (có phí), Git và Vagrant. Các phần mềm trên đều rất dễ cài đặt và tất nhiên đều hỗ trợ đa nền tảng.
Nếu bạn sử dụng VMware, bạn phải mua cả bản VMware Fusion / Workstation và VMware Vagrant plug-in. Nó không miễn phí nhé, VMware mới có thể dễ dàng chia sẽ nhanh chóng thư mục, tập tin từ Homestead và Máy của ta.
Bước 2: Cài đặt Homestead
Tải box Homestead trên Vagrant, bằng cách mở cửa sổ dòng lệnh ra (CMD với Windows hoặc Terminal với Linux/Unix) và gõ dòng lệnh sau:
vagrant box add laravel/homestead
Nó sẽ hỏi là bạn dùng VirtualBox hay VNWare, nhớ chọn cho phù hợp nhé.
Bước 3: Chuẩn bị Homestead
Chúng ta clone file cấu hình từ Github, ta gõ tiếp:
# windows phải là thư mục C:UsersUsername còn trên Linux/Unix thì là ~
cd ~
git clone https://github.com/laravel/homestead.git Homestead
Chú ý: một Virtual Machine dùng cho tất cả các webapp.
Trong thư mục Homestead, bạn hãy chạy lệnh bash init.sh hoặc init.bat (với Windows) để tạo ra tập cấu hình Homestead.yaml. Homestead.yaml sẽ được lưu tại thư mục ẩn ~/.homestead
Bước 4: Cấu hình Homestead:
Tại thư mục ~/.homestead có tập tin Homestead.yaml – tập tin này sẽ chứa tất cả các website của chúng ta.
Provider
# IP mặc định
ip: "192.168.10.10"
# RAM cho máy ảo
memory: 2048
# Số CPU sử dụng
cpus: 1
# Provider có thể là virtualbox, vmware_fusion, hoặc vmware_workstation
provider: virtualbox
Cách tạo SSH (nếu chưa có)
Dùng lệnh ssh-keygen -t rsa -C "your@email.com"
. Thay your@email.com
bằng email của bạn. (Những bạn windows có thể sử dụng PuTTYgen).
Thêm key SSH cho homestead:
# Key public
authorize: ~/.ssh/id_rsa.pub
# Key private
keys:
- ~/.ssh/id_rsa
Chú ý là có dấu – ở đàu mỗi keys.
Thư mục Shared
Tiếp theo là cấu hình thư mục Shared (thưc mục kết nối giữa máy thực và máy ảo)
folders:
# thư mục trên máy ảo
- map: ~/Code
# thư mục trên máy thực
to: /home/vagrant/Code
Cấu hình Website
sites:
# tên miền
- map: homestead.app
# thư mục trỏ đến
to: /home/vagrant/Code/Laravel/public
Nếu website của bạn có sử dụng HHVM thì bạn chỉ cần thêm một thuộc tính là hhvm với giá trị là true
.
sites:
# tên miền
- map: homestead.app
# thư mục trỏ đến
to: /home/vagrant/Code/Laravel/public
hhvm: true
Chú ý: khi bạn thay đổi site, thì khi muốn Homestead cập nhật bạn cần dùng lệnh
vagrant reload --provision
Ta cần chỉnh sửa Hosts để có thể chạy được các tên miền ảo, ở Linux hay OS X thì nó ở hosts
. Thêm các dòng như sau:
192.168.10.10 homestead.app
Chạy Homestead
Sau khi hoàn tất việc cấu hình Homestead bạn chỉ cần dùng 1 câu lệnh duy nhất:
vagrant up
ngay lập tức mọi thức sẽ “up” ngay! nào lúc đó hãy vào thử http://laravel.app xem điều gì sẽ xảy ra nhé
Để hủy bỏ máy Homestead này bạn dùng lệnh vagrant destroy --force
hoặc vagrant halt
để tắt máy homestead.
Bước 5: Database, SSH, PORT
Port
Mặc đinh, Homestead sẽ cấu hình như sau:
- 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
Thêm Port
ports:
- send: 93000
to: 9300
- send: 7777
to: 777
protocol: udp
DATABASE
Mặc đinh Homestead cấu hình giống như trong file .env của Laravel
Để kết nối với MySQL hoặc Postgres bằng công cụ Navicat hay Sequel Pro, hãy kết nối máy chủ 54320
(Postgres). Thông tin đăng nhập là homestead
/ secret
.
SSH
Rất đơn giản, Chỉ cần dùng lệnh vagrant ssh
để kết nối SSH của Homestead.
Ví dụ một Project mới
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: D:Hometead
to: /home/vagrant/Code
sites:
- map: laravel.app
to: /home/vagrant/Code/Laravel/public
- map: webcuatui.app
to: /home/vagrant/Code/Dinhquochan
databases:
- homestead
- dinhquochan
Mở hosts và chỉnh sửa:
192.168.10.10 webcuatui.app
Mình dùng thêm --provision
vì đã thêm 1 website mới vào đó.
vagrant up --provision
Tiếp đến mình gõ từ trình duyệt http://webcuatui.app thật tuyệt vời phải không nào
Tất cả file web của mình sẽ nằm trong thư mục như cấu hình trên D:Hometeaddinhquochan
Lời kết
Homestead ra đời nó giúp cho ta tiếc kiệm rất nhiều thời gian vào các dự án của mình, không còn lo lắng nhiều liệu môi trường trên local và môi trường của khách có phù hợp không, không cần thực hiện các công việc lằng nhằng để tạo ra một máy chủ ảo trên máy. Và nó kiến mình phải thốt lên rằng Homestead ! I love You “moa moaz”.
Mình hy vọng rằng homestead củng sẽ làm bạn hài lòng.
Tham khảo
-
https://laravel.com/docs/master/homestead
Bài viết gốc được đăng tải tại blog của mình.
Nice post !!
Nhớ thời chiến đầu ngay đêm với Laravel quá
À mà anh thắc mắc. Tại sao Laravel vẫn dùng Vagrant làm môi trường phát triển nhỉ ? Anh nghĩ mọi người đã chuyển sang docker hết rồi chứ. Vagrant mà chạy 2 website cùng lúc là thấy đuối lắm rồi. Docker thì chấp 10 site
Có kế hoạch lên Docker rồi anh dự là vào Laracon lần này sẽ ra mắt