Tutorial

Создание сайта Drupal 9 на локальном компьютере с помощью Docker и DDEV

Published on September 11, 2020
Русский
Создание сайта Drupal 9 на локальном компьютере с помощью Docker и DDEV

Автор выбрал Diversity in Tech Fund для получения пожертвования в рамках программы Write for DOnations.

Введение

DDEV — это инструмент с открытым исходным кодом, использующий Docker для создания локальной среды разработки для различных структур PHP. Благодаря возможностям контейнеризации DDEV может существенно упростить работу над несколькими проектами, использующими разные технологические комплексы и несколько облачных серверов. В состав DDEV входят шаблоны для WordPress, Laravel, Magento, TYPO3, Drupal и т. д.

Версия Drupal 9 была выпущена 3 июня 2020 г. для Drupal CMS. Drupal — это популярная структура PHP для создания и обслуживания сайтов и приложений любого масштаба, отличающаяся удобством использования и большой библиотекой модулей и тем.

В этом обучающем модуле вы начнете создавать сайт Drupal 9 на своем локальном компьютере, используя DDEV. Это позволит вам сначала создать свой сайт, а затем, когда вы будете готовы, развернуть проект на производственном сервере.

Предварительные требования

Для данного обучающего руководства вам потребуется следующее:

Примечание. Вы можете создать сайт Drupal 9 с помощью DDEV на удаленном сервере, но в этом случае вам потребуется решение для доступа к localhost в браузере. Команда DDEV ddev share работает с ngrok, создавая защищенный туннель к серверу для вас и других пользователей для просмотра сайта в разработке. Для личного использования вы также можете установить графический пользовательский интерфейс на удаленном сервере и подключаться к сайту в разработке через браузер, используя этот интерфейс. Для этого следуйте указаниям руководства по установке и настройке VNC в Ubuntu 20.04. Чтобы графический пользовательский интерфейс был еще быстрее, следуйте указаниям нашего руководства по настройке удаленного рабочего места с помощью X2Go в Ubuntu 20.04.

Шаг 1 — Установка DDEV

На этом шаге мы установим DDEV на локальный компьютер. Вариант 1 содержит инструкции для macOS, а Вариант 2 — инструкции для Linux. Мы тестировали этот обучающий модуль с DDEV версии 1.15.0.

Вариант 1 — Установка DDEV в macOS

DDEV рекомендует пользователям macOS использовать для установки инструмента диспетчер пакетов Homebrew. Используйте следующую команду brew для установки последнего стабильного выпуска:

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

Если вы предпочитаете абсолютно новейшую версию, вы можете использовать brew для установки ddev-edge:

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

Если у вас уже установлена версия DDEV или вы хотите обновить имеющуюся версию, закройте DDEV и используйте brew для обновления установки:

  1. ddev poweroff
  2. brew upgrade ddev

После установки или обновления DDEV используйте команду ddev version для проверки вашего программного обеспечения:

  1. ddev version

Результат должен будет выглядеть следующим образом:

Output
DDEV-Local version v1.15.0 commit v1.15.0 db drud/ddev-dbserver-mariadb-10.2:v1.15.0 dba phpmyadmin/phpmyadmin:5 ddev-ssh-agent drud/ddev-ssh-agent:v1.15.0 docker 19.03.8 docker-compose 1.25.5 os darwin router drud/ddev-router:v1.15.0 web drud/ddev-webserver:v1.15.0

DDEV включает мощный инструмент CLI (или интерфейс командной строки). Запустите ddev, чтобы узнать о самых распространенных командах:

  1. ddev

Результат будет выглядеть следующим образом:

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

Дополнительную информацию об использовании DDEV CLI можно найти в официальной документации по DDEV.

После установки DDEV на локальном компьютере вы будете готовы установить Drupal 9 и начать разработку сайта.

Вариант 2 — Установка DDEV в Linux

В операционной системе Linux вы можете установить DDEV, используя Homebrew для Linux или официальный скрипт для установки. Для начала обновите в Ubuntu список пакетов в диспетчере пакетов apt (вы можете использовать apt в Debian или аналогичный диспетчер пакетов для вашего дистрибутива Linux):

  1. sudo apt update

Установите обязательные пакеты из официального репозитория Ubuntu:

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

Эти пакеты позволят вам загрузить сценарий установки DDEV из официального репозитория на GitHub.

Загрузите скрипт:

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

Перед запуском скрипта откройте его в nano или предпочитаемом текстовом редакторе и проверьте его содержимое:

nano install_ddev.sh

Просмотрев и проверив содержание скрипта, сохраните и закройте файл. Теперь вы готовы запустить установочный скрипт.

Используйте команду chmod, чтобы сделать скрипт исполняемым:

  1. chmod +x install_ddev.sh

Запустите скрипт:

  1. ./install_ddev.sh

В процессе установки вам может понадобиться подтвердить некоторые настройки или ввести пароль пользователя sudo. После завершения установки DDEV будет доступен в вашей операционной системе Linux.

Запустите команду ddev version для проверки программного обеспечения:

  1. ddev version

Результат должен будет выглядеть следующим образом:

Output
DDEV-Local version v1.15.0 commit v1.15.0 db drud/ddev-dbserver-mariadb-10.2:v1.15.0 dba phpmyadmin/phpmyadmin:5 ddev-ssh-agent drud/ddev-ssh-agent:v1.15.0 docker 19.03.8 docker-compose 1.25.5 os linux router drud/ddev-router:v1.15.0 web drud/ddev-webserver:v1.15.0

DDEV — мощный инструмент CLI (интерфейс командной строки). Запустите команду ddev без опций, чтобы узнать о некоторых распространенных командах:

  1. ddev

Результат будет выглядеть следующим образом:

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

Дополнительную информацию об использовании DDEV CLI можно найти в официальной документации по DDEV.

После установки DDEV на локальном компьютере вы будете готовы установить Drupal 9 и начать разработку сайта.

Шаг 2 — Развертывание нового сайта Drupal 9 с помощью DDEV

Запустив DDEV, вы можете использовать его для создания файловой системы Drupal, установки Drupal 9 и создания стандартного проекта сайта.

Вначале мы создадим корневой каталог проекта и перейдем в него. Все остальные команды мы будем запускать отсюда. В этом обучающем модуле мы будем использовать имя каталога d9test, но вы можете выбрать любое предпочитаемое имя. Обратите внимание, что DDEV не очень хорошо обрабатывает имена с дефисами. Желательно избегать использования таких имен каталогов, как my-project или drupal-site-1.

Создайте корневой каталог проекта и перейдите в него:

  1. mkdir d9test
  2. cd d9test

DDEV отлично создает деревья каталогов, соответствующие определенным платформам CMS. Используйте команду ddev config для создания специальной структуры каталогов для Drupal 9:

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

Результат должен будет выглядеть следующим образом:

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

Поскольку вы передали аргумент --project-type=drupal9 в команду ddev config, DDEV создаст несколько подкаталогов и файлов, используемых по умолчанию для организации сайта Drupal. Ваше дерево каталогов проекта теперь будет выглядеть так:

A Drupal 9 directory tree
.
├── .ddev
│   ├── .gitignore
│   ├── config.yaml
│   ├── db-build
│   │   └── Dockerfile.example
│   └── web-build
│       └── Dockerfile.example
└── web
    └── sites
        └── default
            ├── .gitignore
            ├── settings.ddev.php
            └── settings.php

6 directories, 7 files

.ddev/ будет главной папкой для конфигурации ddev. web/ будет корневым каталогом документов нового проекта и будет содержать определенные файлы settings. Вы подготовили структуру для создания нового проекта Drupal.

Следующим шагом будет инициализация платформы, когда мы создадим необходимые контейнеры и сетевые конфигурации. DDEV выполняет привязку к портам 80 и 443, и если вы используете на своем компьютере веб-сервер Apache или другие веб-серверы или службы, использующие эти порты, остановите эти службы, прежде чем продолжать.

Используйте команду ddev start для инициализации платформы:

  1. ddev start

Эта команда создаст все контейнеры Docker для вашего проекта, включая веб-контейнер, контейнер базы данных и phpmyadmin. После инициализации вы увидите следующий вывод (номер порта может отличаться):

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

Примечание. Помните, что DDEV запускает контейнеры Docker скрыто. Если вы хотите просмотреть эти контейнеры или убедиться, что они работают, используйте команду docker ps:

  1. docker ps

Вместе с другими запущенными контейнерами вы увидите четыре новых контейнера с отдельными образами: php-myadmin, ddev-webserver, ddev-router и ddev-dbserver-mariadb.

Команда ddev start успешно построила контейнеры и вывела результаты с двумя URL. Хотя в выводимом сообщении говорится, что проект можно найти по URL-адресам http://d9test.ddev.site и http://127.0.0.1:32773, сейчас при попытке открыть любой из этих URL будет выведено сообщение об ошибке. Начиная с Drupal 8, ядро Drupal и модули contrib работают как зависимости. Поэтому нужно предварительно завершить установку Drupal с помощью диспетчера пакетов Composer для проектов PHP, прежде чем в браузере получится что-либо загрузить.

Одна из самых полезных и элегантных возможностей DDEV — возможность передачи команд Composer через DDEV CLI и в среду с контейнерами. Это означает, что вы можете отделить конфигурацию вашего компьютера от среды разработки. Вам больше не нужно будет управлять путями к различным файлам и зависимостями или решать проблемы с версиями, часто возникающие при разработке PHP на локальном компьютере. Более того, вы сможете быстро и с минимумом трудозатрат переключаться между разными проектами, использующими разные структуры и технологические комплексы.

Используйте команду ddev composer для загрузки проекта drupal/recommended-project. Она загрузит ядро Drupal, библиотеки и другие связанные ресурсы, а затем создаст проект по умолчанию:

  1. ddev composer create "drupal/recommended-project"

Загрузите заключительный компонент Drush (оболочка Drupal). В этом обучающем модуле мы будем использовать только одну команду drush и предложим альтернативный вариант, но в целом drush — это мощный интерфейс командной строки для разработки Drupal, который может повысить эффективность вашей работы.

Используйте команду ddev composer для установки drush:

  1. ddev composer require "drush/drush"

Мы создали проект Drupal 9 по умолчанию и выполнили установку drush. Теперь мы откроем проект в браузере и настроим параметры сайта.

Шаг 3 — Настройка проекта Drupal 9

Вы установили Drupal 9 и теперь можете открыть свой новый проект в браузере. Для этого вы можете повторно запустить команду ddev start и скопировать один из двух выводимых ей URL, или использовать следующую команду, которая автоматически откроет ваш сайт в новом окне браузера:

  1. ddev launch

Откроется стандартный мастер установки Drupal.

Установщик Drupal 9 из браузера

Теперь у вас есть два варианта. Вы можете использовать этот пользовательский интерфейс и следовать указаниям мастера по установке, или вы можете вернуться в терминал и передать команду drush через ddev. Последний вариант автоматизирует процесс установки и задает admin как имя пользователя и пароль.

Вариант 1 — Использование мастера

Снова откройте мастер в браузере. В разделе Choose language (Выбор языка) выберите язык из выпадающего меню и нажмите Save and continue (Сохранить и продолжить). Выберите профиль установки. Вы можете выбрать вариант Standard (Стандартный), Minimal (Минимальный) или Demo (Демо). Сделайте выбор и нажмите Save and continue (Сохранить и продолжить). Drupal автоматически проверит ваши требования, настроит базу данных и установит ваш сайт. Последним шагом будет настройка нескольких конфигураций. Добавьте имя сайта и адрес электронной почты сайта с вашим доменом. Затем выберите имя пользователя и пароль. Выберите надежный пароль и сохраните ваши учетные данные в безопасном месте. В заключение добавьте частный адрес электронной почты, который вы регулярно проверяете, внесите региональные настройки и нажмите Save and continue (Сохранить и продолжить).

Приветственное сообщение Drupal 9 с предупреждением о разрешениях

Ваш новый сайт загрузится и выведет приветственное сообщение.

Вариант 2 — Использование командной строки

Запустите в корневом каталоге проекта следующую команду ddev exec для установки сайта Drupal по умолчанию с помощью drush:

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

Сайт будет создан так же, как и при использовании мастера, но с некоторыми базовыми конфигурациями. Для имени пользователя и пароля будет установлено значение admin.

Запустите сайт для просмотра в браузере:

  1. ddev launch

Теперь вы готовы начать создание своего сайта, но предварительно рекомендуется проверить наличие правильных разрешений для каталога /sites/web/default. При локальной работе это не составляет существенной проблемы, но если вы перенесете эти разрешения на производственный сервер, возникнет риск для безопасности.

Шаг 4 — Проверка разрешений

Во время установки мастера или при первой загрузке приветственной страницы вы можете увидеть предупреждение о настройках разрешений для каталога /sites/web/default и одного файла внутри этого каталога: settings.php.

После запуска установочного скрипта Drupal попробует установить для каталога web/sites/default разрешения на чтение и исполнение для всех групп: это параметр разрешений 555. Также он попытается установить для default/settings.php разрешение «только чтение» или 444. Если вы увидите это предупреждение, запустите эти две команды chmod из корневого каталога проекта. В противном случае возникнет риск для безопасности:

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

Чтобы убедиться в наличии правильных разрешений, запустите эту команду ls с аргументами a, l, h и d:

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

Убедитесь, что разрешения соответствуют следующему выводу:

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

Вы готовы начать создание сайта Drupal 9 на локальном компьютере.

Шаг 5 — Создание первого поста в Drupal

Чтобы протестировать определенную функцию Drupal, вы создадите пост с помощью пользовательского веб-интерфейса.

Нажмите на начальной странице сайта кнопку Content (Содержимое) в левом верхнем меню. Нажмите синюю кнопку Add content (Добавить содержимое). Откроется новая страница. Нажмите Article (Статья), и появится еще одна страница.

Строка создания статьи в Drupal 9

Добавьте любые предпочитаемые заголовок и содержимое. Также вы можете добавить изображение, например, одни из обоев DigitalOcean. Когда вы будете готовы, нажмите синюю кнопку Save (Сохранить).

На вашем сайте появится ваш первый пост.

Созданный пост в Drupal 9

Теперь вы создаете сайт Drupal 9 на локальном компьютере без взаимодействия с сервером благодаря Docker и DDEV. На следующем шаге мы будем управлять контейнером DDEV с учетом вашего рабочего процесса.

Шаг 6 — Управление контейнером DDEV

Когда вы завершите разработку проекта или захотите сделать перерыв, вы можете остановить свой контейнер DDEV, не беспокоясь о потере данных. DDEV может управлять быстрым переключением контекста в нескольких проектах, и это одна из самых полезных его возможностей. Ваши код и данные всегда сохраняются в каталоге вашего проекта, даже после того, как вы остановите или удалите контейнер DDEV.

Вы можете остановить DDEV в любое время для освобождения ресурсов. Запустите следующую команду в каталоге вашего проекта:

  1. ddev stop

DDEV доступен глобально, так что вы сможете запускать команды ddev из любого места, если вы зададите проект DDEV:

  1. ddev stop d9test

Также вы можете просмотреть все проекты одновременно с помощью команды ddev list:

  1. ddev list

В DDEV имеется много других полезных команд.

Вы можете перезапустить DDEV и продолжить разработку на локальном компьютере в любое время.

Заключение

В этом обучающем модуле мы использовали Docker и возможности контейнеризации для разработки сайта Drupal на локальной системе с помощью DDEV. Также DDEV интегрируется с несколькими интегрированными средами разработки и имеет встроенную поддержку отладки PHP для Atom, PHPStorm и Visual Studio Code (vscode). Далее вы можете узнать больше о создании сред разработки для Drupal с DDEV или для разработки с использованием других структур PHP, таких как Wordpress.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Drupal Architect

PHP Senior Developer for Drupal based projects. Focused in backend. Bartender and writer in therussianlullaby.com



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.