neodork / 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
- squizlabs/php_codesniffer: *
- 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
- dev-2.x-3
- dev-bugfix/#558_python_symlink_fail
- dev-2.x-2
- dev-bugfix/#543_nginx_testcases_new
- dev-bugfix/#538_ci_cd_not_failing_on_switch
- dev-bugfix/#543_nginx_testcases
- dev-bugfix/#536_valet_fix_forces_reinstall
- dev-bugfix/#534_deprecate_old_phpfpm_fixes
- dev-bugfix/#527_symfony_polyfill-php80_lock
- dev-bugfix/#527_symfony_polyfill-php80
- dev-bugfix/#529_composer_lock
- dev-bugfix/#527_symfony_polyfill-php80_is_required_by_mnapoli_silly
- dev-hotfix/php-switching
- dev-hotfix/fix-xdebug-install
- dev-hotfix/pr-template
- dev-hotfix/mysql-not-linking
- dev-feature/ci_cd_mariadb
- dev-hotfix/mysql_wont_work_2
- dev-feature/contributor-guidelines
- dev-hotfix/memcached_install_fixes
- dev-hotfix/apcu_bc_installed_twice
- dev-feature/phpcs_psr2
- dev-feature/phpcs
- dev-feature/azure-pipelines
- dev-release/azure-pipelines
- dev-hotfix/memcached_fixes
- dev-hotfix/ioncube_php7.3
- dev-master-neodork
- dev-feature/travis-ci
This package is auto-updated.
Last update: 2024-09-09 01:33:07 UTC
README
介绍
Valet+ 是 macOS 的开发环境。无需 Vagrant,无需 Docker,无需 /etc/hosts
文件。
Valet 与 Valet+ 的比较
Valet+ 是 Laravel Valet 的第三方分支,Laravel Valet 的网址为 Laravel Valet。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 henkrehorst/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+。 - 将
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 任何
*.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 ~/sites
valet park
就是这样。现在,您在“已停靠”目录内创建的任何项目都将自动使用 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
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+ 对在 Mac 上流行的 MySQL 客户端 Sequel Pro 打开数据库提供一流支持。Sequel Pro。
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 use elasticsearch|es 6.8
框架特定的开发工具
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 提供网站,请使用 secure 命令。例如,如果您的网站通过 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 Framework
完整列表可以在此处找到:这里。
自定义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+驱动程序,请将其放置在~/.valet/Drivers
目录中,使用FrameworkValetDriver.php
命名约定。例如,如果您正在编写一个针对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)
Valent+ 作者
- Tim Neutkens (@timneutkens)
- Lou van der Laarse (@Neodork)
- Sam Granger (@samgranger)
联系我们
我们有一个可用的 Slack 工作空间 ,您可以加入。