Valet là một môi trường phát triển Laravel cho người dùng Mac. Không Vagrant, không file /etc/hosts
. Bạn có thể công khai site của bạn bằng local tunnel. Vâng, chúng tôi cũng thích nó.
Laravel Valet sẽ cấu hình máy Mac của bạn chạy Nginx ở background mỗi khi máy khởi động. Sau đó, dùng DnsMasq, Valet sẽ chuyển tất cả các request đến domain *.test
vào site mà bạn đã cài đặt ở local.
Cụ thể là, bạn sẽ có một môi trường phát triển Laravel nhanh chóng chỉ dùng có khoảng 7 MB RAM. Valet không phải là một sự thay thế hoàn toàn cho Vagrant hoặc Homestead, nhưng cung cấp một sự thay thế tuyệt vời nếu bạn muốn những điều cơ bản, linh hoạt, thích tốc độ cực cao hoặc đang làm việc trên một máy có dung lượng RAM thấp.
Mặc định, Valet hỗ trợ những phần sau, nhưng không giới hạn:
Tuy nhiên, bạn có thể mở rộng Valet với custom drivers.
Như bạn đã biết, Laravel cung cấp Homestead, và các môi trường phát triển Laravel khác. Homestead và Valet sẽ khác nhau về đối tượng người dùng, và cách tiếp cận với môi trường phát triển ở local. Homestead cung cấp một máy ảo Ubuntu cùng với cấu hình Nginx. Homestead sẽ là lựa chọn tốt nếu bạn muốn có một môi trường phát triển Linux được ảo hóa hoàn toàn trên Windows / Linux.
Còn Valet chỉ hỗ trợ Mac và yêu cầu bạn cài đặt PHP và database server trực tiếp vào máy local của bạn. Điều này có thể dễ dàng đạt được bằng cách sử dụng Homebrew với các lệnh như brew install php
và brew install mysql
. Valet cung cấp một môi trường phát triển local nhanh chóng với mức tiêu thụ tài nguyên tối thiểu, vì vậy thật tuyệt vời cho các nhà phát triển nếu chỉ cần PHP / MySQL và không cần môi trường phát triển ảo hóa.
Cả Valet và Homestead đều là những lựa chọn tuyệt vời để cấu hình môi trường phát triển Laravel cho bạn. Bạn chọn cái nào đều sẽ phụ thuộc vào sở thích cá nhân hoặc nhu cầu của nhóm phát triển của bạn.
Valet yêu cầu macOS và Homebrew. Trước khi cài đặt, bạn nên đảm bảo rằng không có chương trình nào như Apache hoặc Nginx đang chạy ở cổng 80 trên máy local của bạn.
brew update
.brew install php
thông qua Homebrew.composer global require laravel/valet
. Và chắc chắn là thư mục ~/.composer/vendor/bin
này đã có trong "PATH" của máy bạn.valet install
. Lệnh này sẽ cấu hình và cài đặt Valet cùng DnsMasq, ngoài ra cũng sẽ đăng ký Valet's daemon chạy mỗi khi máy bạn khởi động.Khi Valet đã được cài đặt xong, hãy thử ping đến bất kỳ tên miền nào có đuôi là * .test
trên terminal của bạn bằng cách sử dụng một lệnh như sau ping foobar.test
. Nếu Valet được cài đặt chính xác, bạn sẽ thấy tên miền này phản hồi trên 127.0.0.1
.
Valet sẽ tự động khởi động daemon của nó mỗi khi máy bạn khởi động. Bạn sẽ không cần phải chạy valet start
hoặc valet install
một lần nào nữa sau khi quá trình cài đặt Valet hoàn tất.
Mặc định, Valet sẽ cung cấp project của bạn dưới tên miền .test
. Nếu bạn muốn sử dụng một tên miền khác, bạn có thể sử dụng lệnh valet tld tld-name
.
Ví dụ: nếu bạn muốn sử dụng tên miền .app
thay vì tên miền .test
, hãy chạy valet tld app
và Valet sẽ tự động thay đổi tên miền project của bạn sang *.app
.
Nếu bạn cần một cơ sở dữ liệu, hãy thử dùng MySQL bằng cách chạy brew install [email protected]
trên terminal. Khi MySQL đã được cài đặt, bạn có thể khởi động nó bằng lệnh brew services start [email protected]
. Sau đó, bạn có thể kết nối đến cơ sở dữ liệu tại địa chỉ 127.0.0.1
với username là root
và mật khẩu là trống.
Valet cho phép bạn chuyển đổi các phiên bản PHP khác nhau bằng lệnh valet use php@version
. Valet sẽ cài đặt phiên bản PHP được chỉ định thông qua Brew nếu nó chưa được cài đặt:
valet use [email protected]
valet use php
Bạn có thể cập nhật cài đặt Valet của bạn bằng lệnh composer global update
trong terminal của bạn. Sau khi cập nhật, bạn nên chạy lệnh valet install
để Valet có thể nâng cấp bổ sung thêm các file cấu hình nếu cần.
Với bản Valet 2.0, nó sẽ chuyển đổi web server từ Caddy sang Nginx. Nên vì thế, trước khi nâng cấp lên phiên bản này, bạn nên chạy các lệnh sau để dừng và gỡ cài đặt Caddy hiện có:
valet stop
valet uninstall
Tiếp theo, bạn nên nâng cấp lên phiên bản Valet mới nhất. Tùy thuộc vào cách bạn cài đặt Valet, việc này thường được thực hiện thông qua Git hoặc Composer. Nếu bạn đã cài đặt Valet thông qua Composer, bạn nên sử dụng lệnh sau để cập nhật lên phiên bản mới nhất:
composer global require laravel/valet
Còn nếu bạn sử dụng Git để tải source code của Valet về, thì bạn nên chạy lệnh install
:
valet install
valet restart
Sau khi nâng cấp, có thể bạn cần phải chạy lại lệnh re-park hoặc re-link cho site của bạn.
Sau khi Valet được cài đặt xong, bạn có thể bắt đầu tạo site của bạn. Valet cung cấp hai lệnh để giúp bạn tạo các trang web: park
và link
.
mkdir ~/Sites
. Tiếp theo, chạy lệnh cd ~/Sites
và valet park
. Lệnh valet park
sẽ đăng ký thư mục hiện tại thành một đường dẫn, mà Valet sẽ tìm kiếm cho site.laravel new blog
.http://blog.test
trên web browser của bạn.Đó là tất cả Bây giờ, bất kỳ project Laravel nào bạn mà được tạo trong thư mục mà đã được park thì nó sẽ tự động được tạo một site tương ứng theo quy tắc là http://folder-name.test
. Để xem danh sách tất cả các trang web có trong thư mục đã park của bạn, bạn có thể thực hiện lệnh valet parked
.
Lệnh link
cũng được dùng để tạo site cho bạn. Lệnh này hữu ích nếu bạn muốn tạo một site trong một thư mục chứ không phải là toàn bộ thư mục.
valet link app-name
trong terminal. Valet sẽ tạo một link ảo trong thư mục ~/.config/valet/Sites
, và nó sẽ trỏ đến thư mục mà bạn đang chạy lệnh ở trên.link
, bạn có thể truy cập vào site của bạn trên web browser với link là http://app-name.test
.Để xem danh sách tất cả các thư mục đã được tạo link, hãy chạy lệnh valet links
. Bạn có thể sử dụng lệnh valet unlink app-name
để hủy link đó.
{tip} Bạn có thể sử dụng
valet link
để tạo nhiều sub domain trong cùng một project. Để thêm một sub domain hoặc một tên miền khác vào project của bạn, hãy chạyvalet link domainomain.app-name
từ thư mục project.
Mặc định, Valet sẽ tạo site trên HTTP. Tuy nhiên, nếu bạn muốn tạo một trang web được mã hoá TLS bằng HTTP/2, hãy sử dụng lệnh secure
. Ví dụ: nếu trang web của bạn đang được Valet tạo trên tên miền là laravel.test
, thì bạn nên chạy lệnh sau để bảo vệ trang web này:
valet secure laravel
Để bỏ lớp bảo mật và quay lại dùng HTTP, thì hãy dùng lệnh unsecure
. Giống như lệnh secure
, nó chấp nhận host name là bạn không muốn bảo mật:
valet unsecure laravel
Valet đã chứa một lệnh để chia sẻ các trang web ở local của bạn với thế giới. Không cần phải cài đặt thêm các phần mềm sau khi Valet được cài đặt.
Để chia sẻ một trang web, hãy trỏ đến thư mục chứa trang web đó trong terminal của bạn và chạy lệnh valet share
. Một URL sẽ được chèn vào clipboard của bạn và sẵn sàng paste bất kỳ đâu, ví dụ như vào trong trình duyệt của bạn. Và chỉ có thế.
Để ngừng chia sẻ trang web của bạn, hãy nhấn Control + C
để hủy quá trình.
Một số ứng dụng sử dụng các framework khác có thể phụ thuộc vào các biến môi trường trên server nhưng lại không cung cấp cách thức để các biến đó được cấu hình trong project của bạn. Valet cho phép bạn cấu hình các biến môi trường cho trang web bằng cách thêm một file .valet-env.php
vào trong thư mục gốc của project của bạn. Các biến này sẽ được thêm vào trong mảng global $_SERVER
:
<?php
return [
'WEBSITE_NAME' => 'My Blog',
];
Bạn có thể viết Valet "driver" của riêng bạn để tạo các application PHP chạy trên framework khác hoặc CMS khác mà không được Valet hỗ trợ. Khi bạn cài đặt Valet, một thư mục ~/.config/valet/Drivers
sẽ được tạo và chứa file SampleValetDriver.php
. File này sẽ chứa một driver mẫu để trình bày cách viết một driver tuỳ chỉnh. Để viết một driver tuỳ chỉnh thì nó chỉ yêu cầu bạn kế thừa 3 phương thức: serves
, isStaticFile
, và frontControllerPath
.
Tất cả 3 phương thức này đều nhận các giá trị là $sitePath
, $siteName
, và $uri
làm tham số của chúng. $sitePath
là đường dẫn đến trang web mà đã được tạo trên máy của bạn, chẳng hạn như /Users/Lisa/Sites/my-project
. $siteName
là phần "host" hoặc phần "site name" của tên miền(my-project
). $uri
là request URI (/foo/bar
).
Khi mà bạn đã tuỳ chỉnh xong Valet driver, hãy lưu nó vào trong thư mục ~/.config/valet/Drivers
bằng cách sử dụng quy ước đặt tên như sau FrameworkValetDriver.php
. Ví dụ: nếu bạn đang viết valet driver cho WordPress, thì nên đặt tên file của bạn phải là WordPressValetDriver.php
.
Hãy xem cách làm mẫu của từng phương thức mà driver Valet của bạn nên làm.
serves
Phương thức serves
sẽ trả về true
nếu driver của bạn sẽ xử lý request. Ngược lại, phương thức sẽ trả về false
. Vì vậy, trong phương thức này, bạn nên xác định xem $sitePath
đã cho có chứa loại dự án mà bạn đang tạo hay không.
Ví dụ: giả sử chúng ta đang viết một driver WordPressValetDriver
. Phương thức serves
của chúng ta có thể trông giống như thế này:
/**
* Determine if the driver serves the request.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return is_dir($sitePath.'/wp-admin');
}
isStaticFile
IsStaticFile
sẽ xác định xem request đến có phải là file "static" hay không, chẳng hạn như hình ảnh hoặc stylesheet. Nếu file là static, phương thức sẽ trả về đường dẫn đến file static trên disk. Nếu request đến không phải cho file static, phương thức sẽ trả về false
:
/**
* Determine if the incoming request is for a static file.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string|false
*/
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
return false;
}
{note} phương thức
isStaticFile
sẽ chỉ được gọi nếu phương thứcserves
trả vềtrue
và request URI không phải là/
.
frontControllerPath
Phương thức frontControllPath
sẽ trả về đường dẫn "front controller" của application, thường là tệp "index.php" của bạn hoặc tương đương:
/**
* Get the fully resolved path to the application's front controller.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public/index.php';
}
Nếu bạn muốn định nghĩa một Valet driver tùy chỉnh cho một application, hãy tạo một LocalValetDriver.php
trong thư mục gốc của application. Valet driver tùy chỉnh của bạn có thể extent từ class ValetDriver
hoặc extent từ một driver nào đó của một application hiện có, chẳng hạn nhưLaravelValetDriver
:
class LocalValetDriver extends LaravelValetDriver
{
/**
* Determine if the driver serves the request.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return true;
}
/**
* Get the fully resolved path to the application's front controller.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public_html/index.php';
}
}
Lệnh | Mô tả |
---|---|
valet forget |
Chạy lệnh này từ một thư mục đã được park để xóa thư mục đó ra khỏi danh sách thư mục đã được park. |
valet log |
Xem danh sách các file log được ghi bởi các service của Valet. |
valet paths |
Xem tất cả các đường dẫn đã được park. |
valet restart |
Khởi động lại daemon Valet. |
valet start |
Khởi động daemon Valet. |
valet stop |
Dừng daemon Valet. |
valet trust |
Thêm quyền sudoer cho Brew và Valet để chạy các lệnh Valet mà không cần xác nhận password. |
valet uninstall |
Gỡ cài đặt daemon Valet. |
entry