Valet
Naik taraf
- Link command
- Tapak perkongsian
- Pemandu Valet Customized
- Arahan Valet lain
Pengenalan
Valet ialah persekitaran pembangunan Laravel untuk minimalis Mac. Tanpa Vagrant, tidak perlu mengkonfigurasi fail
/etc/hosts
. Anda juga boleh berkongsi tapak anda secara terbuka menggunakan terowong tempatan. Ya, kami juga menyukainya./etc/hosts
文件。 甚至可以使用本地隧道公开分享你的站点。 Yeah, we like it too.Laravel Valet 为您的 Mac 设置了开机后始终在后台运行 Nginx 服务。 然后,Valet 使用 DnsMasq 将所有指向安装在本地的计算机站点请求代理到
*.test
结尾的域名上。换句话说,一个速度极快的 Laravel 开发环境只占用 7MB 内存。Valet 并不是想要完全替换 Vagrant 或 Homestead,只是提供另外一种使用起来更加灵活、方便、以及内存占用更小的选择。
Valet 支持但不局限于以下内容:
- Laravel
- Lumen
- Bedrock
- CakePHP 3
- Concrete5
- Contao
- Craft
- Drupal
- Jigsaw
- Joomla
- Katana
- Kirby
- Magento
- OctoberCMS
- Sculpin
- Slim
- Statamic
- Static HTML
- Symfony
- WordPress
- Zend
当然,您也可以使用 自定义驱动 来扩展您的 Valet。
Valet 还是 Homestead
您应该知道,Laravel 还提供了另外一种本地开发环境 Homestead。Homestead 和 Valet 的不同之处在于目标受众和本地开发的方式。Homestead 提供了一个完整的、具有自动化的 Nginx 配置的 Ubuntu 虚拟机。如果你想在 Windows/Linux 上实现完全虚拟化的 Linux 开发环境,Homestead 是一个不错的选择。
Valet 仅支持 Mac,并要求你将 PHP 和数据库服务器直接安装到本地机器上。这可以很容易地通过使用
Laravel Valet menyediakan Mac anda untuk sentiasa menjalankan perkhidmatan Nginx di latar belakang selepas but. Valet kemudian menggunakan DnsMasq untuk memproksi semua permintaan tapak yang ditujukan kepada komputer yang dipasang secara setempat kepada nama domain yang berakhir denganHomebrew
命令来实现,比如brew install php
和brew install mysql
*.test
. Dalam erti kata lain, persekitaran pembangunan Laravel yang sangat pantas mengambil hanya 7MB memori. Valet tidak bertujuan untuk menggantikan Vagrant atau Homestead sepenuhnya, tetapi untuk menyediakan pilihan lain yang lebih fleksibel, mudah dan menggunakan lebih sedikit memori.Valet menyokong tetapi tidak terhad kepada yang berikut:
- Laravel
- Lumen
- Bahan Dasar < li>CakePHP 3
- Concrete5
- Contao
- Kraf
- Drupal
- Jigsaw < li >Joomla
- Katana
- Kirby
- Magento
- OktoberCMS
- Sculpin
- Ramping
- Statamik
- HTML Statik
- Symfony
- WordPress
- Zend
Sudah tentu, anda juga boleh menggunakan custom driversuntuk melanjutkan Valet anda. 🎜🎜🎜🎜🎜Valet atau Homestead
🎜Anda harus tahu bahawa Laravel juga menyediakan Homestead, satu lagi persekitaran pembangunan tempatan. Perbezaan antara Homestead dan Valet ialah khalayak sasaran dan pendekatan kepada pembangunan tempatan. Homestead menyediakan mesin maya Ubuntu yang lengkap dengan konfigurasi Nginx automatik. Jika anda ingin melaksanakan persekitaran pembangunan Linux maya sepenuhnya pada Windows/Linux, Homestead ialah pilihan yang baik. 🎜🎜Valet ialah Mac sahaja dan memerlukan anda memasang PHP dan pelayan pangkalan data terus ke mesin tempatan anda. Ini boleh dicapai dengan mudah dengan menggunakan perintahHomebrew
sepertibrew install php
danbrew install mysql
. Valet menyediakan persekitaran pembangunan tempatan yang sangat pantas dan intensif sumber, sesuai untuk pembangun yang hanya memerlukan PHP/MySQL dan tidak memerlukan persekitaran pembangunan maya. 🎜🎜Valet dan Homestead ialah kedua-dua pilihan yang bagus untuk mengkonfigurasi persekitaran pembangunan Laravel anda. Mana satu untuk dipilih hanya bergantung kepada pilihan peribadi dan keperluan pasukan anda. 🎜🎜🎜🎜🎜🎜🎜Pemasangan
Valet memerlukan sistem macOS dan Homebrew. Sebelum pemasangan, pastikan tiada program lain (seperti Apache atau Nginx) yang menduduki port 80 mesin tempatan.
- Gunakan
kemas kini brew
untuk memasang atau mengemas kini Homebrew kepada versi terkini. - 使用 Homebrew 的
brew install php
命令安装 PHP 7.3。 - 安装 Composer.
- 使用 Composer 的
composer global require laravel/valet
命令安装 Valet。并确保~/.composer/vendor/bin
目录在系统的 "PATH" 中。 - 运行
valet install
命令来配置和安装 Valet 和 DnsMasq,并注册 Valet 后台服务,随系统运行自行启动。
brew update
将 Homebrew 安装或更新到最新版本。安装完 Valet 后,可以尝试使用类似
ping foobar.test
的命令在终端上 ping 任何一个*.test
的域名。如果 Valet 安装正确,可以在终端上看到来自127.0.0.1
的响应。每次机器启动时,Valet 会自动启动其进程。所以只要完成了 Valet 的初始化,就无需再次运行
valet start
或valet install
。使用其它域名
默认情况下,Valet 使用
.test
顶级域名为你的项目提供服务。如果你想使用其它域名,可以使用valet domain tld-name
命令。例如,如果你想使用
.app
来代替.test
,运行valet domain app
,Valet 会自动将站点顶级域名改为*.app
。数据库
如果你要使用数据库,请在终端运行
brew install mysql@5.7
安装 MySQL。一旦安装完成,你可以使用brew services start mysql
命令启动 MySQL。然后,你可以使用root
用户名和空字符串密码连接到127.0.0.1
的数据库。PHP 版本
Valet 允许你使用
valet use php@version
命令来切换 PHP 版本。如果指定版本尚未安装,Valet 将通过 Brew 来安装指定的 PHP 版本:valet use php@7.2valet use php
升级
你可以在终端使用
Pasang Komposer.composer global update
Gunakan arahanbrew install php
Homebrew untuk memasang PHP 7.3.Gunakan perintahJalankan perintahglobal komposer Komposer memerlukan laravel/valet
untuk memasang Valet. Dan pastikan direktori~/.composer/vendor/bin
berada dalam "PATH" sistem anda.valet install
untuk mengkonfigurasi dan memasang Valet dan DnsMasq, dan daftarkan perkhidmatan latar belakang Valet untuk bermula secara automatik apabila sistem sedang berjalan. 🎜🎜Selepas memasang Valet, anda boleh cuba menggunakan perintah yang serupa denganping foobar.test
untuk ping mana-mana nama domain*.test
pada terminal itu. Jika Valet dipasang dengan betul, anda boleh melihat respons daripada127.0.0.1
pada terminal. 🎜🎜Valet akan memulakan prosesnya secara automatik setiap kali mesin dihidupkan. Jadi setelah Valet dimulakan, tidak perlu menjalankanvalet start
atauvalet install
sekali lagi. 🎜🎜Gunakan nama domain lain
🎜Secara lalai, Valet menggunakan nama domain peringkat atas.test
untuk projek anda Serve. Jika anda ingin menggunakan nama domain lain, anda boleh menggunakan perintahvalet domain tld-name
. 🎜🎜Sebagai contoh, jika anda ingin menggunakan.app
dan bukannya.test
, jalankanapl domain valet
dan Valet akan menukar tapak itu secara automatik nama domain peringkat atas kepada*.app
. 🎜🎜Pangkalan Data
🎜Jika anda ingin menggunakan pangkalan data, sila jalankanbrew install mysql@5.7
dalam terminal untuk memasang MySQL. Setelah pemasangan selesai, anda boleh memulakan MySQL menggunakan perintahbrew services start mysql
. Anda kemudiannya boleh menyambung ke pangkalan data di127.0.0.1
menggunakan nama penggunaroot
dan kata laluan rentetan kosong. 🎜🎜Versi PHP
🎜Valet membenarkan anda menukar versi PHP menggunakan perintahvalet use php@version
. Jika versi yang ditentukan belum dipasang lagi, Valet akan memasang versi PHP yang ditentukan melalui Brew: 🎜valet stop valet uninstall
🎜🎜🎜< h3>Naik taraf🎜Anda boleh menggunakan perintahkemas kini global komposer
dalam terminal untuk mengemas kini Valet. Selepas naik taraf, jika perlu, sebaiknya jalankan pemasangan valet sekali lagi supaya Valet boleh menaik taraf fail konfigurasi. 🎜🎜🎜Tingkatkan kepada Valet 2.0
Valet 2.0 memindahkan pelayan web asas Valet daripada Caddy ke Nginx. Sebelum menaik taraf kepada versi ini, anda harus menghentikan dan menyahpasang proses Caddy sedia ada dengan menjalankan arahan berikut:
composer global require laravel/valet
Seterusnya, naik taraf Valet bergantung pada cara anda memasangnya (biasanya melalui Git atau Composer). Jika anda memasang Valet melalui Komposer, anda harus menggunakan arahan berikut untuk mengemas kini kepada versi utama terkini:
valet install valet restart
Jika anda mengemas kini kod sumber Valet, anda harus melaksanakan arahan pemasangan:
valet secure laravel
Selepas menaik taraf, anda mungkin perlu tetapkan semula atau paut semula tapak anda.
Tapak Perkhidmatan
Selepas memasang Valet, anda boleh mula menyediakan tapak anda. Valet menyediakan dua arahan untuk menyediakan tapak Laravel:
park
danlink
.park
和link
。- 运行
mkdir ~/Sites
命令在 Mac 上创建一个新的目录。接下来,运行cd ~/Sites
和valet park
将当前的工作目录作为 Valet 搜索站点的路径。 - 接下来,在这个目录中创建一个新的 Laravel 站点:
laravel new blog
。 - 在浏览器中打开
http://blog.test
。
就这么多。 现在,你在 『parked』的目录中创建的任何 Laravel 项目都将自动使用
http://folder-name.test
这种方式访问。如果要在目录中提供单个站点而不是整个目录,就使用 link 命令。
- 要使用该命令,先在终端里切换到你的某个项目并运行
valet link app-name
。Valet 会在~/.valet/Sites
中创建一个符号链接指向当前的目录。 - 运行
link
命令后,你可以在浏览器通过http://app-name.test
park
perintah- < li>Jalankan perintah
- Seterusnya, buat tapak Laravel baharu dalam direktori ini:
laravel blog baharu
. 🎜 - Buka
http://blog.test
dalam penyemak imbas anda. 🎜🎜🎜🎜Itu sahaja. Kini, sebarang projek Laravel yang anda buat dalam direktori "parked" akan diakses secara automatik menggunakanhttp://folder-name.test
. 🎜🎜🎜pautan
arahan🎜🎜Jika anda ingin menyampaikan satu tapak dalam direktori dan bukannya keseluruhan direktori, Hanya gunakan arahan pautan. 🎜- Untuk menggunakan arahan ini, mula-mula tukar kepada salah satu projek anda dalam terminal dan jalankan
nama aplikasi pautan valet
. Valet akan membuat pautan simbolik dalam~/.valet/Sites
yang menunjuk ke direktori semasa. 🎜 - Selepas menjalankan perintah
link
, anda boleh mengakses tapak melaluihttp://app-name.test
dalam penyemak imbas. 🎜🎜🎜Jalankan perintah
valet links
untuk melihat senarai semua pautan direktori. Anda juga boleh menggunakanvalet unlink app-name
untuk mengalih keluar pautan simbolik.valet links
命令可以查看所有目录链接的列表。你还可以使用valet unlink app-name
来删除符号链接。{tip} 你可以使用
valet link
将多个(子)域名指向同一个应用。要添加子域名或其它域名到应用,可以在应用目录下运行valet link subdomain.app-name
。默认情况下,Valet 服务站点通过纯 HTTP 的方式。但是,如果你想一个站点使用 HTTP/2 通过加密 TLS 提供服务,使用
secure
命令。例如,如果你的站点通过 Valet 在laravel.test
域上提供服务,你应当运行如下的命令去保护它:valet unsecure laravel
要一个站点『解除保护』并恢复为通过纯 HTTP 提供服务它的流量,使用
unsecure
命令。与secure
命令一样,该命令接受你希望去解除保护的主机名称:/** * 确定驱动程序是否满足请求。 * * @param string $sitePath * @param string $siteName * @param string $uri * @return bool */ public function serves($sitePath, $siteName, $uri){ return is_dir($sitePath.'/wp-admin'); }
共享站点
Valet 甚至包括与世界共享你的本地站点的命令。一旦安装 Valet 后无需安装其它软件。
要共享站点,在终端中导航你的站点目录并运行
valet share
命令。一个公开可访问的 URL 将被插入到剪贴板中,并可以直接粘贴到你的浏览器中。仅此而已。要停止共享你的站点,请按
Control + C
{tip} Anda boleh menggunakan
pautan valet
untuk menghalakan berbilang (sub)domain ke aplikasi yang sama. Untuk menambah subdomain atau nama domain lain pada aplikasi anda, jalankanpautan valet subdomain.app-name
dalam direktori aplikasi.
Tapak selamat menggunakan TLSSecara lalai, Valet menyediakan tapak melalui HTTP biasa. Walau bagaimanapun, jika anda mahu tapak disiarkan melalui TLS yang disulitkan menggunakan HTTP/2, gunakan perintahsecure
. Sebagai contoh, jika tapak anda disiarkan pada domainlaravel.test
melalui Valet, anda harus menjalankan perintah berikut untuk melindunginya:/** * 确定即将到来的请求是否针对静态文件。 * * @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; }
🎜 Untuk "menyahlindung" tapak dan kembali kepadanya melalui HTTP biasa Untuk menyampaikan trafiknya, gunakan perintahunsecure
. Seperti perintahsecure
, arahan ini menerima nama hos yang ingin anda nyahlindungi: 🎜/** * 获取对应用程序的前端控制器的完全解析路径。 * * @param string $sitePath * @param string $siteName * @param string $uri * @return string */ public function frontControllerPath($sitePath, $siteName, $uri){ return $sitePath.'/public/index.php'; }
🎜🎜🎜🎜Kongsi Tapak
🎜Valet malah menyertakan arahan untuk berkongsi tapak setempat anda dengan dunia. Tidak perlu memasang perisian tambahan setelah Valet dipasang. 🎜🎜Untuk berkongsi tapak, navigasi ke direktori tapak anda dalam Terminal dan jalankan perintahvalet share
. URL yang boleh diakses secara umum akan dimasukkan ke dalam papan keratan anda dan boleh ditampal terus ke dalam penyemak imbas anda. Itu sahaja. 🎜🎜Untuk berhenti berkongsi tapak anda, tekanControl + C
untuk membatalkan proses. 🎜🎜🎜🎜🎜🎜🎜Pemandu Valet tersuai
Anda boleh menulis "pemandu" Valet anda sendiri untuk menyediakan perkhidmatan bagi aplikasi PHP yang dijalankan pada rangka kerja atau CMS lain yang pada asalnya tidak disokong oleh Valet. Apabila anda memasang Valet, direktori
~/.config/valet/Drivers
dicipta yang mengandungi failSampleValetDriver.php
. Fail ini mengandungi contoh pelaksanaan pemacu yang menunjukkan cara menulis pemacu tersuai. Menulis pemacu hanya memerlukan anda melaksanakan tiga kaedah:serves
,isStaticFile
danfrontControllerPath
.SampleValetDriver.php
文件的~/.config/valet/Drivers
目录。该文件包含一个示例驱动程序实现,演示了如何编写一个自定义的驱动程序。编写驱动程序仅需要你去实现三个方法:serves
,isStaticFile
和frontControllerPath
。这三个方法都接受
$sitePath
,$siteName
和$uri
值作为参数。$sitePath
是你的机器上提供站点的完全限定路径。比如/Users/Lisa/Sites/my-project
。$siteName
是域(my-project
)的『主机』/『站点名称』部分。$uri
是即将到来的请求 URL(/foo/bar)。一旦你完成你的自定义 Valet 驱动,使用
FrameworkValetDriver.php
命名约定将它放置在~/.config/valet/Drivers
目录中。例如,如果你为 WordPress 编写了一个自定义的 valet 驱动,你的文件名称应该是WordPressValetDriver.php
。我们来看看自定义的 Valet 驱动程序应该实现的每种方法的示例实现。
serves
方法如果你的驱动程序应当处理即将到来的请求时,
serves
方法应该返回true
。否则,此方法应当返回false
。因此,在此方法中,你应该你企图确定给定的$sitePath
是否包含你尝试提供的类型的项目。例如,让我们假装正在编写一个
WordPressValetDriver
。我们的serves
方法可能看起来如下所示:class LocalValetDriver extends LaravelValetDriver{ /** * 确定驱动程序是否满足请求。 * * @param string $sitePath * @param string $siteName * @param string $uri * @return bool */ public function serves($sitePath, $siteName, $uri){ return true; } /** * 获取对应用程序的前端控制器的完全解析路径。 * * @param string $sitePath * @param string $siteName * @param string $uri * @return string */ public function frontControllerPath($sitePath, $siteName, $uri){ return $sitePath.'/public_html/index.php'; } }
isStaticFile
方法
rrreeeisStaticFile
应当确定即将到来的请求是否针对一个『静态』文件,比如:图片和样式表。如果文件是静态的,此方法应当返回静态文件在磁盘上的完全限定路径。如果即将到来的请求不是针对一个静态文件,这个方法应当返回false
:{note} 如果
serves
方法对即将到来的请求且请求 URI 不是/
返回true
时,才会调用isStaticFile
方法。frontControllerPath
方法
Ketiga-tiga kaedah menerima nilaifrontControllerPath
$sitePath
,$siteName
dan$uri
sebagai parameter.$sitePath
ialah laluan yang layak sepenuhnya ke tapak pada mesin anda. Contohnya/Users/Lisa/Sites/my-project
.$siteName
ialah bahagian 'host'/'sitename' domain (my-project
).$uri
ialah URL permintaan masuk (/foo/bar). Mari kita lihat contoh pelaksanaan setiap kaedah yang perlu dilaksanakan oleh pemandu Valet tersuai.
🎜Jika pemandu anda perlu mengendalikan permintaan masuk,kaedah
The serves
kaedah harus mengembalikantrue
. Jika tidak, kaedah ini harus mengembalikanfalse
. Oleh itu, dalam kaedah ini, anda harus cuba menentukan sama ada$sitePath
yang diberikan mengandungi item jenis yang anda cuba sediakan. 🎜🎜Sebagai contoh, mari kita berpura-pura sedang menulisWordPressValetDriver
. Kaedahserves
kami mungkin kelihatan seperti ini: 🎜rrreee🎜isStaticFile
kaedah h4 >🎜isStaticFile
harus menentukan sama ada permintaan akan datang adalah untuk fail "statik", seperti imej dan helaian gaya. Jika fail statik, kaedah ini harus mengembalikan laluan yang layak sepenuhnya kepada fail statik pada cakera. Jika permintaan masuk bukan untuk fail statik, kaedah ini harus mengembalikanfalse
: 🎜rrreee🎜{note} Jika kaedah
serves
adalah untuk permintaan masuk dan permintaan KaedahisStaticFile
akan dipanggil hanya apabila URI bukan/
dantrue
dikembalikan. 🎜🎜
🎜frontControllerPath
kaedahfrontControllerPath
kaedah harus mengembalikan anda Laluan yang layak sepenuhnya ke "pengawal hadapan" aplikasi anda, yang biasanya merupakan fail "index.php" anda atau yang setara: 🎜rrreee🎜🎜🎜🎜🎜🎜Pemandu Tempatan
Jika anda ingin menyesuaikan pemandu Valet untuk satu aplikasi, buat fail
rrreeeLocalValetDriver.php
dalam direktori akar aplikasi. Pemacu tersuai anda boleh melanjutkan kelas asasValetDriver
atau mewarisi pemacu khusus aplikasi sedia ada, seperti:LaravelValetDriver
:LocalValetDriver.php
文件。你的自定义驱动程序可以扩展ValetDriver
基类或者继承一个现有的应用程序的特定驱动程序,比如:LaravelValetDriver
:rrreee其它 Valet 命令
- Untuk menggunakan arahan ini, mula-mula tukar kepada salah satu projek anda dalam terminal dan jalankan
mkdir ~/Sites
untuk mencipta direktori baharu pada Mac anda. Seterusnya, jalankancd ~/Sites
danvalet park
untuk menggunakan direktori kerja semasa sebagai laluan untuk Valet mencari tapak. 🎜