dcnl1980 / 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
- 2.x-dev
- 1.x-dev
- 1.0.29
- 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
- dev-hotfix/elasticsearch
This package is auto-updated.
Last update: 2024-09-16 08:51:48 UTC
README
介绍
Valet+ 是一款 macOS 的开发环境。无需 Vagrant、无需 Docker、无需 /etc/hosts
文件。
Valet 与 Valet+ 3.0
此 Valet Plus 与最新的 Laravel 6.x|Laravel 7.x 安装版本兼容。
Valet+ 是 Laravel Valet 的第三方分支,旨在通过添加功能使 Valet 更加简单和快速。我们非常感谢 Laravel 团队为我们提供了构建 Valet+ 的基础。由于这是一个分支,我们将定期从原始 Valet 拉取更改,以便在发布时应用。
本 README 中的一些文档摘自 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 henkrehorst/php
为 Valet+ 添加 Homebrew PHP tap。 - 使用 Homebrew 通过
brew install valet-php@7.4
安装 PHP 7.4。 - 使用 Homebrew 通过
brew install composer
安装 Composer。 - 使用 Composer 通过
composer global require dcnl1980/valet-plus:dev-master
安装 Valet+。 - 将
export PATH="$PATH:$HOME/.composer/vendor/bin"
添加到.bash_profile
(对于 bash)或.zshrc
(对于 zsh)中,具体取决于您的 shell(echo $SHELL
) - 运行
valet fix
命令。这将检查防止 Valet+ 安装的常见问题。 - 运行
valet install
命令。可选地添加--with-mariadb
以使用 MariaDB 而不是 MySQL。这将配置和安装 Valet+ 和 DnsMasq,并将 Valet 的守护进程注册为在系统启动时启动。 - 安装 Valet+ 后,尝试在终端使用类似
ping -c1 foobar.test
的命令ping任何*.test
域名。如果 Valet+ 安装正确,你应该会在127.0.0.1
上看到这个域名响应。如果不正确,你可能需要重启系统。特别是从 Dinghy(docker)解决方案迁移过来时。
ℹ️ Valet+ 会在每次机器启动时自动启动其守护进程。一旦完成初始 Valet+ 安装,就无需再运行
valet start
或valet install
。
ℹ️ 要更新 Valet+ 到最新版本,请在终端使用
composer global require dcnl1980/valet-plus:dev-master
命令。升级后,运行valet install
命令是一个好习惯,这样 Valet+ 可以根据需要对你的配置文件进行额外的升级。
托管站点
安装 Valet+ 后,你就可以开始托管网站了。Valet+ 提供了一个命令来帮助你托管网站:valet park
。这将注册当前工作目录作为项目根目录。通常这个目录是 ~/sites
。
- 创建一个
sites
目录:mkdir ~/sites
cd ~/sites
valet park
这就是全部内容。现在,你可以在 "parked" 目录中创建任何项目,它将自动使用 http://folder-name.test 规范托管。
例如
mkdir ~/sites/example
cd ~/sites/example
echo "<?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
valet use 7.3
valet use 7.4
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 中打开数据库,这是一个流行的 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
自动配置[beta]
自动配置您所在项目的环境。
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 上且不被 Valet 本地支持的 PHP 应用程序。当您安装 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
且请求 URI 不是/
时,才会调用isStaticFile
方法。
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)
Valet+ 作者
- Tim Neutkens (@timneutkens)
- Lou van der Laarse (@Neodork)
- Sam Granger (@samgranger)
联系我们
我们有一个可用的Slack工作空间,您可以加入。