我们三个月前发起了一项投票,询问大家在本地运行 WordPress 时使用了什么类型的 本地开发环境。在撰写本文时,我们获得了 2,623 票,因此这里具有一定的参考意义。特别是因为问题措辞为
如果您在本地运行 WordPress(即运行 PHP、MySQL 和 Web 服务器),您是如何操作的?
假设您正在使用本地环境。(请务必这样做。)
以下是结果图片

(如果您看不到,请不用担心,我们即将详细介绍结果。)
获胜者,以61%的比例,是使用某种带 UI 的软件来管理它。提到了 WAMP / MAMP / AMPPS,但也提到了“类似的带 UI 的软件”,我认为这与我们稍后将看到的相关。此选项的受欢迎程度是其他任何选项的 3 倍以上。
Vagrant 以15%的比例位居第二。我相信其中一些是 Vagrant 的直接使用,但也有一部分是针对预先配置的 WordPress 项目,例如 VCCW、VVV 或 Scotch Box。
第三名是直接安装,占比13%。所有这些其他选项至少会尝试隔离本地开发的依赖项。这意味着如果您有多个本地开发环境(非常常见),它们不需要共享相同的依赖项。即使您进行所有 WordPress 开发,这可能也很有用。也许一个项目正在运行 PHP 7 和 MySQL 5.7,但另一个项目在某些旧版主机上运行 PHP 5.3 和 MySQL 4。在开发中匹配这些生产版本是一个好主意,这样您就可以对本地操作在生产环境中是否有效具有一定的信心。如果没有本地隔离,您将被迫在所有开发环境中使用相同版本的软件。如果您只处理一个项目,这可能就足够了!
Docker 以7%的比例位居倒数第二。尽管 Docker 看起来很流行,但显然它在 WordPress 用户中的采用率还没有特别高。
Gilbert Pellegrom 有 一篇关于 Vagrant 和 Docker 的优秀比较文章
[Vagrant] 的缺点是每个虚拟机不仅包含您的应用程序及其所有库,还包含整个客户机操作系统,其大小可能达到几十 GB。
然而,Docker 使用“容器”,其中包含您的应用程序及其所有依赖项,但与其他容器共享内核(操作系统)。容器在主机操作系统上作为隔离的进程运行,但不受任何特定基础设施的约束(它们可以在任何计算机上运行)。
所有这些的结果是什么呢?
- Vagrant 更易于理解,也更容易上手,但可能非常占用资源(内存和空间方面)。
- Docker 的架构更难理解,也更难上手,但速度更快,使用的 CPU 和 RAM 更少,并且可能比 Vagrant VM 使用的空间更少。
作为一个个人轶事,我现在在我的 Mac 上使用 Docker 来处理所有 WordPress 相关的事务,并且发现设置和理解它并不特别困难。困扰我的一件事是最初没有将我的 MySQL 数据放在“卷”上,这使得数据库在 Docker 重新构建容器时容易被清除(但我已经解决了这个问题)。我只是 按照这个操作。
5% 的人投票选择“其他”,并被要求在评论中发表意见。有 63 条评论,对于现在的 CSS-Tricks 文章来说,数量很少!
22 条评论提到了 Laravel Valet,所以我认为这里应该特别提及一下。
Valet 是专为 Mac 极简主义者设计的 Laravel 开发环境。没有 Vagrant,没有 `/etc/hosts` 文件。您甚至可以使用本地隧道公开共享您的网站…
Laravel Valet 将您的 Mac 配置为在机器启动时始终在后台运行 Nginx。然后,使用 DnsMasq,Valet 将 *.dev 域上的所有请求代理到安装在您本地机器上的网站。
换句话说,这是一个闪电般快速的 Laravel 开发环境,大约使用 7 MB 的 RAM。
还有 8 次提及 Local by Flywheel(Mac 和 Windows),它看起来像是管理本地 WordPress 开发环境的不错的 UI。

如果您使用 Valet 或 Local,您可能已在“类似的带 UI 的软件”类别或“其他”类别中投票,因此,根据 CSS-Tricks 投票的传统,数据有点松散。
很棒的文章和研究!对于 Vagrant 的“缺点”,我想指出可以使用包含多个项目的 Vagrant 机器。我一直以这种方式使用 Vagrant 进行 WordPress 开发,我仍然对很多人为每个网站项目构建一个新的 Vagrant 感到震惊,即使系统总是相同的。
没错。设置虚拟主机非常简单,尤其是在使用 Nginx 的情况下。
这些天我也在使用 Laravel Valet!非常易于使用,模拟 HTTPS 并使用唯一的 URL 从本地共享。事实上,我将其用于大多数本地开发……不仅仅是 WordPress。绝对值得一试!
喜欢使用 scotch-box 差不多两年了,偶尔也用 VVV。但是,Local by Flywheel(以前称为 Pressmatic)是自切片面包以来的最佳之选。我强烈推荐它,我的天哪,它让生活变得多么轻松。此外,它由 Docker 提供支持!
+1 支持 Valet,我设置时遇到了一些麻烦——如果您的 Mac 非常旧,就别想了——但现在只需创建一个文件夹和一个新的数据库即可。
我们在虚拟机中运行一个无头 Ubuntu 服务器,并进行端口转发。
Windows 上的 Docker 太棒了。我还没有解决调试问题,但它是一种非常棒的方式,可以在一个漂亮的盒子里启动整个 WordPress 堆栈。
我的云笔记本电脑没有足够的空间进行本地开发,所以我使用 Cloud9,它为 WordPress 项目提供了不错的预配置设置。
我想 Desktop Server 不是一个受欢迎的选择?有人想在这里分享他们的 Docker 框架吗?如果它使用 Swarm 并在实例之间分发单个 Redis 缓存,则加分。
恕我直言,与简单的(或高级的)基于虚拟主机的环境相比,运行 Docker 之类花哨的东西没有真正的优势。更复杂的设置需要一个合适的 VM,即 NOT 共享内核等,因为这主要是内核与正常情况不同——特定的 GNU 工具根本不存在或无法访问,只有 FTP 可用,PHP 模块有限等。因此,充其量,您可以使用 Unix VM,它允许使用从 2.6 到当前 4.8 的内核(例如 ArchLinux、Manjaro、Debian Unstable)。不过,最坏的情况是必须认真复制整个设置,例如安装远程实时环境中运行的完全相同的操作系统等。
而且,并非每个人都生活在“我的客户有完整的服务器可以玩”的富裕国家。实际上,我总是对那些总是声称就是这样,而不是其他方式的人感到很有趣,甚至恼火。大多数中小型公司使用简单的共享主机帐户,在某些情况下可能稍微升级了一点,但仍然是:一个非常简化、资源有限的环境。人们只是想要一个网站,而不是一整台服务器。他们根本不在乎某些托管虚拟服务器或完整的专用服务器可能提供的优势:它是一个网站,这里可能有一点响应能力,那里有一些产品,仅此而已。当然,这也与每月的维护成本有关。
或者,也许所有真正努力工作的开发人员都不再到这里来,或者干脆放弃表达他们的想法,因为现在都是幸福的 npm + gulp + Docker 世界?我不知道。
回到正题:需要时使用 VM。很少见,但是可以快速设置一个完整的 VirtualBox 或 KVM VM,尤其是在使用模板(即您已为这些操作准备的 VM 镜像)的情况下。放入您需要的所有内容,通过 SSH 或(最糟糕的情况)FTP 连接到它,在您自己的机器上开发所有内容,然后愉快地进行部署!
除此之外,我仍然使用老式的 XAMP——多年来一直运行稳定。PHP + MySQL / MariaDB 始终保持合理的最新状态,虚拟主机很容易设置——同样,针对特定作业的特定虚拟主机设置也有很大帮助——并且设置不同类型的调试器也是一项不错的功能(尽管很少使用)。
再见,w0lf。
厚颜无耻地推广一下插件,但我们一直在为 WordPress 构建一个名为 WPLib Box 的免费本地开发解决方案。
目前它是一个 Vagrant 盒子,但它旨在“正常工作”(尽可能地做到这一点。) 我们正在积极地将其发展为在内部使用 Docker,并计划很快将其转换为多项目。
我们的目标是使其成为可用的最灵活的解决方案,“正常工作” 用于本地 WordPress 开发。并且我们计划在技术允许我们这样做并且仍然使其“正常工作” 的情况下,摆脱对 VirtualBox 和 Vagrant 的需求。
如果您有兴趣尝试一下,我们有一个免费的 Slack 频道提供支持。