如何使用 Docker 和 DDEV 在本地机器上开发 Drupal 9 网站

作者选择了 多样性在技术基金作为 写给捐款计划的一部分接受捐款。

介绍

DDEV是一个开源工具,使用Docker为许多不同的PHP框架构建本地开发环境。使用集装箱化的能力,DDEV可以大大简化你如何在使用多个技术堆栈和多个云服务器的多个项目上工作。

Drupal 9于2020年6月3日发布,用于Drupal CMS. 以其易于使用和庞大的模块和主题库而闻名,Drupal是一个流行的PHP框架,用于构建和维护各种网站和各种规模的应用程序。

在本教程中,您将开始在使用DDEV的本地机器上开发Drupal 9网站,这将允许您先构建您的网站,然后稍后,当您准备好时,将您的项目部署到生产服务器上。

前提条件

要完成本教程,您将需要:

  • 联合国 运行 Linux 或 macOS 的本地机器
  • ** 对于macOS** : [Homebrew包管理器] (https://docs.brew.sh/Installation),您将使用它来安装DDEV. 要在您的本地机器上安装 Homebrew, 请遵循 [** 第 步 —— 安装和设置 Homebrew** 在这个Ruby 教程 (https://andsky.com/tech/tutorials/how-to-install-ruby-and-set-up-a-local-programming-environment-on-macos# step-3-%E2%80%94-installing-and-setting-up-homebrew).
  • [Docker] (https://docs.docker.com/engine/)和被安装在您本地机器上的 [Docker Corpose] (https://docs.docker.com/compose/).
  • ** 对于Linux** : 您可以在此两个教程后安装多克和多克编曲:[如何安装和使用多克 (https://www.digitalocean.com/community/tutorial_collections/how-to-install-and-use-docker)和[如何安装多克编曲] (https://www.digitalocean.com/community/tutorial_collections/how-to-install-docker-compose). 从列表中选择您的 Linux 分布并遵循包含的指令 。
  • ** 对于macOS** : Docker Compose以前是作为Docker工具箱的一部分提供的,但Docker Toolbox现在是一个遗留解决方案. 今天,多克正式建议您安装多克桌面,其中包括 [多克编译 (https://docs.docker.com/compose/), [多克引擎 (https://docs.docker.com/engine/)等. [遵循多克在macOS上安装多克桌面的官方指南] (https://docs.docker.com/docker-for-mac/install/). 更多信息[您可以读取正式的 Docker 桌面获得启动导 (https://docs.docker.com/docker-for-mac/). 如果您之前使用多克工具箱安装了各种多克工具,则您可以读取关于多克工具箱和多克桌面之间差异以及它们如何共存的正式文章. .

<美元 > [注] ** 说明:** 可以在远程服务器上使用 DDEV 开发 Drupal 9, 但是您需要一个在网页浏览器中访问localhost 的解决方案 。 DDEV命令ddev sharengrok合作,为您和其他利害关系方在您的服务器上创建安全通道来查看您的开发站点. 为了个人使用,您还可以在您的远程服务器上安装一个GUI,并通过该界面内的网页浏览器访问您的开发站点. 为此,你可以遵循我们的指南如何在Ubuntu 20.04上安装和配置VNC。 对于更快的GUI解决方案,您可以遵循[我们关于如何在Ubuntu 20.04上设置 X2Go 远程桌面的指南 (https://andsky.com/tech/tutorials/how-to-set-up-a-remote-desktop-with-x2go-on-ubuntu-20-04). < $ > (美元)

步骤 1 — 安装 DDEV

在此步骤中,您将在本地计算机上安装 DDEV。 选项 1 包含 macOS 的指示,而选项 2 提供了 Linux 的指示. 本教程已在 DDEV 版本 1.15.0 上测试。

选项 1 — 在 macOS 上安装 DDEV

DDEV 建议 macOS 用户使用 Homebrew 包管理器来安装他们的工具。

1brew tap drud/ddev && brew install drud/ddev/ddev

如果您更喜欢绝对最新版本,您可以使用brew来安装ddev-edge:

1brew tap drud/ddev-edge && brew install drud/ddev-edge/ddev

如果您已经安装了 DDEV 版本,或者您想更新您的版本,请关闭 DDEV 并使用brew来更新您的安装:

1ddev poweroff
2brew upgrade ddev

安装或更新 DDEV 后,运行ddev 版本来验证您的软件:

1ddev version

你会看到这样的输出:

 1[secondary_label Output]
 2DDEV-Local version	v1.15.0
 3commit            	v1.15.0
 4db                	drud/ddev-dbserver-mariadb-10.2:v1.15.0
 5dba               	phpmyadmin/phpmyadmin:5
 6ddev-ssh-agent    	drud/ddev-ssh-agent:v1.15.0
 7docker            	19.03.8
 8docker-compose    	1.25.5
 9os                	darwin
10router            	drud/ddev-router:v1.15.0
11web               	drud/ddev-webserver:v1.15.0

DDEV 包含一个强大的 CLI 或命令行接口. 运行ddev来了解一些常见的命令:

1ddev

您将看到以下结果:

 1[secondary_label Output]
 2Create and maintain a local web development environment.
 3Docs: https://ddev.readthedocs.io
 4Support: https://ddev.readthedocs.io/en/stable/#support
 5
 6Usage:
 7  ddev [command]
 8
 9Available Commands:
10  auth A collection of authentication commands
11  composer Executes a composer command within the web container
12  config Create or modify a ddev project configuration in the current directory
13  debug A collection of debugging commands
14  delete Remove all project information (including database) for an existing project
15  describe Get a detailed description of a running ddev project.
16  exec Execute a shell command in the container for a service. Uses the web service by default.
17  export-db Dump a database to a file or to stdout
18  help Help about any command
19  hostname Manage your hostfile entries.
20  import-db Import a sql file into the project.
21  import-files Pull the uploaded files directory of an existing project to the default public upload directory of your project.
22  list List projects
23  logs Get the logs from your running services.
24  pause uses 'docker stop' to pause/stop the containers belonging to a project.
25  poweroff Completely stop all projects and containers
26  pull Pull files and database using a configured provider plugin.
27  restart Restart a project or several projects.
28  restore-snapshot Restore a project's database to the provided snapshot version.
29  sequelpro This command is not available since sequel pro.app is not installed
30  share Share project on the internet via ngrok.
31  snapshot Create a database snapshot for one or more projects.
32  ssh Starts a shell session in the container for a service. Uses web service by default.
33  start Start a ddev project.
34  stop Stop and remove the containers of a project. Does not lose or harm anything unless you add --remove-data.
35  version print ddev version and component versions
36
37Flags:
38  -h, --help help for ddev
39  -j, --json-output If true, user-oriented output will be in JSON format.
40  -v, --version version for ddev
41
42Use "ddev [command] --help" for more information about a command.

有关使用DDEV CLI的更多信息,请访问官方DDEV文档(https://ddev.readthedocs.io/en/stable/users/cli-usage/)。

随着DDEV安装在本地机器上,您现在已经准备好安装Drupal 9并开始开发网站。

选项 2 — 在 Linux 上安装 DDEV

在 Linux 操作系统上,您可以使用 Homebrew for Linux 或使用官方安装脚本安装 DDEV. 在 Ubuntu 上,请从apt包管理器中更新您的包列表(在 Debian 中,您可以使用apt,否则可以使用与您的 Linux 发行版相关的相应包管理器):

1sudo apt update

现在从Ubuntu的官方存储库中安装一些先决条件包:

1sudo apt install build-essential apt-transport-https ca-certificates software-properties-common curl

这些包将允许您从其官方GitHub存储库下载DDEV安装脚本。

现在下载脚本:

1curl -O https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh

在运行脚本之前,请在nano或您喜欢的文本编辑器中打开它,并检查其内容:

1nano install_ddev.sh

一旦你已经审查了脚本的内容,你很满意,保存和关闭文件. 现在你已经准备好运行安装脚本。

使用chmod命令来执行脚本:

1chmod +x install_ddev.sh

现在运行剧本:

1./install_ddev.sh

安装过程可能会要求您确认某些设置或输入您的sudo密码. 安装完成后,您将在 Linux 操作系统上使用 DDEV。

运行ddev 版本来验证您的软件:

1ddev version

你会看到这样的输出:

 1[secondary_label Output]
 2DDEV-Local version	v1.15.0
 3commit            	v1.15.0
 4db                	drud/ddev-dbserver-mariadb-10.2:v1.15.0
 5dba               	phpmyadmin/phpmyadmin:5
 6ddev-ssh-agent    	drud/ddev-ssh-agent:v1.15.0
 7docker            	19.03.8
 8docker-compose    	1.25.5
 9os                	linux
10router            	drud/ddev-router:v1.15.0
11web               	drud/ddev-webserver:v1.15.0

DDEV是一个强大的CLI,或命令行界面。运行ddev没有其他东西来了解一些常见的命令:

1ddev

您将看到以下结果:

 1[secondary_label Output]
 2Create and maintain a local web development environment.
 3Docs: https://ddev.readthedocs.io
 4Support: https://ddev.readthedocs.io/en/stable/#support
 5
 6Usage:
 7  ddev [command]
 8
 9Available Commands:
10  auth A collection of authentication commands
11  composer Executes a composer command within the web container
12  config Create or modify a ddev project configuration in the current directory
13  debug A collection of debugging commands
14  delete Remove all project information (including database) for an existing project
15  describe Get a detailed description of a running ddev project.
16  exec Execute a shell command in the container for a service. Uses the web service by default.
17  export-db Dump a database to a file or to stdout
18  help Help about any command
19  hostname Manage your hostfile entries.
20  import-db Import a sql file into the project.
21  import-files Pull the uploaded files directory of an existing project to the default public upload directory of your project.
22  list List projects
23  logs Get the logs from your running services.
24  pause uses 'docker stop' to pause/stop the containers belonging to a project.
25  poweroff Completely stop all projects and containers
26  pull Pull files and database using a configured provider plugin.
27  restart Restart a project or several projects.
28  restore-snapshot Restore a project's database to the provided snapshot version.
29  sequelpro This command is not available since sequel pro.app is not installed
30  share Share project on the internet via ngrok.
31  snapshot Create a database snapshot for one or more projects.
32  ssh Starts a shell session in the container for a service. Uses web service by default.
33  start Start a ddev project.
34  stop Stop and remove the containers of a project. Does not lose or harm anything unless you add --remove-data.
35  version print ddev version and component versions
36
37Flags:
38  -h, --help help for ddev
39  -j, --json-output If true, user-oriented output will be in JSON format.
40  -v, --version version for ddev
41
42Use "ddev [command] --help" for more information about a command.

有关使用DDEV CLI的更多信息,请访问官方DDEV文档(https://ddev.readthedocs.io/en/stable/users/cli-usage/)。

随着DDEV安装在本地机器上,您现在已经准备好部署Drupal 9并开始开发网站。

步骤 2 — 使用DDEV部署一个新的Drupal 9网站

随着DDEV运行,您现在将使用它创建一个特定的Drupal文件系统,安装Drupal 9,然后启动标准的网站项目。

首先,您将创建一个项目根目录,然后移动到其内部. 您将从这个位置运行所有剩余的命令. 本教程将使用d9test,但您可以自由地命名您的目录。

创建您的项目根目录,并导航内部:

1mkdir d9test
2cd d9test

DDEV擅长创建与特定CMS平台相匹配的目录树使用ddev config命令创建特定的Drupal 9目录结构:

1ddev config --project-type=drupal9 --docroot=web --create-docroot

你会看到这样的输出:

 1[secondary_label Output]
 2Creating a new ddev project config in the current directory (/Users/sammy/d9test)
 3Once completed, your configuration will be written to /Users/sammy/d9test/.ddev/config.yaml
 4
 5Created docroot at /Users/sammy/d9test/web
 6You have specified a project type of drupal9 but no project of that type is found in /Users/sammy/d9test/web
 7Ensuring write permissions for d9new
 8No settings.php file exists, creating one
 9Existing settings.php file includes settings.ddev.php
10Configuration complete. You may now run 'ddev start'.

由于您将 --project-type=drupal9 传输到您的 ddev config 命令中,DDEV 创建了几个子目录和文件,这些文件代表了 Drupal 网站的默认组织。

 1[label A Drupal 9 directory tree]
 2.
 3├── .ddev
 4│   ├── .gitignore
 5│   ├── config.yaml
 6│   ├── db-build
 7│   │   └── Dockerfile.example
 8│   └── web-build
 9│       └── Dockerfile.example
10└── web
11    └── sites
12        └── default
13            ├── .gitignore
14            ├── settings.ddev.php
15            └── settings.php
16
176 directories, 7 files

.ddev/ 将是 ddev 配置的主要文件夹. web/ 将是您新项目的docroot;它将包含几个特定的 settings. 文件。

您的下一步是初始化您的平台,这将构建必要的容器和网络配置。DDEV连接到端口80443,所以如果您在计算机上运行像Apache这样的Web服务器,或者其他任何使用这些端口的东西,请在继续之前停止这些服务。

使用ddev start命令来初始化您的平台:

1ddev start

这将为您的项目构建所有基于 Docker 的容器,其中包括 Web 容器、数据库容器和 phpmyadmin

1...
2[secondary_label Output]
3Successfully started d9test
4Project can be reached at http://d9test.ddev.site http://127.0.0.1:32773

<$>[注] 注: 请记住,DDEV 在幕后启动 Docker 容器,如果您想查看这些容器或验证它们正在运行,您可以随时使用docker ps命令:

1docker ps

除了你目前正在运行的任何其他容器之外,你还会发现四个新的容器,每个容器都运行着不同的图像:php-myadmin、ddev-webserver、ddev-router 和 ddev-dbserver-mariadb。

" ddev start " 已成功构建了您的容器,并给了您一个带有两个URL的输出. 虽然这个产出说,你的项目可以在http://d9test.ddev.sitehttp://127.0.0.1:32773'上达到,但现在访问这些URL将产生一个错误。 从Drupal 8开始,Drupal核心和集合模块像依赖性一样发挥功能. 因此,您首先需要使用 PHP 项目的软件包管理器 [Composer] (https://getcomposer.org/] 完成安装 Drupal, 然后再在您的网页浏览器中加载任何内容 .

DDEV最有用和最优雅的特征之一是,你可以通过DDEV CLI传递作曲器命令并进入你的容器化环境. 这意味着你可以将机器的具体配置与你的开发环境相分离. 您不再需要管理通常伴随本地 PHP 开发的各种文件路径、 依赖性和版本问题 。 此外,您可以使用不同的框架和技术堆栈在多个项目之间快速进行上下文切换,尽量不费力.

使用ddev composer命令下载drupal/recommended-project。这将下载Drupal核心,其库和其他相关资源,然后创建默认项目:

1ddev composer create "drupal/recommended-project"

现在下载一个名为 Drush的最终组件,或Drupal Shell. 本教程只使用一个drush命令,本教程提供了一个替代方案,但drush是Drupal开发的强大CLI,可以提高您的效率。

使用ddev composer来安装drush:

1ddev composer require "drush/drush"

您现在已经建立了默认的Drupal 9项目并安装了drush,现在您将在浏览器中查看您的项目并配置您的网站的设置。

步骤 3 — 配置您的 Drupal 9 项目

现在你已经安装了Drupal 9,你可以在浏览器中访问你的新项目. 要做到这一点,你可以重新启动ddev start并复制它输出的两个URL之一,或者你可以使用以下命令,该命令将自动在新的浏览器窗口中启动你的网站:

1ddev launch

你会遇到标准的 Drupal 安装向导。

Drupal 9 installer from browser

你可以使用这个用户界面并按照导游通过安装,或者你可以返回你的终端并通过ddev传递一个drush命令。

选项 1 — 使用魔法师

返回浏览器中的向导 。 在Choose语言 下从下放菜单中选择一种语言并点击** Save并接下去** . 现在选择一个安装配置 。 你可以在** 标准** ,** minimal** 和** Demo** 中选择. 作出选择,然后点击 ** 保存和继续 ** 。 德鲁帕尔将自动验证您的要求,建立数据库并安装您的站点. 您的最后一步是定制一些配置 。 添加站点名称和结束于您域的站点电子邮件地址 。 然后选择一个用户名和密码. 选择一个强大的密码 并保持您的证书安全的地方。 最后,增加一个私人电子邮件地址,定期检查、填入区域设置,并按** 保存并继续** .

Drupal 9 welcome message with a warning about permissions

您的新网站将加载一个欢迎消息。

选项 2 — 使用命令行

从项目的 root 目录中运行此ddev exec命令以使用drush安装默认的 Drupal 网站:

1ddev exec drush site:install --account-name=admin --account-pass=admin

这将创建您的网站,就像向导一样,但有一些锅炉配置. 您的用户名和密码将是admin

现在启动网站以在您的浏览器中查看它:

1ddev launch

您现在已经准备好开始构建您的网站,但它被认为是最佳的做法,以检查您的权限是正确的/sites/web/default目录. 当您在本地工作时,这不是一个重大问题,但如果您将这些权限转移到生产服务器,他们将构成安全风险。

步骤 4 — 检查您的权限

在导游安装过程中,或者当您的欢迎页面首次加载时,您可能会在您的/sites/web/default目录中看到有关权限设置的警告,以及该目录中的一个文件:settings.php

安装脚本运行后,Drupal 将尝试将web/sites/default目录权限设置为阅读执行所有组(https://www.drupal.org/docs/7/install/step-3-create-settingsphp-and-the-files-directory):这是一个555权限设置。它还将尝试将default/settings.php的权限设置为只读444。 如果您遇到此警告,请从项目的根目录中运行这两个chmod命令。

1chmod 555 web/sites/default
2chmod 444 web/sites/default/settings.php

要验证您有正确的权限,请使用a,l,hd交换机运行此ls命令:

1ls -alhd web/sites/default web/sites/default/settings.php

检查您的权限是否匹配以下输出:

1[secondary_label Output]
2dr-xr-xr-x 8 sammy staff 256 Jul 21 12:56 web/sites/default
3-r--r--r-- 1 sammy staff 249 Jul 21 12:12 web/sites/default/settings.php

您现在已经准备好在本地机器上开发一个Drupal 9网站。

步骤5 —在Drupal中创建你的第一个帖子

要测试Drupal的一些功能,您现在将使用Web UI创建一个帖子。

从您的网站的首页,点击上菜单的左边边的 ** 内容 ** 按钮. 现在点击蓝色 ** 添加内容 ** 按钮. 将出现一个新页面. 点击 ** 文章 ** 并出现另一个页面。

Drupal 9 Create Article Prompt

添加任何您喜欢的标题和内容. 您也可以添加图像,例如 DigitalOcean的壁纸之一. 完成后,点击蓝色 保存 按钮。

你的第一个帖子将出现在你的网站上。

Drupal 9 Created Post

现在,您正在在本地机器上开发一个Drupal 9网站,而无需与服务器进行互动,这要归功于Docker和DDEV。

步骤6 —管理DDEV容器

当您完成开发项目时,或者当您想要休息时,您可以停止您的 DDEV 容器,而不必担心数据丢失。DDEV 可以管理许多项目的快速背景切换,这是其最有用的功能之一。

要释放资源,您可以随时停止 DDEV. 从项目的根目录中运行以下命令:

1ddev stop

DDEV在全球范围内可用,因此您可以从任何地方运行ddev命令,只要您指定了DDEV项目:

1ddev stop d9test

您还可以使用ddev列表同时查看所有项目:

1ddev list

DDEV包括许多其他有用的命令

您可以随时重新启动DDEV并继续本地开发。

结论

在本教程中,您使用了Docker和集装箱化的力量,以DDEV的帮助本地开发Drupal网站 DDEV也与众多IDE很好地集成,并为 Atom, PHPStormVisual Studio Code (vscode)提供内置的PHP调试。

Published At
Categories with 技术
comments powered by Disqus