Vlad - Vagrant LAMP Ansible Drupal 开发箱
多年来,我一直在使用本地开发环境来处理网站。有一次我什至设置了一些Phing脚本来在本地创建Apache主机和数据库,这样我就不必自己继续添加它们了。
当我第一次接触Vagrant时,我喜欢为项目提供一个盒子的想法,这样人们就可以在不为每个项目重新配置他们的系统的情况下工作。缺少的是一个很好的配置工具,它并不难理解。我看过Puppet和Chef,但它们太复杂了,在研究了几个小时后,我仍然不确定它们是如何工作的。
在被介绍到Ansible之后,我决定这是我需要的工具,并着手创建一个适合我日常开发和维护Drupal网站的Vagrant开发环境。这个开发的产品是Vlad,VagrantLAMPAnsibleDrupal开发箱。我选择使用Vlad这个名字,因为它简短易说,而且不像说“那个VagrantAnsibleDrupal开发之类的东西”那么长。
我已经使用Vlad几个星期了,并开始将它与我的Drupal构建一起打包,尤其是在构建具有一些复杂元素(如自定义Solr设置)的情况下。我注意到了一些我需要做的事情,以便更容易地将Vlad复制到这些项目中,并将它们重新提交到项目中。
要开始使用Vlad,您需要安装以下组件:
Virtualbox-运行虚拟机的系统。
Vagrant-虚拟机管理器。
Ansible-一个配置工具。
Sudo密码-设置过程中的某些操作需要sudo密码。
下载Vlad后,只需进入Vlad目录并使用命令“vagrantup”。你会看到Vagrant设置了盒子,然后Ansible用所需的软件配置它。
Vagrant与NFS很好地集成,Vlad会将项目中名为“docroot”的目录与Vagrant客户机上的目录/var/www/sites/docroot链接起来。这意味着docroot可以包含您站点的源代码,而无需管理来宾上的gitrepos。
设置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本身提交和推送,但已包含在内,以便您可以轻松下拉库(可能通过Drushmake)。
Drush
Drush是一个命令行Drupal工具,允许您与Drupal站点进行交互。Drush安装还包括“站点审核”和“被黑!”模块,允许分析Drupal站点。
Xdebug
这是一个常用的PHP调试工具。它已设置为允许远程调试,因此您可以使用PHPStorm或Netbeans等IDE来运行代码。要使用调试器,请将您的IDE指向Vlad盒IP地址(192.168.100.100)并使用端口9000,您可能还需要通过浏览器触发它。分析也已启用,可以通过将XDEBUG_PROFILE=true附加到URL末尾来激活。
XHProf
XHProfPHP扩展可用于获取有关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访客上的任何网站发送的所有电子邮件。您可以通过URLhttp://www.drupal.local:1080访问MailCatcher。
Sendmail
Sendmail是管理邮件的SMTP服务器。默认情况下,在设置Vlad时不会安装它,但可以通过Ansibleplaybookplaybooks/site.yml通过取消注释适当的行轻松启用它。
Memcached
Memcached是一个键/值服务器,通常被Drupal站点用来加速缓存加载。所有必需的PHP模块也已包含在Vlad中。
Adminer
Adminer是一个轻量级的数据库管理员,可以在地址http://adminer.drupal.local/查看。它包含一些简单的设置,允许您在打开应用程序时立即登录。还包含一个自定义样式表,以使其看起来与其他Adminer安装略有不同。
Solr(第4版)
这是一个近年来在Drupal平台上越来越受欢迎的搜索引擎。我最初并不打算将Solr作为这个项目的一部分,但我发现自己越来越频繁地使用它,并决定我应该包括它以防万一。Solr通过ApacheTomcat运行,这是一个Java友好的HTTP服务器,可以在地址http://www.drupal.local:8081/solr上查看。
我开始开发这个盒子的部分原因是为了为任何版本的Drupal有一个现成的开发环境,希望认真开始为Drupal8做出贡献。因此我不假设安装Drupal尽管我已经让安装Drupal7变得非常容易。要在盒子上安装Drupal7,请登录(使用“vagrantssh”)并运行位于/var/www/drupal_install.sh的脚本。这将安装一个全新的Drupal7站点,管理员用户名为“admin”,密码为“password”。
Vlad是使用Ansible角色创建的,因此只需在playbooks/site.yml中注释掉Ansibleplaybook文件中的相应行即可关闭每个子系统。在这个项目中使用Ansible的好处是角色可以很容易地适应真实的服务器以相应地进行配置。
要使Vlad适应您自己的项目,只需打开主Vagrantfile并编辑顶部的几行配置。这将是您创建具有不同IP和网址的新盒子所需的一切。其他配置选项保存在文件“group_vars/all”中,在这里可以设置PHP变量、MySQL端口和ini设置。
正如我之前所说,我现在一直使用Vlad作为所有新构建的模板,并且已证明是快速启动和运行的宝贵工具。它还允许我拥有与我将部署代码的服务器非常相似的本地设置,这可能会不时引起头痛。
要下载Vlad,请转到Vlad存储库页面,然后单击右侧的下载链接。这将为您提供最新版本的系统。我真的在寻找人来测试系统,并向我反馈改进的想法、他们想要包含的包或帮助用户启动和运行的文档。
如果您正在为使用Puppet的Drupal寻找Vagrant开发箱,请查看MikeBell的DrupalDevnginx。