以下文章由 Jason Witt 撰写,他是我们这里的常客,经常发布有关 WordPress 开发之类的主题的文章。 这次 Jason 为我们介绍了开发先决条件:开发环境本身。 除了现成应用程序解决方案外,还有很多方法可以提高您的水平,包括编写自己的设置脚本。
我经常从新手和经验丰富的开发人员那里听到同一个问题:“你使用什么本地开发环境?” 作为一名 WordPress 开发人员,至少需要 Apache、MySQL 和 PHP,我会回答:“你应该尝试一下 MAMP/XAMPP/WAMP,它易于使用且效果很好”。 我仍然认为是这样,但是随着我学习和发展作为开发人员的技能,我不再认为 MAMP/XAMPP/WAMP 可以满足我的需求。
我认为我们大多数人至少说过一次这句话:“好吧,在我的本地服务器上可以正常工作”。 你能做什么呢? 当实时服务器与本地服务器不同时,您无法预测实时服务器上的问题。 Vagrant 可以帮助解决这个问题。

让我向您介绍 Vagrant,它是一款允许您在本地机器上轻松设置虚拟服务器环境的工具。 用他们自己的话说
Vagrant 基于行业标准技术构建,并通过单一一致的工作流程进行控制,提供易于配置、可复制且可移植的工作环境,帮助最大程度地提高您和您团队的生产力和灵活性。
使用 Vagrant,您可以使用与实时服务器完全相同的环境设置本地机器。 从操作系统到 Web 服务器,再到数据库。 现在,您可以构建 Web 应用程序或网站,并确信它在实时服务器上的运行效果与在本地服务器上一样好。
先决条件
在开始使用 Vagrant 盒子之前,您需要具备一些东西。
首先,您需要在计算机上安装一个虚拟机,以便 Vagrant 运行虚拟盒子。 两个最流行的虚拟机是 VMware Workstation 和 VirtualBox。 VMware 是一款商业产品,而 VirtualBox 是一款免费的开源产品。
接下来,如果您要从 GitHub 或 Bitbucket 克隆 Vagrant 盒子存储库,则需要安装 git。 您可以找到很多在 GitHub 和 Bitbucket 上分发的 Vagrant 盒子,使用 git 克隆存储库是获取 Vagrant 盒子的简便方法。 我不会在这篇文章中介绍如何安装 git,但您可以学习如何安装 git 在这里。 您还可以找到很多与 git 相关的很棒的文章,就在 CSS-Tricks 上。
您还需要安装 SSH,以便能够 SSH 到您的虚拟盒子。 如果您运行的是 OSX 或 Linux,那么您可能已经安装了 OpenSSH。 如果您使用的是 Windows,则可以按照 此处的 教程在您的 PC 上安装 SSH。
最后,您需要一个命令行工具。 是的,我知道命令行可能很吓人,但请相信我;您只需要最基本的命令行技能即可使用 Vagrant。 如果您使用的是 Windows,则可以使用命令提示符。 在 OSX 上,您可以使用终端。
安装 Vagrant
好了,现在该进入正题了。 转到 Vagrant 网站 下载 并安装适用于您操作系统的最新版本 Vagrant。
安装 Vagrant 后,您可以通过键入以下命令检查它是否已正确安装
vagrant -v
如果 Vagrant 已正确安装,您将看到类似这样的内容
Vagrant 1.7.2
现在您已安装 Vagrant,让我们找到并设置一个 Vagrant 盒子。 有三种流行的方法可以下载 Vagrant 盒子。 直接下载盒子,从 GitHub 或 Bitbucket 克隆盒子,以及从 Vagrant Cloud 添加盒子。
获取盒子
在本教程中,我将使用一个名为 Scotch Box 的预构建 Vagrant 盒子。 Scotch Box 是一个基本的 LAMP 堆栈,安装后,将为您提供开始使用这些依赖项进行开发所需的一切。
Scotch Box 设置为在 VirtualBox 虚拟机上使用。 如果您运行的是 VMware,您可以在 vagrantbox.es 上找到要下载的 Vagrant 盒子。 那里还有很多其他很棒的 VirtualBox 盒子。
如果您要下载 Scotch Box,请转到 GitHub 存储库 https://github.com/scotch-io/scotch-box 并下载存储库。 下载完成后,导航到要安装 Vagrant 盒子的目录。 创建要放置盒子的目录,然后将 zip 文件的内容解压缩到该文件夹中。
克隆存储库同样容易。 使用您的 CLI 导航到要安装盒子的父目录。 然后,使用以下命令创建 Vagrant 盒子目录并克隆盒子
git clone https://github.com/scotch-io/scotch-box.git my-project
确保将 my-project 更改为您要为 Vagrant 盒子的目录命名的内容。
获取 Vagrant 盒子的最后一种方法是从 Vagrant Cloud 获取。 我认为这是设置 Vagrant 虚拟机的最简单方法。
首先,添加盒子。 您只需使用 add box
命令,后跟盒子的名称即可。 盒子的名称通常格式为:something/anotherthing
。 Scotch Box 的名称为 scotch/box
。 要添加 Scotch Box,请使用以下命令
vagrant box add scotch/box
此命令将下载 Vagrant 盒子,使其可供 Vagrant 使用。
下载盒子后,创建要放置盒子的目录,并在您的 CLI 中导航到该目录。 进入后,使用以下命令启动盒子并将 Vagrant 文件添加到目录
vagrant init scotch/box
启动 Vagrant
此时,您已下载了 Vagrant 文件,并将其放在正确的目录中。 我们要安装盒子中可用的所有组件,因此请导航到您新创建的 Vagrant 盒子目录,并使用命令 vagrant up
首次启动 Vagrant。
vagrant up
现在请稍等……
首次运行 Vagrant 盒子时,它需要下载并安装操作系统、服务器以及所有其他组件。 此操作所需的时间取决于您选择的 Vagrant 盒子以及您的连接速度。 Scotch Box 非常轻量级,我大约需要 10 分钟。 我还使用过一个名为 Varying Vagrant Vagrants 的 Vagrant 盒子,它非常适合 WordPress 开发,但体积相当大。 初始 vagrant up
操作对我来说大约需要 20-30 分钟。

使用 Vagrant
现在您已安装并运行 Scotch Box Vagrant 盒子,您能用它做什么呢? 您可以执行任何您在任何其他 LAMP 堆栈服务器上可以执行的操作。 Scotch Box 具有一个预配置的 Web 服务器,它使用 IP 地址 http://192.168.33.10/
,因此,如果您将浏览器指向该地址,您将看到以下内容

Web 服务器呈现的所有内容都可以在“public”目录中找到。 这将与您以前使用过的任何其他 Web 服务器一样。 除了 Apache Web 服务器之外,Scotch Box 还安装了以下组件,这些组件已准备就绪,可以立即使用
- Vim
- MySQL
- PHP 5.5
- Ruby
- Git
- Screen
- Composer
- Laravel 安装程序
- cURL
- GD 和 Imagick
- Mcrypt
- Memcache 和 Memcached
- NPM
- Grunt
- Bower
- Yeoman
- Gulp
如果您要使用虚拟域而不是 192.168.33.10
IP 地址,则可以编辑您的 hosts 文件并添加以下行
192.168.33.10 my-domain.dev
Vagrant 命令
Vagrant 允许您从命令行控制服务器。 您可以在 此处 找到完整的命令列表,但让我们从基本命令开始。
vagrant
所有 Vagrant 命令都以 `vagrant` 开头。 如果你直接运行 `vagrant` 命令, 它会列出所有可用的命令。
vagrant up
`vagrant up` 命令用于启动你的虚拟机。 运行这个命令后, 你的虚拟机将会启动并可以使用。
vagrant ssh
`vagrant ssh` 命令允许你 SSH 进入你的虚拟机, 并提供一个 shell 访问权限。 这对于访问 MySQL 和执行像 `mysqldump` 的命令来备份你的数据库非常有用。
vagrant suspend
要暂停你的机器, 你可以使用 `vagrant suspend` 。 如果你想停止机器, 但又不想完全关闭它, 这个命令非常有用。
vagrant halt
要关闭你的机器, 你可以使用 `vagrant halt` 。 这会关闭机器, 并保留机器的当前状态。
vagrant destroy
要关闭你的机器并完全从头开始, 使用 `vagrant destroy` 命令。 执行 `vagrant destroy` 命令后, 你需要再次执行 `vagrant up` 命令。
总结
如今, web 开发的世界比五年前要广阔得多。 能够在与你的生产服务器相同的本地服务器上开发, 让你拥有一个更稳定的开发环境, 并让你有信心将你的项目上线, 而无需担心它会立即崩溃。 像 Vagrant 这样的工具是 web 开发的未来, 通过使用这些工具, 你将成长为一个 web 开发人员, 并帮助互联网领域更加成熟。
在 Vagrant 环境中, 创建并连接到本地 WordPress 安装的 mySQL 表的最简单方法是什么? 我之前一直使用 MAMP 中的 phpMyAdmin。
连接到本地或远程数据库的最简单方法是使用 Sequel Pro - http://www.sequelpro.com/
启动应用程序后, 只需为你的本地 vagrant 主机创建一个 SSH 连接。
如果你需要更多信息, 请访问: http://www.sketchtowordpress.com/
通过联系页面联系那里的开发者(他们提供了一些关于 vagrant 和 wordpress 的免费支持)。 他们是乐于助人的人。
我也在使用 vagrant, 但它太慢了。 我的电脑配置有什么需要更新的地方吗? 我有 8GB 内存, 并且使用 vagrantbox 文件为 vagrant 分配了 6GB。
嗨 Atul,
编辑 Vagrantfile, 并根据你的需要在 Vagrant.configure… 内添加以下行。
此外, 从 8GB 内存中分配 6GB 可能太多了, 你的整个系统可能内存不足。
我个人使用 puphpet (www.puphpet.com) 管理我的 Vagrant 开发环境, 我认为 Chef 是另一种流行的替代方案, 但我自己没有尝试过。
puphpet 的好处是它允许你轻松地配置具有合理默认值的自定义环境。 选择具有特定堆栈的特定操作系统, 并可以轻松配置虚拟主机, 这对于我的开发环境非常重要。
不幸的是, 使用 Vagrant 有一些非常真实的缺点。
我遇到过多次, 它突然找不到我的环境, 并且尝试重新安装一个新的环境(重启有时可以解决这个问题)。 有时, 你使用的配置文件版本、 vagrant 版本和 puphpet 版本之间存在兼容性问题, 这将迫使你只能从头开始创建一个新的环境(但希望你足够精通技术, 可以备份你的数据库)。
它也不像它应该的那样快, 我主要使用 Drupal, 并且在性能方面遇到了很多问题。 如果你搜索一下, 你会发现大部分情况下, 速度慢与共享文件夹有关, 并且你应该使用 NFS。 但随后会出现其他问题, 例如无法为你的 Apache 用户提供足够的权限来写入文件夹。 我现在使用默认的共享选项, 但为我的虚拟机分配了 4GB 内存和 4 个 CPU 内核(我在一台第一代 15 英寸视网膜 MacBook Pro 上运行它), 这似乎有所帮助, 但它仍然不快。
大多数这些问题可能与我对 Linux(以及可能还有 Ruby) 的知识不足有关。 但我不是全栈工程师, 我是使用 Drupal 的前端开发者, 我需要一个易于设置的本地开发环境。
我现在仍然坚持使用 Vagrant, 因为它是我认为最好的选择之一。 但它并不适合所有人, 如果你不小心, 它可能会给你带来比它解决的问题更多的麻烦。
嗨 John。 看看我们(宾州州立大学 Drupal 用户组) 的 Nittany Vagrant 分发版。 它专门为希望快速设置本地开发环境的 Drupal 用户制作。 请告诉我你的想法!
https://github.com/psudug/nittany-vagrant
如果这是一个愚蠢的问题, 请原谅我。 如果你有多个开发网站, 最好的处理方法是什么? 如果我读到最初的 `vagrant up` 需要 20-30 分钟, 那么多个环境似乎不是解决方案。
你可以将它们放在不同的文件夹中, 并使用 base-meta 标签, 这样你的相对路径就可以正常工作。
或者, 你可以配置你的虚拟主机(手动或使用 puphpet 等工具), 在其中定义某些文件夹链接到某些网页地址。 你的 vagrant 环境的 IP 始终相同, 因此, 一旦虚拟主机配置好, 你就可以编辑你的 hosts 文件来包含它们, 例如:
192.168.0.156 http://www.siteone.dev siteone.dev
192.168.0.156 http://www.sitetwo.dev sitetwo.dev
我不知道你在说什么……
现在正在查看 puphpet, 但我不能说我理解其中大部分内容。
无论如何, 谢谢你的回复。 我想我需要阅读更多关于 Vagrant 的教程。
HTML base 标签 (https://mdn.org.cn/en-US/docs/Web/HTML/Element/base)
如果你使用子文件夹, 并且没有使用虚拟主机, 你将通过 http://ip.of.vagrantbox/subfolder 访问你的网站, 这可能会导致相对链接问题。 通过指定你的 basepath, 可以避免这个问题。
但我建议你了解一下虚拟主机实现。
Puphpet 最初看起来可能很复杂,但实际上大部分都是预先配置好的。如果你只是下载默认配置,你将获得一个预先配置了 nginx、php 和 mysql 的 ubuntu 14.04 虚拟机,可以通过 http://www.awesome.dev 访问,我认为是这样。
只需查看 awesome.dev 的虚拟主机配置并复制相同的配置,就可以创建其他虚拟主机。
hosts 文件是你自己系统上的一个文件(不在虚拟机中),你需要配置它来告诉你的系统某个域名应该解析到哪个 IP 地址。
嗨,John,
关于 Puphpet,如果我已经安装了 Vagrant,那么“预先配置了 nginx、php 和 mysql 的 ubuntu 14.04 虚拟机”是不是完全多余的?
Vagrant 只是一个用于管理不同“虚拟机”的环境。Vagrant 会下载一个虚拟机(在本例中是 ubuntu 14.04 安装)并根据 Vagrantfile 和 Puphpet 生成的其他文件(或手动编写的)安装相应的开发环境。
Vagrant 提供了一个界面,让你可以轻松地与这些虚拟机通信,并快速丢弃/重新安装它们。
例如,使用 Puphpet:如果我需要 php 的额外依赖项或一个新的虚拟主机,我只需要将我的 config.yaml 放回 Puphpet 中,更改配置并下载更新的配置。然后运行“vagrant up –provision”,我的虚拟机就会更新这些新设置。
你好。有 Laravel Homestead,但它是针对 nginx 的。我创建了一个使用 Apache 的 Vagrant 虚拟机。欢迎尝试:https://github.com/ronilaukkarinen/jolliest-vagrant
谢谢 Roni,我会试一试。
那只是你第一次运行 vagrant up。就像 VVV 一样,它安装了许多附加组件,比如带有大量模块的 Grunt,以及 WordPress 测试套件等其他附加组件。你第一次运行 up 后,启动 Vagrant 只需要很短的时间。
它不需要 20-30 分钟。那只是下载虚拟机所需的时间。之后,启动只需要 10 秒。
Scotch Box 目前旨在每台虚拟机托管一个项目。因此,你可以运行多个项目,只要你在启动新的虚拟机之前将旧的虚拟机
suspend
。这是开箱即用的,如果你想的话,你可以在技术上安装虚拟主机来设置多个站点。天啊,我真希望这篇文章能早一个星期出现。我刚花了几天时间尝试不同的 Vagrant 堆栈,但没有一个很可靠。Scotch Box 看起来很棒,谢谢。
我看到一些教程作者分享了他们的 Vagrant 虚拟机,以便他们的读者可以按照他们的教程进行操作。我的问题是,如果我安装了 5 个不同的 LAMP Vagrant 虚拟机,是否意味着每个项目目录都有自己的 php、mysql、composer、laravel 安装?难道这不会占用很多空间吗?
我的虚拟机通常只有 1-2 GB。我认为它不会占用太多硬盘空间。如果你担心空间,也可以使用 vagrant destroy,每次都重新开始。
这是一篇很好的入门文章,但我希望能看到一篇后续文章,讨论 a) 在 Vagrant 中使用你的 IDE/文本编辑器,以及 b) 部署到生产服务器。
好吧,你会像使用其他任何工具一样使用你的 IDE/文本编辑器,这里没有什么变化。你甚至可以像在你的电脑上一样在虚拟机上安装 IDE,比如 VIM。有很多虚拟机在设置中包含 VIM。
你们应该看看我的一个开发者创建的这个 Vagrant WordPress 设置。它在不到 3-5 分钟的配置时间内创建了一个功能完备的 WordPress 安装,并带有 PHPMyAdmin。我的公司将其用于所有项目。
https://github.com/axocomm/vagrant-wordpress
如果在配置时遇到任何问题,请给我发邮件 [email protected]
太棒了,感谢分享!
我将 Vagrant 用于所有 WordPress 工作。不能说我是一个高级的 Vagrant 用户,甚至接近它。
对于我的需求,“Varying Vagrant Vagrants”是一个很棒的工具,它只需在终端中输入几行命令就可以启动新的 WordPress 安装。从下载 WP、设置配置/数据库、主机名(例如 mysite.dev 或类似的)都由它负责。
我使用 https://github.com/chad-thompson/vagrantpress 作为开发环境。它对我来说非常稳定和快速。
嘿,我制作了 Scotch Box!很棒的文章。
对于 Vagrant 来说,Scotch Box 非常有效 - 简洁明了。还可以看看 Homestead,这是一个非常有效的 NGINX 堆栈。
否则,Vagrant 的真正魅力在于配置。使用 Scotch Box,所有内容都打包在一个大型虚拟机中。这对于基本的 PHP 东西以及让每个人都更容易使用非常有效。
如果你开始做一些高级的东西,你可以让 Vagrant 在
vagrant up
时使用 Chef、Puppet 甚至 shell 脚本对你的服务器进行配置。想象一下服务器设置作为一个 Vagrant 使用的配置文件。另外,请大家继续关注。Scotch Box 2.0 即将推出。更好的 VHost 支持、更快的性能、可选的 HHVM、更好的文件权限等等。