calvinfa / valet-plus
飞速的 macOS PHP 开发环境
Requires
- php: >=5.6
- illuminate/container: ~5.1
- mnapoli/silly: ~1.5.0
- nategood/httpful: ~0.2
- sebastian/version: ^2.0
- symfony/process: ~2.7|~3.0
- tightenco/collect: ~5.4.0
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.7
Replaces
- dev-master
- 1.0.29.5
- 1.0.29.4
- 1.0.29.3
- 1.0.29.2
- 1.0.29.1
- 1.0.29
- 1.0.28.1
- 1.0.28
- 1.0.27
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.5.8
- 0.5.7
- 0.5.6
- 0.5.5
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.9
- 0.3.8
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
This package is auto-updated.
Last update: 2024-09-29 05:48:38 UTC
README
简介
Valet+ 是一款 macOS 开发环境。无需 Vagrant,无需 Docker,无需 /etc/hosts 文件。
Valet 与 Valet+
Valet+ 是 Laravel Valet 的第三方分支,地址为 Laravel Valet。Valet+ 通过添加功能,旨在使事物更加简单和快速。我们非常感谢 Laravel 团队为我们提供了构建 Valet+ 的基础。由于这是一个分支,我们将在发布时定期从原始 Valet 拉取更改。
本说明书中的一些文档来自 Valet 网站,为方便阅读,在此提供。原始文档可在此处找到:https://laravel.net.cn/docs/valet。
由于 Valet+ 旨在取代 Valet,它仍然使用相同的 valet 命令行名称。其界面的任何更改均在以下文档中记录。
为什么选择 Valet/Valet+?
Valet+ 配置您的 Mac 在启动时始终在后台运行 Nginx。然后,使用 DnsMasq,Valet+ 将所有指向 *.test 域的请求代理到您本地机器上安装的网站。
换句话说,这是一个飞速的开发环境。Valet+ 提供了灵活的基本功能或极端速度的绝佳替代方案。
与 Valet 的不同之处
以下是与原始 Valet 的几个关键区别
- PHP 版本切换
- Xdebug(开启/关闭模式)
- PHP 扩展(mcrypt,intl,opcache)
- 使用 opcache 优化 PHP 配置
- MySQL(优化配置)
- Redis
- Elasticsearch(可选)
- 更多功能在以下部分中详细说明...
目录
安装
⚠️ Valet+ 需要 macOS 和 Homebrew。在安装之前,您应该确保没有其他程序(如 Apache 或 Nginx)绑定到您本地机器的端口 80。
- 使用
brew update更新 Homebrew 到最新版本。 - 通过
brew tap calvinfa/php添加 Homebrew PHP tap 以用于 Valet+。 - 使用 Homebrew 通过
brew install valet-php@7.2安装 PHP 7.2。 - 使用 Homebrew 通过
brew install composer安装 Composer。 - 通过 Composer 使用
composer global require weprovide/valet-plus安装 Valet+。 - 根据您的 shell(
echo $SHELL)将export PATH="$PATH:$HOME/.composer/vendor/bin"添加到.bash_profile(对于 bash)或.zshrc(对于 zsh) - 运行
valet fix命令。这将检查阻止 Valet+ 安装的常见问题。 - 运行
valet install命令。可选地添加--with-mariadb以使用 MariaDB 而不是 MySQL。这将配置和安装 Valet+ 和 DnsMasq,并将 Valet 的守护程序注册为在系统启动时启动。 - 安装 Valet+ 后,请尝试在终端使用如下命令 ping 任意
*.test域名:ping -c1 foobar.test。如果 Valet+ 安装正确,你应该在127.0.0.1上看到此域名响应。如果没有,你可能需要重启系统。特别是从 Dinghy(docker)解决方案转换过来时。
ℹ️ Valet+ 会在每次机器启动时自动启动其守护进程。一旦完成初始 Valet+ 安装,就无需再运行
valet start或valet install。
ℹ️ 要更新 Valet+ 到最新版本,请在终端使用
composer global require weprovide/valet-plus命令。升级后,运行valet install命令是一个好习惯,这样 Valet+ 就可以在必要时对配置文件进行额外的升级。
托管网站
安装 Valet+ 后,你就可以开始托管网站了。Valet+ 提供了一个命令来帮助你托管网站:valet park。这将把当前工作目录注册为项目根目录。通常这个目录是 ~/sites。
- 创建一个
sites目录:mkdir ~/sites cd ~/sitesvalet park
这就完成了。现在,你可以在 "parked" 目录中创建任何项目,它将自动使用 http://folder-name.test 规范进行托管。
例如
mkdir ~/sites/examplecd ~/sites/exampleecho "<?php echo 'Valet+ at your service';" > index.php- 访问
http://example.test,你应该看到Valet+ at your service
切换 PHP 版本
使用以下四个命令之一切换 PHP 版本
valet use 5.6
valet use 7.0
valet use 7.1
valet use 7.2
Xdebug
Xdebug 支持是内置的。启用后,它将在 9000 端口上工作。
可以使用 [--remote_autostart=] 选项,输入:valet xdebug --remote_autostart=0 或更改这两个设置:valet xdebug on --remote_autostart=1
启用 Xdebug
valet xdebug on [--remote_autostart=]
禁用 Xdebug
valet xdebug off [--remote_autostart=]
启用/禁用 xdebug.remote_autostart
valet xdebug --remote_autostart=[true/false]
⚠️ Xdebug 会使你的环境变慢。这就是为什么我们允许完全启用/禁用它。当不是调试时,最好通过运行
valet xdebug off来禁用它。
PhpStorm
要在 PhpStorm 中使用 Xdebug,无需进行任何配置。只需运行 valet xdebug on 并点击右上角的 Xdebug 按钮
然后为 Chrome 安装 Xdebug helper 并在查看要使用 Xdebug 的页面时启用它。
Ioncube
启用 Ioncube
valet ioncube on
禁用 Ioncube
valet ioncube off
数据库
Valet+ 自动安装 MySQL 5.7,并包含 5.6 兼容模式。它包括一个经过调整的 my.cnf,旨在提高速度。
用户名:root
密码:root
更改密码
valet db pwd <old> <new>
列出数据库
valet db ls
创建数据库
使用以下命令创建数据库:
valet db create <name>
如果没有提供名称,它会尝试找到最近的 git 仓库目录名称。如果找不到,它将使用当前工作目录名称。
valet db create
删除数据库
使用以下命令删除数据库:
valet db drop <name>
如果没有提供名称,它会尝试找到最近的 git 仓库目录名称。如果找不到,它将使用当前工作目录名称。
valet db drop
重置数据库
使用以下命令删除并创建数据库:
valet db reset <name>
如果没有提供名称,它会尝试找到最近的 git 仓库目录名称。如果找不到,它将使用当前工作目录名称。
valet db reset
导出数据库
导出数据库
valet db export <filename> <database>
如果没有提供数据库名称,它会尝试找到最近的 git 仓库目录名称。如果找不到,它将使用当前工作目录名称。
如果没有提供文件名,它将使用 <database>-<date>.sql.gz。你可以使用 valet db export - <database> 自动为自定义数据库生成文件名。
所有数据库导出都进行了压缩。
导入数据库
带有进度条的导入数据库
valet db import <filename>.sql(.gz) <name>
如果没有提供名称,它会尝试找到最近的 git 仓库目录名称。如果找不到,它将使用当前工作目录名称。
你可以直接导入 .sql 以及压缩的 .sql.gz 数据库导出。
在 Sequel Pro 中打开数据库
Valet+ 对在 Sequel Pro 中打开数据库提供了第一级支持,Sequel Pro 是一个流行的 Mac MySQL 客户端。
valet db open <name>
如果没有指定名称,它会尝试找到最近的git仓库目录名称。如果找不到,它将打开Sequel Pro而不预选数据库。
valet db open
日志记录
为了轻松阅读php、php-fpm、nginx、mysql、mailhog或redis的日志文件,可以使用以下命令。
valet logs <logname>
子域名
您可以使用以下方式管理当前工作目录的子域名
valet subdomain list
valet subdomain add <subdomain>
例如
valet subdomain add welcome
将创建 welcome.yourproject.test。
域名别名/符号链接
显示当前文件夹基于的已注册符号链接。
valet links
添加新别名
valet link <domain>
例如
valet link yourproject2
将创建到当前文件夹的符号链接 yourproject2.test。
删除别名
valet unlink <domain>
例如
valet unlink yourproject2
Mailhog
Mailhog用于捕获PHP发送的邮件。您可以通过http://mailhog.test访问面板。
启用Mailhog
valet mailhog on
禁用Mailhog
valet mailhog off
Redis
Redis自动安装并监听默认端口6379。Redis套接字位于/tmp/redis.sock
启用Redis
valet redis on
禁用Redis
valet redis off
Elasticsearch
可以使用以下方式安装Elasticsearch 2.4。
valet elasticsearch install
要卸载
brew uninstall elasticsearch@2.4
在撰写本文时,最新版本的Elasticsearch – 5.6 – 可以使用以下方式安装。
brew install elasticsearch
它将在默认端口9200上运行,并通过http://elasticsearch.test/访问。
Elasticsearch 2.4是默认安装的,因为Magento 2.1不支持Elasticsearch 5。
切换Elasticsearch版本
使用以下命令之一切换Elasticsearch版本
valet use elasticsearch|es 2.4
valet use elasticsearch|es 5.6
框架特定的开发工具
Valet+将自动为您安装框架特定的开发工具
- wp-cli作为
wp可用 - n98-magerun作为
magerun可用 - n98-magerun2作为
magerun2为您。
Git Tower
在Tower中打开当前git项目
valet tower
PhpStorm
在PhpStorm中打开当前git项目
valet phpstorm
SourceTree
在SourceTree中打开当前git项目
valet sourcetree
VScode
在Visual Studio Code中打开当前git项目
valet vscode
在浏览器中打开项目
在您的默认浏览器中打开当前项目
valet open
复制ssh密钥
valet ssh-key
自动配置[测试版]
自动为您所在的项目配置环境。
valet configure
支持的系统
Magento 2
自动为Magento 2配置数据库中的env.php、config.php基本URL、SEO URL重写和Elasticsearch配置。
Magento 1
自动为Magento 1配置数据库中的local.xml和基本URL。
使用 TLS 保护网站
默认情况下,Valet通过普通HTTP提供服务。但是,如果您想通过加密的TLS使用HTTP/2提供服务,请使用安全命令。例如,如果您的网站通过Valet在example.test域下提供服务,您应运行以下命令来保护它
valet secure example
要“取消保护”网站并重新回到通过普通HTTP提供服务,请使用unsecure命令。与secure命令一样,此命令接受您想要取消保护的域名
valet unsecure example
日志位置
nginx-error.log、php.log和mysql.log位于~/.valet/Log。
其他日志位于/usr/local/var/log
PHP.ini位置
PHP.ini的位置是/usr/local/etc/valet-php/VERSION/php.ini。
Valet 驱动程序
Valent 使用驱动来处理请求。您可以在此处了解更多关于那些驱动的信息:这里。
当使用 Valet 时,驱动会自动使用 APCu 进行缓存以避免每次请求时都进行驱动查找。您可以通过运行 valet which 来重置特定站点的缓存。由于与 PHP-FPM 的兼容性问题,APCu 临时关闭,请参阅 weprovide#49。
默认情况下,以下都是已包含的
- CakePHP 3
- Craft
- Drupal
- Jigsaw
- Laravel
- Lumen
- Magento
- Magento 2
- Neos
- Pimcore 5
- Shopware 5
- Slim
- Statamic
- 静态 HTML
- Symfony
- Typo3
- WordPress / Bedrock
- Zend 框架
完整的列表可以在此处找到:这里。
自定义 Valet 驱动
您可以编写自己的 Valet "驱动",以服务于在另一个框架或 CMS 上运行的 PHP 应用程序,这些框架或 CMS 不是由 Valet 本地支持的。当您安装 Valet+ 时,会创建一个 ~/.valet/Drivers 目录,其中包含一个 SampleValetDriver.php 文件。此文件包含一个示例驱动实现,以演示如何编写自定义驱动。编写驱动只需您实现三个方法:serves、isStaticFile 和 frontControllerPath。
这三个方法都将 $sitePath、$siteName 和 $uri 作为它们的参数。其中,$sitePath 是您机器上正在提供服务的网站的完全限定路径,例如 /Users/Lisa/Sites/my-project。其中,$siteName 是域名中的 "主机" 或 "站点名称" 部分(《my-project》)。其中,$uri 是传入请求的 URI(《/foo/bar》)。
一旦您完成了您自定义的 Valet+ 驱动,请使用 FrameworkValetDriver.php 命名约定将其放在 ~/.valet/Drivers 目录中。例如,如果您正在编写自定义的 WordPress Valet 驱动,则您的文件名应为 WordPressValetDriver.php。
让我们看一下您的自定义 Valet+ 驱动应实现的每个方法的示例实现。
serves 方法
serves 方法应返回 true,如果您的驱动应处理传入的请求。否则,该方法应返回 false。因此,在此方法中,您应尝试确定给定的 $sitePath 是否包含您尝试提供服务的项目类型。
例如,假设我们正在编写一个 WordPressValetDriver。我们的 serve 方法可能看起来像这样
/**
* 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 应确定传入的请求是否为 "静态" 文件,例如图像或样式表。如果是静态文件,则方法应返回磁盘上静态文件的完全限定路径。如果传入的请求不是静态文件,则方法应返回 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} 只有当
serves方法返回true时,才会调用isStaticFile方法,并且请求 URI 不是/。
frontControllerPath 方法
frontControllerPath 方法应返回应用程序的 "前端控制器" 的完全限定路径,这通常是您的 "index.php" 文件或等效文件
/**
* 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';
}
本地驱动
如果您想为单个应用程序定义自定义的 Valet 驱动,请在应用程序的根目录中创建一个 LocalValetDriver.php。您的自定义驱动可以扩展基本 ValetDriver 类,或者扩展现有的特定于应用程序的驱动,如 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';
}
}
Valet 文档
有关 Valet 的文档可在 Laravel 网站 上找到。
致谢
本项目是 laravel/valet 的分支。感谢所有贡献者,尤其是原作者
- Taylor Otwell (@taylorotwell)
- Adam Wathan (@adamwathan)
Valent+ 作者
- Tim Neutkens (@timneutkens)
- Lou van der Laarse (@Neodork)
- Sam Granger (@samgranger)
联系方式
我们有一个可用的 Slack 工作空间 您可以通过它加入。

