本地 Laravel 开发的现状
现在,在本地开发环境中使用 Laravel 有很多选择。以前只有寥寥几种选择,现在官方支持的选项已经超过六种。
在本文中,我将尝试对每一种技术进行简要概述,提供一些优缺点,并简要介绍开始使用每一种技术所需的基本知识。
想直接跳到某个特定部分吗?以下是我们即将讨论的方法列表:
好了,让我们直接进入正题吧!
在本地安装服务器堆栈
最可靠的方法是直接在本地开发硬件上安装完整的 LAMP 环境。在 Linux(以及在某种程度上在 macOS)系统上,这并不难。但对于未使用 WSL 的 Windows 用户来说,如果没有使用像 WAMP 这样的预编译软件,安装过程可能会比较复杂。
我喜欢这种方法的原因:
- 由于是直接在机器上运行,所以响应速度最快。
- 计算机启动后,所有程序都已准备就绪。
- 软件栈可以使用机器上的全部资源。
我不喜欢的地方:
- 升级操作系统可能会导致 Apache 或 MySQL 等服务出现问题。
- 同时运行多个网站可能很困难。
- 本地环境和生产环境之间的硬件差异可能会导致部署问题。
尽管存在一些不足,但这仍然是搭建本地 Laravel 开发环境的一种可靠方法。入门可能需要一些时间,但整个过程相当简单。您需要安装 Apache、MySQL 和 PHP,设置指向本地域名的虚拟主机规则,最后启用应用程序所需的 PHP 扩展。
我找到的针对每种操作系统的最佳教程如下:
- macOS:https://getgrav.org/blog/macos-bigsur-apache-multiple-php-versions
- Windows:https ://gist.github.com/sutlxwhx/cb1c124d560c5a2d21fe94ca25aed1e1
- Linux:https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04
完成安装和设置过程后,您只需确保您的 Laravel 应用程序位于您在 Web 服务器配置中设置的正确路径下,即可开始使用!
流浪者和家园
Homestead 是Laravel官方发布的 Vagrant box,旨在帮助您快速搭建本地容器化环境。如果您还不熟悉Vagrant ,它是一款可以帮助您配置和管理虚拟机的应用程序,能够复制应用程序所需的全部软件栈。
我喜欢这种方法的原因:
- 在本地硬件和软件与应用程序所需组件之间建立隔离。
- 只需几个命令即可轻松上手
- 可以分配一部分系统资源,确保应用程序不会过度占用资源。
我不喜欢的地方:
- 即使是小型虚拟机也会占用相当多的系统资源。
- 由于文件系统被虚拟化层隔离,响应时间可能会延迟。
- Vagrant 在大多数应用中已基本被 Docker 和其他现代容器化软件所取代。
尽管有些人可能认为 Vagrant 已经过时,被更现代的容器化软件所取代,但它仍然是一款经过实战检验的企业级解决方案,十多年来一直为生产应用程序提供支持和部署。
首先,您只需:
- 为您的操作系统安装 Vagrant
- 安装 VirtualBox作为 Vagrant 的操作系统提供程序
- 跑步
git clone https://github.com/laravel/homestead.git ~/Homestead - 创建Homestead.yaml配置文件
bash init.sh - 使用 Homestead配置并启动Vagrant box。
之后,您的 Laravel 应用程序应该可以通过浏览器访问localhost。此外,还有各种可选服务会随虚拟机启动并暴露给您的本地系统(例如MongoDB、Mailhog 和 Minio)。
匠心服务
就要求而言,该方法与本地服务器堆栈遵循类似的路径,只是基本上可以跳过安装 Web 服务器。
您需要在本地计算机上安装PHP 和 MySQL(或您选择的数据库)。其底层原理是使用 PHP 内置的Web 服务器来运行该命令,并将默认端口暴露:8000给您的本地计算机。
我喜欢这种方法的原因:
- 启动开发服务器再简单不过了。
- 无需安装或配置本地 Web 服务器(例如 Apache)。
- 非常节约资源
我不喜欢的地方:
- 大型请求的响应时间可能会很长。
- Web 服务器运行的是单线程进程,因此如果请求被阻塞,应用程序将会停止运行。
我认为,如果你只是运行一个本地开发应用程序实例,这种方法应该很适合你。再配合Ngrok或 Beyond Code 的Expose之类的工具来对开发端口进行域名掩码,那就万事俱备了。
要使用此方法,您只需打开终端并cd切换到 Laravel 应用的项目目录。然后运行以下命令:
php artisan serve
您也可以选择按如下方式指定端口:
php artisan serve --port=8808
你应该会收到本地 Laravel 开发服务器已启动的通知127.0.0.1:8000(除非你指定了其他端口)。在浏览器中打开它,就可以开始使用了!
帆
Sail 是 Laravel官方本地开发家族的最新成员,它是一个命令行界面,可以帮助您设置、配置和与默认的 Docker 开发环境进行交互。
您可以选择将 Sail 安装到现有应用程序旁边,也可以使用它来启动一个全新的 Laravel 应用程序。Sail 允许您运行 PHP、Composer、npm 和 artisan 命令,而无需在本地计算机上安装除 Docker 之外的任何其他软件。
我喜欢这种方法的原因:
- 除了 Docker 之外,无需安装任何其他依赖项。
- 多个应用程序可以同时运行
sail:publish使用artisan 命令轻松构建生产文件
我不喜欢的地方:
- 本地 Docker 实例的响应时间出了名的慢,尤其是在 MacOS 上(尽管这个问题正在努力解决)。
- 由于 Sail 的设计理念是简洁易用,因此对于新手来说,开箱即用的自定义功能可能略显困难。
也就是说,如果您一直想尝试 Docker,或者只是不想在本地系统上安装任何依赖项,那么它绝对是个绝佳的起点。使用它,您可以在几分钟内搭建并运行一个完整的 Web 服务器。
如果您想亲自尝试一下,操作非常简单。对于现有应用程序,只需运行:
composer require laravel/sail --dev
php artisan sail:install
./vendor/bin/sail up
如果您想使用 Sail 从头开始创建一个新的应用程序:
curl -s https://laravel.build/my-app | bash
cd my-app && ./vendor/bin/sail up
这两种方法都会使用Docker Compose启动一个 Docker 容器网络,并将你的应用程序暴露给 Docker localhost:80。
代客泊车
注意:此选项仅适用于 macOS 用户。
Laravel Valet是一个流畅、快速且资源占用低的开发环境,它结合了 Nginx 和 DnsMasq 来代理所有对.test域名的请求,并将它们指向您机器上预定路径上的站点。
虽然仍然需要一些依赖项,但远没有完整的 Web 服务器栈那么复杂。你需要Brew、PHP 和 Composer才能开始,还需要一个本地数据库(例如 MySQL 或 PostgreSQL)。Laravel 官方文档建议使用DBngin来进行设置。
我喜欢这种方法的原因:
- 速度极快,因为所有操作都像第一种方法一样在你的本地计算机上运行。
- Web 服务器占用的系统资源非常少,平均仅占用约 7MB 内存。
- 它提供了丰富的命令,可用于管理本地站点,甚至可以切换 PHP 版本。
我不喜欢的地方:
- 大量的 PHP 请求仍然会占用系统资源,导致机器运行缓慢。
- 不包含任何现成的数据库管理功能。
- 它会自动代理所有
.test域名,因此您无法在未使用 Valet 的应用程序上使用该域名。
Valet 或许正在逐渐被 Homestead 和 Sail 等更新的容器化方法所取代,但它仍然是开发中启动和管理 Laravel 应用程序的强大工具。
拉拉多克
Laradock被誉为“适用于 Docker 的完整 PHP 开发环境”,它是一套功能强大且特性丰富的配置文件,用于使用 Docker 进行本地 Laravel 开发。
该软件包已经存在几年了,因此已成为创建本地开发环境和协助 Laravel 应用程序生产部署的事实标准之一。
我喜欢这种方法的原因:
- 它几乎包含了你在 Laravel 应用程序中可能用到的所有服务,开箱即用。
- 已针对本地和生产环境进行配置,使您可以轻松地将应用程序部署到运行 Docker 的服务器上。
- 包含设置 xDebug 的分步文档。
我不喜欢的地方:
- 与 Sail 类似,响应时间可能会有所不同,而且与本文中提到的其他方法相比,响应时间往往较慢。
- 由于时间推移,它不断发展壮大,并且扩展到 Laravel 以外的领域,因此显得有些臃肿。
- 定制起来可能比较困难,尤其是对于 Docker 初学者而言。
Laradock 的文档非常详尽,毫不夸张地说。不过,其内容大致可以归纳为以下几点:
- 为您的操作系统安装 Docker
- 使用 git 克隆 Laradock 仓库
- 将文件复制
env-example到.env项目根目录 - 修改新
.env文件,添加您需要的服务。
完成以上步骤后,只需在项目根目录运行以下命令即可:
docker-compose up -d nginx mysql
正如文档中所述,启动容器时nginx,它依赖于php-fpm服务。无需在 up 命令中指定 php-fpm,因为它会自动启动。
接下来,你需要仔细研读文档,学习如何使用 Laravel 应用所依赖的各项服务。文档中分别介绍了如何使用 Redis 进行缓存、如何配置 Traefik以及如何运行 Artisan 命令。虽然可能需要一些时间才能完全按照你的要求进行配置,但一旦完成,你将拥有一个功能强大的环境,而且无需任何本地依赖。
自行搭建 Docker 环境
最后,也是我个人最喜欢的本地 Laravel 开发环境搭建方法,就是使用 Docker 搭建自己的环境!
以上所有工具都考虑到了通用应用程序的需求,并力求将其打包成简洁易用的软件包,方便用户使用和访问。如果您希望尽可能快速、轻松地搭建本地环境,它们都是绝佳的选择,绝对能节省您的时间。
然而,作为一名全栈开发人员,我负责从开发到部署的整个业余项目,我真的很想找个借口深入研究 Docker,并创建一个完全符合我需求的本地环境。
这就是我创建docker-compose-laravel 的原因,也是我所有 Laravel 项目开发环境的基础。
我喜欢这种方法的原因:
- 它使您能够准确了解本地 Docker 环境中正在使用哪些服务。
- 完全控制和自定义您的 Dockerfiles 和 docker-compose.yml 文件
- 可以轻松配置用于本地开发和生产环境
我不喜欢的地方:
- 使用新技术需要花费时间和精力去学习。
- 调试 Docker 容器问题往往令人沮丧。
- 如果在非 Linux 文件系统上使用卷,PHP 的响应时间可能会相当慢。
结合Docker 文档和 DigitalOcean 提供的指南等资源,我搭建了一个既符合我的需求,又能满足我的应用程序所需服务的环境。
今天就到这里!
以下是搭建本地 Laravel 开发环境最热门的七种方法。市面上有很多选择,希望本指南能帮助你找到最适合自己的方法!
如果您对此或任何其他网站开发主题有任何疑问,请随时在Twitter上联系我,或在下方评论区留言。
文章来源:https://dev.to/aschmelyun/the-current-state-of-local-laravel-development-4if2