Автор выбрал 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. Это позволит вам сначала создать свой сайт, а затем, когда вы будете готовы, развернуть проект на производственном сервере.
Для данного обучающего руководства вам потребуется следующее:
Один локальный компьютер с Linux или macOS
Для macOS: диспетчер пакетов Homebrew, который мы будем использовать для установки DDEV. Для установки Homebrew на локальном компьютере выполните «Шаг 3 — Установка и настройка Homebrew» в этом обучающем модуле по Ruby.
Docker и Docker Compose, установленные на локальном компьютере.
Примечание. Вы можете создать сайт Drupal 9 с помощью DDEV на удаленном сервере, но в этом случае вам потребуется решение для доступа к localhost
в браузере. Команда DDEV ddev share
работает с ngrok, создавая защищенный туннель к серверу для вас и других пользователей для просмотра сайта в разработке. Для личного использования вы также можете установить графический пользовательский интерфейс на удаленном сервере и подключаться к сайту в разработке через браузер, используя этот интерфейс. Для этого следуйте указаниям руководства по установке и настройке VNC в Ubuntu 20.04. Чтобы графический пользовательский интерфейс был еще быстрее, следуйте указаниям нашего руководства по настройке удаленного рабочего места с помощью X2Go в Ubuntu 20.04.
На этом шаге мы установим DDEV на локальный компьютер. Вариант 1 содержит инструкции для macOS, а Вариант 2 — инструкции для Linux. Мы тестировали этот обучающий модуль с DDEV версии 1.15.0.
DDEV рекомендует пользователям macOS использовать для установки инструмента диспетчер пакетов Homebrew. Используйте следующую команду brew
для установки последнего стабильного выпуска:
- brew tap drud/ddev && brew install drud/ddev/ddev
Если вы предпочитаете абсолютно новейшую версию, вы можете использовать brew
для установки ddev-edge
:
- brew tap drud/ddev-edge && brew install drud/ddev-edge/ddev
Если у вас уже установлена версия DDEV или вы хотите обновить имеющуюся версию, закройте DDEV и используйте brew
для обновления установки:
- ddev poweroff
- brew upgrade ddev
После установки или обновления DDEV используйте команду ddev version
для проверки вашего программного обеспечения:
- ddev version
Результат должен будет выглядеть следующим образом:
OutputDDEV-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
, чтобы узнать о самых распространенных командах:
- ddev
Результат будет выглядеть следующим образом:
OutputCreate 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 и начать разработку сайта.
В операционной системе Linux вы можете установить DDEV, используя Homebrew для Linux или официальный скрипт для установки. Для начала обновите в Ubuntu список пакетов в диспетчере пакетов apt
(вы можете использовать apt
в Debian или аналогичный диспетчер пакетов для вашего дистрибутива Linux):
- sudo apt update
Установите обязательные пакеты из официального репозитория Ubuntu:
- sudo apt install build-essential apt-transport-https ca-certificates software-properties-common curl
Эти пакеты позволят вам загрузить сценарий установки DDEV из официального репозитория на GitHub.
Загрузите скрипт:
- curl -O https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh
Перед запуском скрипта откройте его в nano
или предпочитаемом текстовом редакторе и проверьте его содержимое:
nano install_ddev.sh
Просмотрев и проверив содержание скрипта, сохраните и закройте файл. Теперь вы готовы запустить установочный скрипт.
Используйте команду chmod
, чтобы сделать скрипт исполняемым:
- chmod +x install_ddev.sh
Запустите скрипт:
- ./install_ddev.sh
В процессе установки вам может понадобиться подтвердить некоторые настройки или ввести пароль пользователя sudo
. После завершения установки DDEV будет доступен в вашей операционной системе Linux.
Запустите команду ddev version
для проверки программного обеспечения:
- ddev version
Результат должен будет выглядеть следующим образом:
OutputDDEV-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
без опций, чтобы узнать о некоторых распространенных командах:
- ddev
Результат будет выглядеть следующим образом:
OutputCreate 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 и начать разработку сайта.
Запустив DDEV, вы можете использовать его для создания файловой системы Drupal, установки Drupal 9 и создания стандартного проекта сайта.
Вначале мы создадим корневой каталог проекта и перейдем в него. Все остальные команды мы будем запускать отсюда. В этом обучающем модуле мы будем использовать имя каталога d9test
, но вы можете выбрать любое предпочитаемое имя. Обратите внимание, что DDEV не очень хорошо обрабатывает имена с дефисами. Желательно избегать использования таких имен каталогов, как my-project
или drupal-site-1
.
Создайте корневой каталог проекта и перейдите в него:
- mkdir d9test
- cd d9test
DDEV отлично создает деревья каталогов, соответствующие определенным платформам CMS. Используйте команду ddev config
для создания специальной структуры каталогов для Drupal 9:
- ddev config --project-type=drupal9 --docroot=web --create-docroot
Результат должен будет выглядеть следующим образом:
OutputCreating 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. Ваше дерево каталогов проекта теперь будет выглядеть так:
.
├── .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
для инициализации платформы:
- 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
:
- 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, библиотеки и другие связанные ресурсы, а затем создаст проект по умолчанию:
- ddev composer create "drupal/recommended-project"
Загрузите заключительный компонент Drush (оболочка Drupal). В этом обучающем модуле мы будем использовать только одну команду drush
и предложим альтернативный вариант, но в целом drush
— это мощный интерфейс командной строки для разработки Drupal, который может повысить эффективность вашей работы.
Используйте команду ddev composer
для установки drush
:
- ddev composer require "drush/drush"
Мы создали проект Drupal 9 по умолчанию и выполнили установку drush
. Теперь мы откроем проект в браузере и настроим параметры сайта.
Вы установили Drupal 9 и теперь можете открыть свой новый проект в браузере. Для этого вы можете повторно запустить команду ddev start
и скопировать один из двух выводимых ей URL, или использовать следующую команду, которая автоматически откроет ваш сайт в новом окне браузера:
- ddev launch
Откроется стандартный мастер установки Drupal.
Теперь у вас есть два варианта. Вы можете использовать этот пользовательский интерфейс и следовать указаниям мастера по установке, или вы можете вернуться в терминал и передать команду drush
через ddev
. Последний вариант автоматизирует процесс установки и задает admin
как имя пользователя и пароль.
Снова откройте мастер в браузере. В разделе Choose language (Выбор языка) выберите язык из выпадающего меню и нажмите Save and continue (Сохранить и продолжить). Выберите профиль установки. Вы можете выбрать вариант Standard (Стандартный), Minimal (Минимальный) или Demo (Демо). Сделайте выбор и нажмите Save and continue (Сохранить и продолжить). Drupal автоматически проверит ваши требования, настроит базу данных и установит ваш сайт. Последним шагом будет настройка нескольких конфигураций. Добавьте имя сайта и адрес электронной почты сайта с вашим доменом. Затем выберите имя пользователя и пароль. Выберите надежный пароль и сохраните ваши учетные данные в безопасном месте. В заключение добавьте частный адрес электронной почты, который вы регулярно проверяете, внесите региональные настройки и нажмите Save and continue (Сохранить и продолжить).
Ваш новый сайт загрузится и выведет приветственное сообщение.
Запустите в корневом каталоге проекта следующую команду ddev exec
для установки сайта Drupal по умолчанию с помощью drush
:
- ddev exec drush site:install --account-name=admin --account-pass=admin
Сайт будет создан так же, как и при использовании мастера, но с некоторыми базовыми конфигурациями. Для имени пользователя и пароля будет установлено значение admin
.
Запустите сайт для просмотра в браузере:
- ddev launch
Теперь вы готовы начать создание своего сайта, но предварительно рекомендуется проверить наличие правильных разрешений для каталога /sites/web/default
. При локальной работе это не составляет существенной проблемы, но если вы перенесете эти разрешения на производственный сервер, возникнет риск для безопасности.
Во время установки мастера или при первой загрузке приветственной страницы вы можете увидеть предупреждение о настройках разрешений для каталога /sites/web/default
и одного файла внутри этого каталога: settings.php
.
После запуска установочного скрипта Drupal попробует установить для каталога web/sites/default
разрешения на чтение
и исполнение
для всех групп: это параметр разрешений 555
. Также он попытается установить для default/settings.php
разрешение «только чтение»
или 444
. Если вы увидите это предупреждение, запустите эти две команды chmod
из корневого каталога проекта. В противном случае возникнет риск для безопасности:
- chmod 555 web/sites/default
- chmod 444 web/sites/default/settings.php
Чтобы убедиться в наличии правильных разрешений, запустите эту команду ls
с аргументами a
, l
, h
и d
:
- ls -alhd web/sites/default web/sites/default/settings.php
Убедитесь, что разрешения соответствуют следующему выводу:
Outputdr-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 на локальном компьютере.
Чтобы протестировать определенную функцию Drupal, вы создадите пост с помощью пользовательского веб-интерфейса.
Нажмите на начальной странице сайта кнопку Content (Содержимое) в левом верхнем меню. Нажмите синюю кнопку Add content (Добавить содержимое). Откроется новая страница. Нажмите Article (Статья), и появится еще одна страница.
Добавьте любые предпочитаемые заголовок и содержимое. Также вы можете добавить изображение, например, одни из обоев DigitalOcean. Когда вы будете готовы, нажмите синюю кнопку Save (Сохранить).
На вашем сайте появится ваш первый пост.
Теперь вы создаете сайт Drupal 9 на локальном компьютере без взаимодействия с сервером благодаря Docker и DDEV. На следующем шаге мы будем управлять контейнером DDEV с учетом вашего рабочего процесса.
Когда вы завершите разработку проекта или захотите сделать перерыв, вы можете остановить свой контейнер DDEV, не беспокоясь о потере данных. DDEV может управлять быстрым переключением контекста в нескольких проектах, и это одна из самых полезных его возможностей. Ваши код и данные всегда сохраняются в каталоге вашего проекта, даже после того, как вы остановите или удалите контейнер DDEV.
Вы можете остановить DDEV в любое время для освобождения ресурсов. Запустите следующую команду в каталоге вашего проекта:
- ddev stop
DDEV доступен глобально, так что вы сможете запускать команды ddev
из любого места, если вы зададите проект DDEV:
- ddev stop d9test
Также вы можете просмотреть все проекты одновременно с помощью команды ddev list
:
- 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.
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!