Japh 在上一篇文章中已经解释了基本原理,并最终说服了我们使用Vagrant将我们的开发环境设置为与远程Web服务器接近。 这篇文章已有两年多的历史了,但是今天这个想法仍然有用。 更重要的是,Vagrant最近以一种名为VVV的特殊Vagrant配置在WordPress社区中获得了关注,该配置是Varying Vagrant Vagrants的缩写。
VVV是Vagrant配置的预设,适用于以WordPress为中心的项目,例如开发主题,插件或为WordPress Core做出贡献 。 VVV还包含了一些工具,例如WP-CLI , PHP Code Sniffer和Composer ,这些工具可以增强我们的开发工作流程。
尽管如此,使用MAMP,WAMP或XAMPP之类的应用程序已经为许多开发人员提供了足够的便利。 这些工具可能为他们提供了很好的服务,因此似乎没有必要迁移到VVV。
因此,本教程针对那些长期使用这些传统堆栈应用程序来开发WordPress的用户,并且现在觉得该应用程序不再能应对您更广泛,更复杂的项目。
也许您读过有关Vagrant被称为绝佳选择的某个地方,但您不知道从何开始,以及Vagrant是否适合您。 因此,在进一步研究之前,我们将概述适合使用VVV的项目开发方案。
让我们开始。
项目简介
首先,我们有一个开发人员团队来帮助我们完成这个项目。 我们的团队遍布全球,每个人都有自己的偏好-有些使用Windows,有些使用OSX。我们采用Vagrant和VVV,以便每个人都拥有相同的环境,并使测试输出更加相关。
我们的项目是创建一个主题和一个插件,然后将它们提交到各自的WordPress.org存储库。
该主题应该与一些流行的插件兼容,例如Jetpack , WooCommerce , EDD和BBPress 。 我们还将针对许多其他插件测试该插件,以确保当它们一起活动时不会发生冲突或错误。
此外,主题和插件还应该与WordPress的最新版本和两个早期版本兼容,并且应该通过Beta版进行测试,以准备将来的WordPress版本。
下表显示了我们的主题和插件应与WordPress版本以及许多插件兼容的位置。
兼容性: | Acme-StoreFront(主题) | Acme-LocalCurrency(插件) |
---|---|---|
WordPress 4.2 | √ | ‐ |
WordPress 4.3 | √ | ‐ |
WordPress最新 | √ | √ |
WordPress Beta | √ | √ |
喷气背包 | √ | ‐ |
BBPress | √ | ‐ |
简易数字下载(EDD) | √ | √ |
WooCommerce | √ | √ |
此外,我们可能在jetpack.wordpress.dev
上有一个本地网站,该网站将托管主题(或插件),这些主题取决于一个或多个Jetpack模块,例如Infinite Scroll和Sharing 。
为了避免受到其他插件的干扰, jetpack.wordpress.dev
中的活动插件仅是Jetpack,但一些支持开发的插件(例如Query Monitor , VIP Scanner和Debug Bar)却有些例外。
最终,我们还可以创建woo.wordpress.dev
, bbp.wordpress.dev
等,以围绕这些插件的功能来构建和测试我们的项目。
您需要安装什么?
- Git:在本教程中,我们将主要使用Git来克隆存储库。 但是,通常,您应该使用它来跟踪和管理项目更改。
- Terminal:我们在本教程中的大部分操作都将在Terminal中完成。 Windows 10用户最终将能够通过命令提示符运行Bash脚本 。 Windows 8或7用户可以使用Bash Git,它是通过Git安装程序Cygwin预安装的。 Cmder可能是一个不错的选择。
- Homebrew:对于OSX用户,我强烈建议您安装Homebrew和Homebrew Cask ,这将使本教程中的安装变得轻而易举。 这是我们姐妹网站上的教程,Computer Tuts +, 使用Homebrew和Cask进行完美配置 。
既然我们已经大致了解了要做什么,并且已经安装了这些工具,那么我们现在将继续设置VVV并使其运行。 让我们开始吧!
步骤1:安装VirtualBox
首先,我们需要一个虚拟机(VM)来托管通过Vagrant创建的开发环境。 在本教程中,我们选择VirtualBox ; 它是免费的并且可以跨平台运行。 在“ 下载”页面上,适用于每种平台的安装程序-Windows,OSX和几个Linux发行版 。
![VirtualBox下载页面](https://i-blog.csdnimg.cn/blog_migrate/4163ec1a2d1f058f9f0d0d87062907b5.png)
启动安装程序,并按照步骤进行操作,直至过程结束。 或者,OS X用户可以通过Homebrew Cask安装VirtualBox,这使您可以通过单行命令更方便地安装VirtualBox,如下所示。
brew cask install virtualbox
安装VirtualBox后,可能需要一些时间,我们将继续安装Vagrant。
步骤2:安装Vagrant
同样,Vagrant安装程序可用于OS X,Windows和Linux。 为您的平台下载一个,然后按照步骤进行操作。 OS X用户可以使用以下命令行通过Homebrew Cask安装它。
brew cask install vagrant
安装后,您应该可以访问vagrant
CLI。
![OSX终端中的Vagrant命令](https://i-blog.csdnimg.cn/blog_migrate/96b818af9dd56794b5d9e794c4e327fe.png)
步骤3:安装Vagrant插件
安装以下无用的插件是可选的,但通常最好安装它们,以简化启动和运行VVV开发环境(包括本地网站)的过程。
Vagrant Hosts Updater :此插件将允许Vagrant更新hosts
文件以注册本地网站的域名。 否则,我们将不得不自己添加它,这听起来有点不方便。
运行以下命令以安装插件:
vagrant plugin install vagrant-hostsupdater
Vagrant Triggers :此插件将允许VVV 自动执行许多过程,例如备份数据库。 要安装它,请运行:
vagrant plugin install vagrant-triggers
前提条件-VirtualBox和Vagrant以及插件-已设置。 因此,我们可以开始安装VVV。
步骤4:安装VVV
首先,将VVV从GitHub存储库克隆到本地目录。
git clone git://github.com/Varying-Vagrant-Vagrants/VVV.git
克隆到位后,导航到克隆所在的目录。 然后使用以下命令行启动并运行它:
cd vvv; vagrant up
VVV将下载并安装Ubuntu,作为托管我们本地网站的虚拟操作系统。 在某些时候,您可能还需要输入密码才能让Vagrant写入您的主机文件。
![终端正在运行vagrant up命令](https://i-blog.csdnimg.cn/blog_migrate/4b9d3e6d121b22c2e71f1ec19102a1de.png)
请记住,这是我们第一次设置并运行VVV。 该过程将花费很长时间。 可能需要30分钟到一个小时左右才能完成。 在此过程中散步,喝咖啡或休息一下。
当VVV启动并运行时,它为我们提供了一些WordPress默认安装,如下所示:
- local.wordpress.dev:WordPress的最新稳定版本。
- local.wordpress-trunk.dev :这是WordPress每晚发布的版本,其中包含粗糙的代码。 如果登录到仪表板,则会在页脚中找到与
You are using a development version (4.5-RC1-37169)
的内容。
使用admin
作为用户名和password
作为密码登录这些站点。
步骤5:在VVV中添加新的WordPress项目
现在我们已经启动并运行了VVV,我们可以启动新项目了。 我们将创建一个示例主题和插件。 它一直是我的偏好,开始了与主题下划线 ,并使用WPPB一个插件。
我们将这些样板添加到位于{vvv-directory}/www/wordpress-default/wp-content/
的local.wordpress.dev
的/wp-content/
目录中的相应目录中。
![在Chrome中查看VVV安装的WordPress本地网站](https://i-blog.csdnimg.cn/blog_migrate/f960068bbf63870c528a5a22e5102ddf.png)
继续开发主题和插件; 添加一些功能,为主题添加“设置”页面,为主题添加与Customizer的更深入的集成,最后使它们为WordPress下一个版本做好准备。
Envato Tuts +已发布了许多资源,这些资源在开发过程中可能会有用。 以下是一些我的最爱:
- 在60秒内构建WordPress主题
- WordPress Customizer界面快速指南
- Tuts +模板标签指南
- WordPress分类法初学者指南
- 创建第一个WordPress小部件的简介
- WordPress开发最佳实践提示
使用VV创建新的本地站点
如前所述,我们将创建更多本地网站,在这些网站上我们将开发我们的主题和插件,以便与Jetpack,WooCommerce,EDD和BBPress等多个插件集成。 我们还将设置两个网站,以针对WordPress早期版本(在本例中为4.3和4.2)测试我们的项目。 至此,我们只设置了local.wordpress-trunk.dev
,该主机托管了WordPress每晚,测试版或发布候选(RC)版本。
创建和设置本地网站通常需要执行几个步骤。 首先,我们将必须下载WordPress副本,将其提取并放置在我们本地主机的根目录中,创建一个数据库,运行WordPress安装,并更改hosts文件以注册域名。 如果我们将这个过程用于创建三个或更多本地网站,我们很快就会发现该过程效率低下且耗时。
使用VVV及其扩展名VV ,这是Variable VVV的缩写,我们将能够以更少的精力提高工作效率。 让我们看一下如何部署VV。
安装VV
由于在OS X和Windows中安装VV的过程各不相同,因此本节分为两部分。 您可能会立即跳到当前使用的平台部分。
在OS X中安装VV
在OSX中安装VV的最简单方法是通过Homebrew 。 只需键入以下命令。
brew install bradp/vv/vv
在Windows中安装VV
在Windows中,您首先需要在计算机目录中的某个位置克隆VV存储库。
git clone https://github.com/bradp/vv.git vv
然后,我们需要Windows识别vv
命令。
为此,右键单击“我的电脑”或“此PC”,然后选择“ 属性...” 。 然后,转到高级系统设置>环境变量 。 从系统变量列表中选择“路径”,然后单击“ 编辑...” 。
![Windows系统路径](https://i-blog.csdnimg.cn/blog_migrate/da81a4dd8ab8a1467ebe7d6358fa13b9.png)
添加您之前克隆的vv
目录路径。 例如: C:\Users\thoriq\Sites\vv
。
![在Windows中编辑系统变量对话框](https://i-blog.csdnimg.cn/blog_migrate/e4af4c9c5e6a3c7ef3b81de75b573e70.png)
安装完成后,我们应该可以全局访问vv
命令。 该命令将使我们能够设置新的WordPress安装和运行方式,您可以通过vv --help
命令找到其详细信息。
![在OS X终端中查看的VV命令列表](https://cms-assets.tutsplus.com/uploads/users/69/posts/26322/image/wpvvv-vv-commands.jpg)
在Windows中,可通过命令提示符(cmd.exe)和Bash Git访问CLI。
![](https://cms-assets.tutsplus.com/uploads/users/69/posts/26322/image/wpvvv-vv-windows-bash-vv.jpg)
创建一个新的WordPress网站
VV使安装新的WordPress网站变得很容易,只需键入以下命令:
vv create
一旦执行,它将在配置新网站的过程中提示一些问题,即:
1.命名站点目录
对于MAMP用户,这类似于在/MAMP/htdocs/
的MAMP文档根目录中创建一个新文件夹。 这是所有网站资产所在的文件夹。 在此步骤中,输入目录名称,不要包含空格,最好使用小写字母,例如:
![OS X终端中的目录名称提示](https://i-blog.csdnimg.cn/blog_migrate/048f7a8ec6958d2219c86117052e7738.png)
2.命名域
设置我们新网站的域名。 本地网站的域通常以.dev
或.local
结尾。 在这种情况下,我将命名为42.wordpress.dev
。 它是一个数字为42
的子域,它表示我们将要安装的WordPress版本4.2.x。
![命名域](https://i-blog.csdnimg.cn/blog_migrate/a8614a2dcd3f465ecf8b627cdeeaa2d4.png)
3.设置WordPress版本
在这里,我们将安装WordPress 4.2.8,这是4.2分支中的最后一个迭代。 WordPress版本的完整列表可以在Release Archive页面上找到。
![设置WordPress版本](https://i-blog.csdnimg.cn/blog_migrate/e60bf78664c176da4202d664ff83be57.png)
4.启用多站点
它询问我们是否要激活WordPress Multisite模式。 我们选择N
![在终端安装时提示为多站点yN](https://i-blog.csdnimg.cn/blog_migrate/eb1d4f6f7c1df51ccffd314808253e3a.png)
目前,为主题和插件支持WordPress Multisite并不是重中之重。 如果以后需要在多站点环境下构建和测试项目,则可以在新域(例如mu.wordpress.dev
下创建另一个站点。
5. WP内容资产
WordPress wp-content
目录通常包含许多子目录,例如主题,插件和上载目录。 有时我可能还会创建一些额外的文件夹来存储一些任意文件。 如果您在Git存储库中托管了预设内容,则可以输入URL并让VV克隆存储库。
现在,我们将其留空。
![终端Git存储库中的VV提示要克隆,因为wp-content留空以跳过](https://i-blog.csdnimg.cn/blog_migrate/90396777579d134b8f12fdee9361347e.png)
6.导入SQL
我们没有要导入的SQL数据库,因此我们也将此提示留空。 但是,如果有,请指定SQL文件所在的目录路径,例如: /Sites/db/wp.sql
。
![终端Git存储库中的VV提示要克隆,因为wp-content留空以跳过](https://cms-assets.tutsplus.com/uploads/users/69/posts/26322/image/wpvvv-vv-local-sql.jpg)
7.默认主题和插件
WordPress带有默认主题(例如TwentyFifteen,TwentySixteen等)和插件( Akismet和Hello Dolly ),通常我们不会使用它们。 在此步骤中,我们可以将y
传递给提示,以告诉VV完全删除它们。
![终端中的VV提示删除默认主题和插件](https://i-blog.csdnimg.cn/blog_migrate/7ccdf2c39975e13d4a1efb2012550f05.png)
8.虚拟内容
我们可以告诉VV从WPTest安装示例内容。 它是一套广泛的内容,包括帖子,页面和评论。 该内容将有助于发现主题和插件中的任何未对齐,兼容性问题或错误。 因此,键入y
。
![终端中的VV提示将示例内容添加到站点](https://cms-assets.tutsplus.com/uploads/users/69/posts/26322/image/wpvvv-vv-sample-content.jpg)
9. WP_DEBUG
我们一定会启用WP_DEBUG,以便WordPress在开发过程中打印任何PHP错误。 因此,在提示符下键入y
。
![终端启用中的VV提示WP_DEBUG和WP_DEBUG_LOG](https://i-blog.csdnimg.cn/blog_migrate/fdb3b00584ab8741e4cb7552dbe53884.png)
10.确认
最后,在VV继续安装之前,请确认所有定义的配置均正确。 如果一切正常,请键入y
继续。 否则,请键入n
以中止该操作,并且您可以从头开始重复vv create
。
![](https://i-blog.csdnimg.cn/blog_migrate/6eab86e0da25bcb380b0a7e7b4cc6e55.png)
完成后,VV将显示站点以及登录凭据(用户名和密码),如下所示。
![新站点地址及其凭据](https://i-blog.csdnimg.cn/blog_migrate/be48bee5e65c7fcdb5fdfab682f91f52.png)
重复这些步骤,以在本教程的“项目简介”部分中安装其他上述站点。
组织和同步项目
现在,我们有几个具有不同环境的站点来测试我们的项目(主题或插件)。 我们的站点数量将随着时间的增长而增长,以至于将整个项目目录复制到这些测试环境将是一项不便的事情。
因此,我们需要一个文件夹,可以将项目立即投射到这些网站,最终使我们的工作流程更有条理。
驱动器映射简介
Vagrant允许我们将目录同步到虚拟机。 实际上,Vagrant在引擎盖下部署了自己的功能。 如果我们在“驱动器映射”部分下查看Vagrantfile
,我们会发现它同步了许多目录,包括所有站点安装所在的www/
。
![定义www文件夹的Vagrantfile源代码映射到虚拟机](https://i-blog.csdnimg.cn/blog_migrate/404ff4974c4d13cb01c7f2596603401f.png)
映射自定义目录
首先,我们首先需要创建两个目录,分别托管我们的插件和主题。 您可以将这些目录放置在计算机上的任何位置。 就我而言,我有一个名为dev
的目录,其中包含我的所有项目,如下所示。
.
└── dev
└── library
├── plugins
└── themes
然后,我们将注册这些目录的映射。 我们在local.wordpress.dev
和local.wordpress-trunk.dev
安装了三个WordPress网站。 因此,这些目录将被映射,指向并同步到虚拟机中这些站点的每个/plugins/
和/themes/
目录。
但是,应始终避免修改默认系统文件。 因此,我们无需修改Vagrantfile
,而是将映射配置添加到名为Customfile
的文件中-在Vagrantfile
第241行处,我们发现它已加载以应用custom或覆盖默认配置。
![Customfile的Vagrantfile源代码](https://i-blog.csdnimg.cn/blog_migrate/dead95cefa0bd164eb75caeea37cd51a.png)
创建Customfile
在同一个位置的文件Vagrantfile
。
.
└── vvv
└── Vagrantfile
├── Customfile
在文件中添加以下代码行,我相信它们很容易解释。
##Plugins
config.vm.synced_folder "/Users/thoriq/Sites/dev/plugins/", "/srv/www/wordpress-default/wp-content/plugins", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
config.vm.synced_folder "/Users/thoriq/Sites/dev/plugins/", "/srv/www/wordpress-develop/wp-content/plugins", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
config.vm.synced_folder "/Users/thoriq/Sites/dev/plugins/", "/srv/www/wordpress-42/htdocs/wp-content/plugins", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
##Themes
config.vm.synced_folder "/Users/thoriq/Sites/dev/themes/", "/srv/www/wordpress-default/wp-content/themes", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
config.vm.synced_folder "/Users/thoriq/Sites/dev/themes/", "/srv/www/wordpress-trunk/wp-content/themes", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
config.vm.synced_folder "/Users/thoriq/Sites/dev/themes/", "/srv/www/wordpress-42/htdocs/wp-content/themes", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
通过运行vagrant reload
重新加载Vagrant,否则vagrant up
如果当前未运行,请vagrant reload
vagrant up
。 /dev/plugins/
和/dev/themes/
/dev/plugins/
和/dev/themes/
现在应该在所有站点中列出。
![网站中的插件列表](https://i-blog.csdnimg.cn/blog_migrate/ff1642e3445934f848384eaec8b70d1a.png)
添加GUI层
至此,我们已经设置并运行了Vagrant和VVV。 现在,我们能够在几分钟之内创建一个新的本地网站,而无需费心下载WordPress .zip
软件包,提取该软件包以及编辑主机文件条目。
到目前为止,我们的大多数操作都是通过命令行界面完成的。 可以理解,这对于初学者来说可能有些吓人,特别是对于那些来自图形界面应用程序(例如MAMP或WAMP)的用户。 需要时间来适应它。
但是,Vagrant中的某些操作可以用GUI替代。 有一些可用的扩展程序可以为Vagrant和VVV添加漂亮的GUI层,从而使某些操作像单击一样容易。 其中一些包括:
流浪者仪表板
vvv.dev
的Vagrant Dashboard可能等同于MAMP的localhost/MAMP/
页面,但它以纯白色显示。
![VVV默认仪表板外观](https://i-blog.csdnimg.cn/blog_migrate/102376902928f6c749c68a83c6a5de82.png)
幸运的是,我们可以通过扩展使其生动起来。 有几种选择,我将通过topdown选择VVV仪表板 。 要部署扩展,请导航到/www/default/
目录并拉出扩展存储库:
git clone https://github.com/topdown/VVV-Dashboard.git dashboard
然后,将/dashboard/dashboard-custom.php
复制到/defaults/
,如下所示。
.
── dashboard
├── dashboard-custom.php (the customized dashboard)
├── database-admin
├── index.php
├── memcached-admin
├── opcache-status
├── phpinfo
└── webgrind
无需重新加载流浪汉。 只需在vvv.dev刷新VVV仪表板。 现在,除了列出已安装的站点之外,您还应该在仪表板上找到有关Vagrant配置的许多其他详细信息。
![新的VVV仪表板的侧栏](https://i-blog.csdnimg.cn/blog_migrate/dc61a8452dcecedb9a56cedcbb439c52.png)
流浪经理
您可以安装的另一个实用程序是Vagrant Manager 。
Vagrant Manager类似于MAMP和WAMP,在这种情况下,它使我们可以单击几下运行,停止和重新加载Vagrant。 Vagrant Manager在OS X中通过Homebrew Cask和.dmg
,在Windows中通过.exe
安装程序包提供。 因此,安装该应用程序应该很容易。
Vagrant Manager安装并运行后,您可以找到您的Vagrant配置列表,并且该列表当前处于活动状态。
![OS X Taksbar中的Vagrant Manager IU](https://i-blog.csdnimg.cn/blog_migrate/7e66c0b7763d012067d9dbe4a659478e.png)
phpMyAdmin
Vagrant还内置了phpMyAdmin,可从vvv.dev/database-admin/访问。 但是,我不是phpMyAdmin的粉丝。 除了界面可爱之外,在大型数据库中处理查询也很缓慢。 这就是我更喜欢使用本机应用程序(例如Sequel Pro或Windows的SQL Workbench)的原因。 但是,我们首先必须将应用程序连接到MySQL。
使用本机应用程序连接到MySQL
在这里,我正在使用Sequel Pro for OSX。但是,无论您使用什么应用程序,都可以使用连接到MySQL所需的凭据。 他们是一样的。
- MySQL主机 :
127.0.0.1
- MySQL用户名 :
root
- MySQL密码 :
root
- SSH主机 :
local.wordpress.dev
(也适用于在VVV中注册的任何域) - SSH用户 :
vagrant
- SSH密码 :
vagrant
如果看到如下所示的警告,则可以将其忽略,只需单击“是”或“确定”继续。 我们仅连接到我们自己计算机上的虚拟机,因此无需担心任何事情。
![](https://cms-assets.tutsplus.com/uploads/users/69/posts/26322/image/wpvvv-sequel-pro.jpg)
连接后,我们可以看到我们站点的数据库。 现在,我们可以做一些事情,例如导入和导出数据库,或者可能执行一些SQL查询 。
![](https://i-blog.csdnimg.cn/blog_migrate/4858457a630689df050b8db3293f20c3.png)
下一步是什么?
如前所述,VVV附带了包括PHP CodeSniffer在内的一系列工具,可让您根据WordPress编码标准对项目执行代码审核。 我认为这是您应该做的事情,尤其是在项目启动之前。
但是,由于PHP CodeSniffer超出了本教程的范围,因此我整理了一些参考资料来帮助您入门。
包起来
我们已经设置和运行VVV并通过许多扩展对其进行了改进,已经走了很长一段路。 最终,在使用WordPress创建新的本地站点或测试环境时,它可以简化我们的工作流程,尽管可能需要一些时间来适应它。
WordPress的经济非常活跃。 有主题,插件,库和许多其他产品可帮助您构建站点和项目。 该平台的开源特性也使其成为一个很好的选择,您可以从中提高自己的编程技能。 无论如何,您都可以在Envato Marketplace中看到我们提供的所有内容。
希望本教程对Vagrant和VVV入门有帮助。
翻译自: https://code.tutsplus.com/tutorials/wordpress-development-with-vvv--cms-26322