如何用 Valet 轻松搭建 Laravel/PHP 测试环境
Laravel 是当下最流行的 PHP 开发框架之一,当我们在迁移开发环境或者邀请新人加入开发的时候测试环境的设置是必不可少的。除了耗时耗力的手工安装配置各个依赖项(Web 服务器、PHP、MySQL 等),一些打包好的安装环境,比如 Laradock 也十分受欢迎。Laradock 固然强大,但是对于我们已经有 project 的情况来说,Laradock 的配置反而比较麻烦,我个人研究了一下午愣是没弄出来。有时候我们也不需要 Laradock 提供的各个功能,比如 Redis、Beanstalkd 等,只需要一个简单的 Web + PHP +数据库的组合用来开发或者debug。这个时候 Valet 就是你的最佳之选了。
Valet 使用 dnsmasq(Linux/macOS)或者 Acrylic DNS(Windows),将 *.test
域名定向到 Valet 自动为你配置好的 nginx 实例中,从而实现本地的快速部署。Valet 原生支持多个 PHP 框架,包括 Laravel、WordPress、Jigsaw、Symphony、静态 HTML 页面等等。
本篇教程适合 Linux 和 Windows 环境。macOS 用户可以参照官方说明文档。下文默认使用 MySQL 数据库。
1 准备工作
从 Git/U盘/NAS 等地方下载你想要开发的网站。下文假设我们把网站复制到
C:\Users\Kazumi\Documents\mysite
文件夹下(Linux 用户请自行脑补 Linux 的文件夹)安装 PHP
从官网下载并解包最新的 PHP 执行档。在这里我下载的是
VC15 x64 Non Thread Safe
- Linux 可以直接用包管理软件安装 PHP
- 或者,你也可以使用 Valet 官方写好的 PowerShell 脚本自动安装 PHP 并设置 Path 变量,但是我没有测试过。(需要用管理员身份运行 PowerShell)
Set-ExecutionPolicy RemoteSigned; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri "https://github.com/cretueusebiu/valet-windows/raw/master/bin/php72.ps1" -OutFile $env:temp\php72.ps1; ."$env:temp\php72.ps1"
(仅限 Windows)设置环境变量。在系统 Path 里添加你解压 PHP 文件的地方,比如
C:\Program Files\php
修改
php.ini
,反注释以下行(以加载相关拓展):extension=curl extension=fileinfo extension=mbstring extension=mysqli extension=openssl extension=pdo_mysql
Windows: 这个文件在你解压的 `php` 文件夹下 Linux: 这个文件一般在 `/etc/php/` 文件夹下
- (仅限 Linux )重启 PHP 服务以应用这些更新
安装 MySQL
Windows: 从官网下载最新的 msi 安装包。安装过程非常简单,可以按照界面的指引一步一步来。注意如果没有特殊需求的话只选择 MySQL 服务器(Server Only)就够了。请注意,在配置 MySQL 的时候,务必选择 “Use Legacy Authentication Method”,如下图所示。Laravel 暂时不兼容 MySQL 8.0 的身份鉴定模式。你可以顺手创建 Laravel 用的用户,但可惜不能创建一个数据库…
Linux: 用你的包管理器安装 MySQL。你可以安装最新的8.0,也可以装5.6。如果你选择安装8.0的话,同样你要使用旧版的鉴定模式。具体方法请参照这里。
安装 Composer
(可选)安装 phpMyAdmin
- Windows:下载并解包最新的 pMA 文件。
- Linux:一般你的包管理器会提供 pMA,但有时候自带的版本可能已经很旧了,这个时候你也可以手动下载并解压备用
2 安装 Valet
Valet 本身的安装配置应该是相当简单的
- Windows:首先请确认没有其它程序(Apache、Nginx 等)正在占用 80 端口。用管理员身份执行以下命令
composer global require cretueusebiu/valet-windows
Linux:用正常权限(**不要**用 sudo 权限或者 root 帐户)执行以下命令
<pre class="EnlighterJSRAW" data-enlighter-language="shell">composer global require cpriego/valet-linux</pre>
- Windows:用管理员身份运行以下命令
Linux:用正常权限运行以下命令valet install
Valet 将会自行配置并创建 Valet 的进程。正常情况下 Valet 会随着系统的启动而启动,所以不需要手动运行 `valet start` 或者 `valet install` 之类的命令。
- (仅限 Windows 10)手动配置 DNS 服务器。在网卡的 IPv4 和 IPv6 设置里,分别填入
127.0.0.1
和::1
作为 DNS 服务器地址。修改后你还是能照常上网的。
3 配置 Valet
cd 到你网站的文件夹(Linux 请自行脑部对应的文件夹)
cd C:\Users\Kazumi\Documents\mysite
创建一个新 Valet 实例(软链接)
valet link mysite
当然,你可以把
mysite
改成任何你想要的东西,不一定要和文件夹名字一样。打开浏览器访问
mysite.test
。如果没有问题的话,你应该已经能看到你的网站了(或者报错,因为我们还没迁移数据库)默认情况下,valet 会创建
*.test
域名。如果你想要换个 TLD(比如*.app
),输入valet domain .app
,这样你的网站就可以通过mysite.app
访问了输入
valet links
查看所有的链接。如果你想移除链接的话,输入valet unlink mysite
除此之外, Valet 还支持修改端口号、加密网站、分享网站等操作。详情请看官方文档,这里不再赘述。
用同样的方法,我们可以
cd
到 phpMyAdmin 解压/安装的文件夹,然后输入比如valet link pma
。这样 phpMyAdmin 可以直接在浏览器里通过pma.test
访问了。
4 后续事项
这些应该都是 Laravel 通用的迁移步骤,在这里简单描述一下方便大家
- 运行
composer install
和npm install
(如果项目里有 Node.js 依赖项的话) - 修改
.env
,确保数据库的配置正确 - (仅限MySQL 8.0)修改 config\database.php,找到’connections’ => ‘mysql’ 矩阵。在 ‘engine’ => null, 下面加入以下内容
'modes' => [ 'ONLY_FULL_GROUP_BY', 'STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ENGINE_SUBSTITUTION',
],
修改后的文件长这样(新增部分高亮出来了)
[<img decoding="async" loading="lazy" class="wp-image-1388 size-full alignnone" src="https://kazumi.blog/wp-content/uploads/2018/11/MySQL-8.0-DB-Config-Edits.png" alt="" width="473" height="440" srcset="https://kazumi.blog/wp-content/uploads/2018/11/MySQL-8.0-DB-Config-Edits.png 473w, https://kazumi.blog/wp-content/uploads/2018/11/MySQL-8.0-DB-Config-Edits-300x279.png 300w" sizes="(max-width: 473px) 100vw, 473px" />][13]
php artisan key:generate
生成应用密钥php artisan migrate
导入数据库架构
教程到这里就结束了,你应该已经有一个开发环境准备好待你使用了。希望你也能像我一样享受 Valet 的便捷!
如果有任何建议或者疑问,欢迎在下面回复,我会定期来解答。谢谢大家!
Related Content
If you find this post helpful, please consider buying me a coffee :)