Vlad - Vagrant LAMP Ansible Drupal 开发箱

Slice 1Created with Sketch.

多年来,我一直在使用本地开发环境来处理网站。有一次我什至设置了一些 Phing 脚本来在本地创建 Apache 主机和数据库,这样我就不必自己继续添加它们了。

当我第一次接触 Vagrant 时,我喜欢为项目提供一个盒子的想法,这样人们就可以在不为每个项目重新配置他们的系统的情况下工作。缺少的是一个很好的配置工具,它并不难理解。我看过 Puppet 和 Chef,但它们太复杂了,在研究了几个小时后,我仍然不确定它们是如何工作的。

在被介绍到 Ansible 之后,我决定这是我需要的工具,并着手创建一个适合我日常开发和维护 Drupal 网站的 Vagrant 开发环境。这个开发的产品是 Vlad,Vagrant LAMP Ansible Drupal 开发箱。我选择使用 Vlad 这个名字,因为它简短易说,而且不像说“那个 Vagrant Ansible Drupal 开发之类的东西”那么长。

我已经使用 Vlad 几个星期了,并开始将它与我的 Drupal 构建一起打包,尤其是在构建具有一些复杂元素(如自定义 Solr 设置)的情况下。我注意到了一些我需要做的事情,以便更容易地将 Vlad 复制到这些项目中,并将它们重新提交到项目中。

要开始使用 Vlad,您需要安装以下组件:

  • Virtualbox - 运行虚拟机的系统。

  • Vagrant - 虚拟机管理器。

  • Ansible - 一个配置工具。

  • Sudo 密码 - 设置过程中的某些操作需要 sudo 密码。

下载 Vlad 后,只需进入 Vlad 目录并使用命令“vagrant up”。你会看到 Vagrant 设置了盒子,然后 Ansible 用所需的软件配置它。

Vagrant 与 NFS 很好地集成,Vlad 会将项目中名为“docroot”的目录与 Vagrant 客户机上的目录 /var/www/sites/docroot 链接起来。这意味着 docroot 可以包含您站点的源代码,而无需管理来宾上的 git repos。

设置 Vlad 后,您可以使用地址“http://www.drupal.local/”访问该框。Vlad 使用本地 Ansible 任务来设置您的本地主机文件,因此您无需执行任何操作即可查看此地址。提供给来宾盒的默认 IP 地址是 192.168.100.100。

我决定包含一些不同的技术,而不是仅仅设置 Apache2、PHP 和 MySQL 三重奏。有些是帮助检查站点运行方式的开发工具,有些是实时设置中使用的常用工具。这是 Vlad 包含的可用技术的完整列表,以及它们的用途。

Apache2
提供网页的 HTTP 服务器,侦听端口 8080。

PHP
PHP 作为客户端库和 Apache 模块安装,以便 Drupal 可以通过 Apache 运行。安装 PHP 时设置了许多配置选项(例如 post_max_size)。

MySQL
一种非常常用于 Drupal 站点的数据库服务器。已在服务器上采取了一些最佳实践安全措施,例如删除测试数据库和保护 root 用户。默认数据库凭据是用户的“vlad”和密码的“wibble”。

Varnish
一种反向代理服务器,用作 Apache 页面请求的缓存机制。Varnish 监听 80 端口,但可以通过直接访问 8080 端口的 Apache 来绕过。

Git
一个版本控制系统。不建议从 Vagrant 本身提交和推送,但已包含在内,以便您可以轻松下拉库(可能通过 Drush make)。

Drush
Drush 是一个命令行 Drupal 工具,允许您与 Drupal 站点进行交互。Drush 安装还包括“站点审核”和“被黑!” 模块,允许分析 Drupal 站点。

Xdebug
这是一个常用的 PHP 调试工具。它已设置为允许远程调试,因此您可以使用 PHPStorm 或 Netbeans 等 IDE 来运行代码。要使用调试器,请将您的 IDE 指向 Vlad 盒 IP 地址 (192.168.100.100) 并使用端口 9000,您可能还需要通过浏览器触发它。分析也已启用,可以通过将 XDEBUG_PROFILE=true 附加到 URL 末尾来激活。

XHProf
XHProf PHP 扩展可用于获取有关 PHP 代码执行的详细统计信息。您可以在地址 http://xhprof.drupal.local 上查看 XHProf,但是为了查看您的应用程序发生了什么,您需要以这种方式将“?_profile=1”附加到 URL 的末尾 http: //www.drupal.local/?_profile=1。

Munin
这是我之前写过的一个性能监控工具。这是一个节点组件,它本身并没有做太多事情,但是如果您将其插入 Munin 服务器,它将为您提供当前活动的图表。

SASS
SASS 是一种 CSS 编译语言,用于一些 Drupal 主题(例如 Omega4)。与 SASS 一起安装的还有 Compas、Susy 和 Respond-to。

Mailcatcher
Mailcatcher 安装为 PHP 的默认邮件服务器,因此将拦截通过安装在 Vagrant 访客上的任何网站发送的所有电子邮件。您可以通过 URL http://www.drupal.local:1080 访问 MailCatcher。

Sendmail
Sendmail 是管理邮件的 SMTP 服务器。默认情况下,在设置 Vlad 时不会安装它,但可以通过 Ansible playbook playbooks/site.yml 通过取消注释适当的行轻松启用它。

Memcached
Memcached 是一个键/值服务器,通常被 Drupal 站点用来加速缓存加载。所有必需的 PHP 模块也已包含在 Vlad 中。

Adminer
Adminer 是一个轻量级的数据库管理员,可以在地址 http://adminer.drupal.local/ 查看。它包含一些简单的设置,允许您在打开应用程序时立即登录。还包含一个自定义样式表,以使其看起来与其他 Adminer 安装略有不同。

Solr(第 4 版)
这是一个近年来在 Drupal 平台上越来越受欢迎的搜索引擎。我最初并不打算将 Solr 作为这个项目的一部分,但我发现自己越来越频繁地使用它,并决定我应该包括它以防万一。Solr 通过 Apache Tomcat 运行,这是一个 Java 友好的 HTTP 服务器,可以在地址 http://www.drupal.local:8081/solr 上查看。

我开始开发这个盒子的部分原因是为了为任何版本的 Drupal 有一个现成的开发环境,希望认真开始为 Drupal 8 做出贡献。因此我不假设安装 Drupal尽管我已经让安装 Drupal 7 变得非常容易。要在盒子上安装 Drupal 7,请登录(使用“vagrant ssh”)并运行位于 /var/www/drupal_install.sh 的脚本。这将安装一个全新的 Drupal 7 站点,管理员用户名为“admin”,密码为“password”。

Vlad 是使用 Ansible 角色创建的,因此只需在 playbooks/site.yml 中注释掉 Ansible playbook 文件中的相应行即可关闭每个子系统。在这个项目中使用 Ansible 的好处是角色可以很容易地适应真实的服务器以相应地进行配置。

要使 Vlad 适应您自己的项目,只需打开主 Vagrantfile 并编辑顶部的几行配置。这将是您创建具有不同 IP 和网址的新盒子所需的一切。其他配置选项保存在文件“group_vars/all”中,在这里可以设置 PHP 变量、MySQL 端口和 ini 设置。

正如我之前所说,我现在一直使用 Vlad 作为所有新构建的模板,并且已证明是快速启动和运行的宝贵工具。它还允许我拥有与我将部署代码的服务器非常相似的本地设置,这可能会不时引起头痛。

要下载 Vlad,请转到 Vlad 存储库页面,然后单击右侧的下载链接。这将为您提供最新版本的系统。我真的在寻找人来测试系统,并向我反馈改进的想法、他们想要包含的包或帮助用户启动和运行的文档。

如果您正在为使用 Puppet 的 Drupal 寻找 Vagrant 开发箱,请查看 Mike Bell 的 DrupalDev nginx。