Để thiết lập một môi trường phát triển website trên macOS, các bạn sẽ phải tự cài đặt và cấu hình LEMP để tối ưu mức độ ổn định của nó? Điều này tương đối mất thời gian và công sức thực hiện. Từ khi có Laravel Valet, các bạn có thể sử dụng chương trình này để thiết lập môi trường máy chủ trên máy tính, đặc biệt là macOS.
Valet trong Laravel là gì?
Valet đơn giản là môi trường giả lập để các bạn phát triển Laravel (tương tự như Homestead và docker). Nó không yêu cầu bạn phải cài đặt Apache/Nginx hoặc cấu hình/etc hoặc host files. Khi sử dụng Laravel Valet, bạn có thể cấu hình máy Mac để chạy Caddy ở background thường xuyên, đặc biệt là khi máy bạn khởi động. Sau đó, bạn dùng DnsMasq để proxy các request tới tên miền *.dev và trỏ đến các site cài đặt trên máy của bạn.
Laravel Valet là môi trường phát triển rất nhanh và dung lượng RAM tiêu tốn cực thấp (chỉ có 7MB). Tuy nhiên, Valet không phải là cách thay thế toàn bộ cho Vagrant và Homestead. Nó có thể cung cấp phương án thay thế khi bạn đang cần một môi trường vận hành cơ bản và không đòi hỏi nhiều thứ phức tạp. Bạn có thể cho nó hoạt động trên máy tính mà có RAM giới hạn. Valet có thể hỗ trợ nhiều Framework và CMS như Laravel, Lumen, Symfony, Zend, CakePHP 3, WordPress, Bedrock, Craft, Statamic, Jigsaw, Static HTML,…
Cách cài đặt Valet trên Laravel
Valet cần có hệ điều hành Mac và Homebrew để cài đặt trên Laravel. Trước khi bắt đầu, bạn cần kiểm tra xem trên máy tính không có chứa bất cứ ứng dụng nào như Apache và Nginx (đang sử dụng port 80). Sau đó, bạn bắt đầu tiến trình cài đặt. Đầu tiên, bạn nên cài hoặc cập nhật Homebrew lên phiên bản mới nhất (có sử dụng brew update). Tiếp theo, bạn cài PHP (có Homebrew php 7 brew install homebrew/php/php70 or php 7.2 brew install homebrew/core/php). Kế tiếp, bạn cài Valet với Composer và nhớ sử dụng câu lệnh composer global require laravel/valet.
Hãy chắc chắn rằng ~/.composer/vendor/bin đã được đặt vào trong biến môi trường "PATH". Tiếp theo, bạn cho chạy dòng lệnh Valet Install để cấu hình, cài Valet và DnsMasq vào trong máy. Đừng quên đăng ký Valet daemon để hệ thống tự chạy khi hệ thống có thể khởi động lại.
Một khi bạn đã cài xong Valet, bạn cần thử ping đến bất cứ tên miền *.dev nào trên terminal để kiểm tra xem Valet có hoạt động trên Laravel hay chưa. Bạn có thể thử ping foobar.dev. Nếu Valet đã được cài đặt đúng, thì khi đó bạn sẽ thấy domain này đang trả về địa chỉ 127.0.0.1.Valet sẽ tự khởi động daemon của nó mỗi khi máy bạn khởi động lại. Do đó, bạn không phải chạy Valet start hay Valet install nữa.
Sử dụng với tên miền khác như thế nào?
Valet cung cấp các dự án có tên miền .dev. Nếu bạn muốn sử dụng tên miền khác, thì bạn dùng câu lệnh valet domain tld-name. Ví dụ bạn muốn dùng tên miền .local thay vì .dev, bạn chạy Valet domain local và Valet sẽ bắt đầu chạy tự động các dự án của bạn tại *.localNếu bạn cần phải sử dụng database, thì hãy thử MariaDB bằng lệnh brew install mariadb và brew services start mysql. Bạn có thể kết nối đến database tại 127.0.0.1 và sử dụng username root với mật khẩu là chuỗi rỗng.
Serving sites
Khi Valet đã được cài, bạn có thể bắt đầu serving sites. Valet thường cung cấp 2 câu lệnh để bạn serve sites Laravel. Đó là park và link.
Với câu lệnh park
Đầu tiên, bạn tạo một thư mục mới trên máy Mac. Bạn có thể gõ dòng lệnh mkdir ~/Sites hoặc cd ~/Sites và chạy Valet Park. Câu lệnh này sẽ giúp bạn đăng ký thư mục mà nó đang làm việc để trở thành đường dẫn và Valet dễ dàng tìm kiếm sites. Sau đó, bạn tạo một site Laravel mới trong thư mục Laravel new blog. Tiếp theo, bạn mở link http://blog.dev trên trình duyệt. Lúc đó, bất kỳ dự án nào của Laravel mà bạn tạo ra trong thư mục sẽ được tự động serve theo quy tắc http://tên-thư-mục.dev.
Với câu lệnh link
Câu lệnh link có thể được sử dụng để serve sites Laravel của bạn. Nó rất hữu ích khi bạn chỉ muốn serve một site duy nhất trong thư mục (nhưng không phải là toàn bộ thư mục). Để áp dụng câu lệnh link, hãy di chuyển đến một trong các dự án của bạn và cho chạy Valet link app-name trong terminal.
Valet sẽ tạo một symbolic link trong ~/.valet/Sites để trỏ đến thư mục đang làm việc. Một khi đã chạy lệnh link, bạn có thể truy cập vào site trên trình duyệt ở địa chỉ http://app-name.dev. Để xem được danh sách toàn bộ thư mục được link, bạn cho chạy lệnh Valet link. Dùng valet unlink app-name để huỷ các symbolic link.
Cách bảo mật sites với TLS
Valet serve thường có các site thông qua HTTP thuần. Nhưng nếu bạn muốn serve site và mã hóa TLS có sử dụng HTTP2, thì bạn sử dụng lệnh secure. Ví dụ site của bạn được serve ở địa chỉ laravel.dev, thì bạn cần chạy câu lệnh valet secure laravel để bảo vệ nó. Để gỡ bảo mật một site và quay trở lại sử dụng HTTP, thì bạn nên dùng lệnh unsecure. Tương tự như lệnh secure, câu lệnh valet unsecure laravel thường nhận tên host mà bạn muốn bỏ chế độ bảo mật.
Cách chia sẻ các site
Bạn có biết Valet có câu lệnh để bạn chia sẻ site trên máy của bạn ra ngoài thế giới? Để kiểm tra trên điện thoại hoặc các thiết bị khác, bạn có thể dùng Valet. Bạn không nhất thiết phải cài thêm bất cứ cái gì khi Valet đã có trên máy. Để chia sẻ một site, bạn chuyển đến thư mục của site và gõ lệnh Valet share. Khi đó, một link public URL sẽ được chèn vào trong clipboard và bạn paste trực tiếp nó vào trong trình duyệt. Ấn Ctrl + C để hủy tiến trình chia sẻ.
Cách xem logs
Nếu muốn theo dõi toàn bộ các log cho sites của bạn trên terminal, thì bạn gõ lệnh Valet logs. Khi đó, tất cả nội dung log mới sẽ có trên terminal. Đây là cách nhanh và hữu ích để bạn theo dõi log mà không cần phải rời terminal.
Cách tạo driver riêng cho Valet
Bạn có thể tạo driver riêng cho Valet để serve các ứng dụng PHP chạy trên các framework hay CMS mà không có sự tiếp sức từ Valet. Khi cài đặt Valet, thư mục ~/.valet/Drivers sẽ xuất hiện và có chứa file SampleValetDriver.php. File đó chứa các ví dụ minh họa về cách tạo ra một driver như thế nào. Phát triển một driver chỉ đòi hỏi bạn triển khai 3 hàm chính: serves, isStaticFile, và frontControllerPath.
Ba hàm đó đều có thể nhận đầy đủ các giá trị $sitePath, $siteName, và $uri vào trong tham số. Tham số $sitePath là đường dẫn đầy đủ tới site đang được serve trên máy bạn. Ví dụ /Users/petehouston/Sites/my-project, thì tham số $siteName là phần mảng host trên phần tên miền my-project.
Còn $uri là request URI tới site (/foo/bar).Khi bạn đã tạo hoàn thiện driver cho Valet, đừng quên đặt nó trong thư mục ~/.valet/Drivers. Sau đó, bạn sử dụng quy tắc đặt tên FrameworkValetDriver.php. Ví dụ bạn tạo driver cho WordPress thì tên file sẽ là WordPressValetDriver.php.
Hàm serves
Bạn nên trả hàm servers về true nếu driver của bạn cần phải xử lý đến request. Nếu không thể thực hiện, thì bạn có thể trả về hàm false. Sau đó, bạn nên kiểm tra bên trong hàm này. Nếu giá trị $sitePath có chứa kiểu dự án mà bạn muốn thực hiện serve hay không.
/**
* Determine if the driver serves the request.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return void
*/
public function serves($sitePath, $siteName, $uri)
{
return is_dir($sitePath.'/wp-admin');
}
Cập nhật thêm được vài kiến thức mới
Bài viết hữu ích.
Hữu ích
Cảm ơn Admin. Bài viết khá hay !
OK bạn, mình sẽ sắp xếp viết một bài về Extend Validation. Cảm ơn bạn đã quan tâm nhé.