mediacurrent/mis_vagrant

一个用于本地Drupal开发的虚拟机,使用Vagrant + Ansible构建


README

设置本地Vagrant环境

Mediacurrent本地Vagrant基于DrupalVM的工作。

这里下载并安装VirtualBox (>= 5.x)。要在终端检查是否已安装,请使用以下命令

vboxmanage -v

这将返回您的版本号。最近测试且可正常工作的版本是5.1.12*。

这里下载并安装Vagrant (>= 2.0.4)。要检查您可能拥有的版本,您可以在终端中打开并使用以下命令

vagrant --version

安装Vagrant::Hostsupdater插件

此插件将自动更新您的机器上的/etc/hosts,这样就不必手动映射IP地址。您只需安装一次。vagrant plugin install vagrant-hostsupdater

要验证是否安装了插件,您可以运行

vagrant plugin list

如果您有该插件,您将在返回的列表中看到它。

将vagrant ssh密钥添加到您的.ssh目录

通常这已经安装好了。这将允许您无需密码即可SSH进入您的vagrant机器。如果您已经有这个文件,则命令将返回一个通知,表明文件存在。这是正常的。

ln -s ~/.vagrant.d/insecure_private_key ~/.ssh/vagrant_insecure_private_key
chmod 600 ~/.ssh/vagrant_insecure_private_key

以下命令将为您的默认.ssh文件夹添加一个符号链接。chmod命令将更改权限为适当的权限。要验证此操作是否成功,请运行以下命令

ls -lah ~/.ssh/vagrant_insecure_private_key

输出应如下所示

ls -lah ~/.ssh/vagrant_insecure_private_key
lrwxr-xr-x  1 username  staff    47B Mar  8  2014 /Users/username/.ssh/vagrant_insecure_private_key -> /Users/username/.vagrant.d/insecure_private_key

通过编辑[home]/.ssh/config并添加以下行将mcdev顶级域名添加到您的ssh配置中:注意:这只需做一次。您可能已经在您的 ~/.ssh/config文件中有了这个。

Host *.mcdev
  ForwardAgent yes
  IdentityFile ~/.ssh/vagrant_insecure_private_key
  User vagrant

这将允许您从机器上的任何位置SSH进入任何Vagrant机器。

将这些仓库克隆到您选择的目录中。注意:这将是在您的机器上网站所在的位置。下面的URL将是您特定项目的vagrant的URL。

  • git clone git@bitbucket.org:mediacurrent/mis_vagrant_example.git

初始化子模块以获取mis_example代码库。这些命令将检索构建网站所需的任何额外代码,包括核心Drupal文件的git仓库(通常位于单独的Bitbucket位置)。

  • cd mis_vagrant_example
  • git submodule init && git submodule update --remote
  • git submodule foreach git checkout develop

示例代码库(git@bitbucket.org:mediacurrent/mis_example.git)已安装到"mis_example"目录。

mis_vagrant_example目录启动虚拟机

  • vagrant up 您可能需要输入sudo密码以进行NFS挂载

此时,您应该有一个工作的vagrant,但不是一个工作的网站。要获得一个工作的网站,您需要安装一个站点配置文件,或者从服务器使用数据库备份进行安装。由于每个项目都不同,请参考您的项目特定仓库或Confluence空间以获取有关网站和数据库安装的详细信息。

全局Vagrant助手

使用标准MC vagrant,您将获得以下列出的一些附加工具的访问权限。

生成登录链接

登录链接可以通过Drush生成。为此,您需要导航到Drupal所在位置的docroot,并使用项目提供的Drush别名(@example.mcdev)。ULI命令将返回一个您可以用于在浏览器中登录网站的URL。

  • cd path/to/docroot
  • drush @example.mcdev uli
  • vagrant ssh
  • cd /home/vagrant/docroot/sites/example.mcdev
  • drush uli

  • 从vagrant服务器退出(通常ctrl-d可以很好地工作)

运行编码标准测试。

注意 除非模块位于“sites/all/modules/custom”目录中,否则不会运行测试。

Drupal 7

  • vagrant ssh -c "/vagrant/tests/code-sniffer.sh /home/vagrant/docroot"

Drupal 8

  • vagrant ssh -c "/vagrant/tests/code-sniffer.sh /home/vagrant/docroot/web"

运行安全审查测试。

(仅限Drupal 7)

  • vagrant ssh -c "/vagrant/tests/security-review.sh example.mcdev /home/vagrant/docroot"

运行可访问性测试。

  • vagrant ssh -c "/vagrant/tests/pa11y/pa11y-review.sh example.mcdev"

运行BDD系统测试。

  • vagrant ssh -c "/vagrant/tests/behat/behat-run.sh http://example.mcdev"
  • 要运行单个测试或进行进一步配置,请参阅tests/behat/README.md

文档

Drupal VM Logo

CI Documentation Status Packagist Docker Automated build irc://irc.freenode.net/drupal-vm

Drupal VM 是一个基于Ansible构建的Drupal虚拟机。

Drupal VM使构建Drupal开发环境变得快速简单,并让开发者了解在虚拟机或Docker容器(而不是老旧的MAMP/WAMP开发)上开发Drupal的奇妙世界。

您可以使用以下两种方式使用Drupal VM

  1. 使用Vagrant和VirtualBox。
  2. 使用Docker。

本README的其余部分假设您正在使用Vagrant和VirtualBox(这是目前使用Drupal VM最灵活和最广泛使用的方法)。如果您想使用Docker与Drupal VM一起使用,请阅读Drupal VM Docker文档

Drupal VM在Ubuntu 18.04(默认)Linux虚拟机上安装以下内容

  • Apache(或Nginx)
  • PHP(可配置版本)
  • MySQL(或MariaDB,或PostgreSQL)
  • Drupal 7、8或9
  • 可选
    • Drupal Console
    • Drush
    • Varnish
    • Apache Solr
    • Elasticsearch
    • Node.js
    • Selenium,用于通过Behat测试您的网站
    • Ruby
    • Memcached
    • Redis
    • SQLite
    • Blackfire、XHProf或Tideways,用于分析您的代码
    • XDebug,用于调试您的代码
    • Adminer,用于直接访问数据库
    • Pimp my Log,用于轻松查看日志文件
    • MailHog,用于捕获和调试电子邮件

在有良好宽带连接的情况下,从头开始构建或重新构建虚拟机应该需要5-10分钟。

请阅读本README的其余部分以及Drupal VM文档,以获取帮助配置和集成Drupal VM到您的流程。

文档

完整的Drupal VM文档可在http://docs.drupalvm.com/找到

自定义虚拟机

有几个地方您可以自定义虚拟机以满足您的需求

  • config.yml:覆盖从default.config.yml继承的任何默认虚拟机配置;自定义虚拟机中安装的任何软件的几乎所有方面(有关配置Drupal VM的更多信息)。
  • drupal.composer.jsondrupal.make.yml:包含配置信息,用于指定Drupal核心版本、模块和补丁,这些将在Drupal初始安装时下载(您可以使用Composer、Drush make或自己的代码库进行构建)。

如果您想在初始安装时使用Drupal 8,请执行以下操作

  1. config.yml 中设置 drupal_major_version: 8
  2. config.yml 中设置 drupal_composer_project_package: "drupal/recommended-project:^8@dev"

如果您想在初始安装时使用Drupal 7,请执行以下操作

  1. 切换到使用Drush Make文件
  2. 更新您的 drupal.make.yml 文件中的 Drupal versioncore
  3. config.yml 中设置 drupal_major_version: 7

快速入门指南

本快速入门指南将帮助您在Drupal VM上快速构建一个Drupal 9站点,创建一个新的Composer项目。您还可以使用Drupal VM与ComposerDrush Make文件本地Drupal代码库或甚至Drupal多站安装

如果您想轻松地在本地安装Drupal站点,只需

  1. 安装VagrantVirtualBox
  2. 将此项目下载到您的工作站上。
  3. 进入此项目目录并运行vagrant up

但Drupal VM允许您以您喜欢的方式构建您的站点,使用您需要的任何工具,具有几乎无限的可灵活性和定制性!

1 - 安装Vagrant和VirtualBox

下载并安装VagrantVirtualBox

您还可以使用Parallels或VMware等其他提供程序。(Parallels Desktop 11+需要“Pro”或“Business”版本以及Parallels Provider,VMware需要付费的Vagrant VMware集成插件)。

注意

  • 为了加快配置速度(仅限macOS/Linux):在您的宿主机上安装Ansible,以便Drupal VM可以在本地而不是在虚拟机内部运行配置步骤。
  • 为了稳定性:由于每个版本的VirtualBox都会对网络进行更改,为了最佳稳定性,您应该安装Vagrant的vbguest插件:vagrant plugin install vagrant-vbguest
  • Linux上的NFS如果您的宿主机上尚未安装NFS,则需要安装它才能使用默认的NFS同步文件夹配置。请参阅Linux上的nfs说明
  • 版本确保您正在运行Vagrant、VirtualBox和Ansible的最新版本——截至2020年,Drupal VM建议:Vagrant 2.2.x、VirtualBox 6.1.x和Ansible 2.9.x

2 - 构建虚拟机

  1. 下载此项目并将其放置在您想要的位置。
  2. (可选)将default.config.yml复制到config.yml,并根据您的喜好进行修改。
  3. 创建一个本地目录,其中将安装Drupal,并在config.yml中配置到该目录的路径(local_path,位于vagrant_synced_folders内)。
  4. 打开终端,cd到此目录(包含Vagrantfile和此README文件)。
  5. 输入 vagrant up,让 Vagrant 展示它的魔法。

一旦过程完成,你将在项目的 drupal/ 目录中拥有一个 Drupal 代码库。

注意:如果在运行 vagrant up 的过程中出现任何错误,并且它将你带回命令提示符,只需运行 vagrant provision 以继续从你离开的地方构建 VM。如果这样做几次后仍然出现错误,请在此项目的 GitHub 问题队列中发布一个错误。

3 - 访问 VM。

打开你的浏览器,访问 http://drupalvm.test/。管理员账户的默认登录名和密码都是 admin

注意:默认情况下,Drupal VM 配置为使用 192.168.88.88 作为其 IP 地址,如果你正在运行多个 VM,则 auto_network 插件(vagrant plugin install vagrant-auto_network)可以帮助你管理 IP 地址,如果你在 config.yml 中设置 vagrant_ip0.0.0.0

额外软件/实用工具

默认情况下,这个 VM 包含了在 config.yml 选项 installed_extras 中列出的额外内容。

installed_extras:
  - adminer
  # - blackfire
  # - drupalconsole
  - drush
  # - elasticsearch
  # - java
  - mailhog
  # - memcached
  # - newrelic
  # - nodejs
  - pimpmylog
  # - redis
  # - ruby
  # - selenium
  # - solr
  # - tideways
  # - upload-progress
  - varnish
  # - xdebug
  # - xhprof

如果你不需要或不需要这些额外内容之一或多个,只需从列表中删除它们或将其注释掉。这有助于如果你想要减少 PHP 内存使用量或以其他方式节约系统资源。

使用 Drupal VM

Drupal VM 是为了与每个开发者的工作流程集成而构建的。关于使用 Drupal VM 进行常见开发任务的许多指南都可在 Drupal VM 文档站点 上找到。

更新 Drupal VM

Drupal VM 遵循语义版本控制,这意味着你的配置应该在整个主要发布周期中继续工作(可能需要非常小的修改)。以下是更新 Drupal VM 之间的次要版本时需要遵循的过程

  1. 阅读 发行说明 并添加/修改其中提到的 config.yml 变量。
  2. 对你的 config.yml 与更新的 default.config.yml 进行比较(例如,curl https://raw.githubusercontent.com/geerlingguy/drupal-vm/master/default.config.yml | git diff --no-index config.yml -)。
  3. 运行 vagrant provision 以配置 VM,并纳入所有最新更改。

对于主要版本升级(例如,4.x.x 到 5.x.x),销毁 VM(vagrant destroy)然后使用新版本的 Drupal VM 构建一个新的 VM(vagrant up)可能更简单。

系统要求

Drupal VM 在几乎所有可以运行 VirtualBox 和 Vagrant 的现代计算机上运行,然而为了获得最佳的开箱即用体验,建议您的计算机至少具备

  • 启用 VT-x 的 Intel Core 处理器
  • 至少 4 GB RAM(越多越好)
  • SSD(用于提高同步文件夹的速度)

其他注意事项

  • 要关闭虚拟机,请在包含 Vagrantfile 的文件夹中的终端中输入 vagrant halt。要完全销毁它(如果您想节省一些磁盘空间或希望从 vagrant up 重新开始),请输入 vagrant destroy
  • 要登录到虚拟机,请输入 vagrant ssh。您还可以使用 vagrant ssh-config 获取机器的 SSH 连接详细信息。
  • 当您重建 VM(例如,vagrant destroy 然后另一个 vagrant up)时,请确保清除您主机机器上 drupal 文件夹的内容,否则当 VM 重建时 Drupal 将返回一些错误(它不会干净地重新安装 Drupal)。
  • 您可以通过编辑 config.yml 中的变量来更改安装的 Drupal 或 drush 版本或任何其他配置选项。
  • 在本演示文稿中了解有关使用Vagrant + VirtualBox + Ansible进行本地开发的更多信息: 本地开发环境 - Vagrant, VirtualBox 和 Ansible
  • 通过阅读Ansible for DevOps了解Ansible如何加速您的创新能力并管理您的基础设施。

测试

使用Docker和Molecule运行基本集成测试

  1. 安装Docker.
  2. 安装Molecule: pip3 install ansible molecule[docker]
  3. 在此项目目录下,运行:composer run-tests

项目自动化测试通过GitHub Actions运行,更全面的测试套件涵盖了多个Linux发行版以及许多不同的Drupal VM用例和部署技术。

许可

本项目采用MIT开源许可。

关于作者

Jeff Geerling于2014年创建了Drupal VM,旨在提高Drupal站点的效率以及核心/贡献开发工作流程。此项目在Ansible for DevOps中作为示例。