Что такое Drupal консоль?

Это интерфейс командной строки(CLI), предназначенный для генерации стандартного кода, взаимодействия и отладки Drupal.
Изначально проект задумывался как утилита скаффолда, но потом консоль выросла в полноценную CLI утилиту.
Drupal консоль делает использование Symfony консоли и других сторонних компонентов, которые позволяют автоматически генерировать большую часть кода необходимую для модуля Drupal 8. В дополнению к этому консоль позволяет взаимодействовать с Вашим Drupal проектом.

Почему мне стоит ознакомиться с этим?

Drupal 8 намного более технически развит чем его предшественники и освоить сложность некоторых задач могло бы обескуражить кого угодно. Drupal консоль - это набор утилит, позволяющий сильно упростить жизнь разработчика. Написание модуля для Drupal 8 требует больше шаблонного кода и много чего нужно знать, чтобы просто начать создавать новый модуль. Эти задачи могут быть рутинными и скучными, и поэтому приводить к увеличению потенциальных ошибок. К счастью, большое количество нового кода может быть автоматически сгенерировано, используя Drupal консоль, без возможных рисков и копи-паста ошибок и траты кучи ценного времени.

Как Drupal консоль помогает?

  • Генерация кода и файлов необходимых для модуля Drupal 8.
  • Исследовать и отлаживать систему.
  • Взаимодействовать с инсталляцией Drupal.
  • Изучать Drupal 8 (для этого используется ключ --learning)

Где мне найти проект?

Главная страница проекта

http://drupalconsole.com

Репозиторий Github

https://github.com/hechoendrupal/drupal-console

Документация

https://docs.drupalconsole.com/

Чат поддержки

https://gitter.im/hechoendrupal/DrupalConsole

Больше информации на странице поддержки Drupal.org

https://drupal.org/project/console

Получение проекта

Вам нужно установить 2 вещи, чтобы DrupalConsole заработала:

  1. DrupalConsole Launcher
  2. DrupalConsole itself

Зачем мне Launcher?

Это глобальное приложение, позволяющее Вам запустить команду drupal из любой поддиректории Вашего проекта. Без этого Вам прийдется запускать команду только из корневой директории сайта.

Установка DrupalConsole для каждого из Ваших проектов

Начиная с Drupal 8 RC DrupalConsole должна устанавливаться для каждого сайта.

Использование проекта

Drupal консоль предоставляет два типа команд:

  1. Глобальные команды лаунчера: эти команды могут запускаться за пределами корневой директории Drupal 8.
  2. Команды имеющие отношение к конкретному сайту: эти команды должны быть выполнены внутри корневой директории Drupal 8.

Выполнение команд Drupal консоли вне корневой директории сайта

Вы можете выполнить команды Drupal консоли из любой директории в вашей системе, используя ключ --root, чтобы задать корневую директорию Drupal.

drupal --root=/var/www/drupal8.dev cr all

Стоит отметить, что возможны предупреждения, если запускать Drupal консоль не из корневой директории сайта.

Как копировать конфигурационные файлы?

Первой задачей, которую Вам нужно будет сделать после установки Drupal консоли - это запустить команду init. Эта команда скопирует конфигурационные файлы проекта на Ваш компьютер. Изменяя значений в этих файлах Вы сможете изменить поведение Drupal консоли.

drupal init [--override]

Первым вопросом, который вы увидите после запуска этой команды будет Select destination to copy configuration(выберите путь назначения для копирования конфигурации) и набор опций будет меняться в зависимости от директории где Вы запустили эту команду:

Запуская эту команду не из корневой директории сайта Вы увидите:

Select destination to copy configuration:
  [0] /etc/console/
  [1] /Users/username/.console/
 >

Запуская эту команду из корневой директории сайта.

 Select destination to copy configuration:
  [0] /etc/console/
  [1] /Users/username/.console/
  [2] /path/to/drupal8.dev
 >

Остальная часть опций не зависит от директории в которой была запущена команда.

Как скачивать, установить и обслуживать Drupal 8?

Наиболее простым способом потестировать Drupal 8 на вашей машине является следующая команда:
drupal quick:start

Обратите внимание, что перед этим нужно выполнить drupal init чтобы скопировать ~/.console/chain/quick-start.yml в Вашу локальную систему.

Команда  chain поможет автоматизировать запуск команды, давая возможность задать внешний YAML файл, содержащий описание, опции и аргументы нескольких команд и запустить этот список команд в соответствии с последовательностью их описания в файле.

Содержимое предоставляемого файла ~/.console/chain/quick-start.yml следующее:

# How to use
# quick:start --directory="/path/to/drupal-project/"
# quick:start --directory="/path/to/drupal-project/" --profile="minimal"
# quick:start --repository="acquia/lightning-project:^8.1" --directory="/path/to/drupal-project/" --profile="lightning"
command:
  name: quick:start
  description: 'Download, install and serve a new Drupal project'
vars:
  repository:
    - drupal-composer/drupal-project:8.x-dev
    - acquia/lightning-project
    - acquia/reservoir-project
  profile: standard
commands:
  # Create Drupal project using DrupalComposer
  - command: exec
    arguments:
      bin: composer create-project %{{repository}} %{{directory}} --prefer-dist --no-progress --no-interaction
  # Install Drupal
  - command: exec
    arguments:
      bin: drupal site:install %{{profile}} --root=%{{directory}} --db-type="sqlite" --no-interaction
  # Start PHP built-in server
  - command: exec
    arguments:
      bin: drupal server --root=%{{directory}}ß

Данная конфигурация запустит несколько команд, которые скачают и установят Drupal используя SQLite, и в конце запустят встроенный PHP сервер. Теперь Вам необходимо только открыть в браузере следующий URL 127.0.0.1:8088.

Вы можете продублировать или сделать изменения в YAML файле для загрузки модулей: module:download, установки модулей: module:install, импорта конфигураций: config:import и восстановления Вашей базы данных database:restore или любую другую команду, которая предоставляется Drupal консолью, или пользовательскую команду предоставляемую Вашим собственным модулем.

Как использовать Drupal консоль в мултисайтовой установке?

Drupal Console предоставляет поддержку мульти-сайтовых установок. Для отладки мульти-сайтов используется команда debug:multisite и опция --uri для взаимодействия с мульти-сайтовыми установками.

Как вывести все известные сайты при использовании мультисайта?

Drupal консоль использует файл sites/sites.php для определения мультисайтовой конфигурации. Для примера смотрите файл sites/example.site.php

drupal debug:multisite
 
+---------------------+--------------------------------+
| Site                | Directory                      |
+---------------------+--------------------------------+
| drupal8.dev         | /var/www/drupal8.dev/default   |
| drupal8.multi.dev   | /var/www/drupal8.dev/multi.dev |
+---------------------+--------------------------------+
 
 Sites are written using the format: <port>.<domain>.<path>

Как запускать команды при мультисайтинге?

drupal --uri=http://drupal8.multi.dev cr all
drupal --uri=drupal8.multi.dev cr all

Использование псевдонимов сайтов(alias)

Drupal консоль позволяет Вам запускать команды на Вашем локальном сервере, но фактически Вы запускаете их на локальном, удаленном или виртуальном (VM, Docker) Drupal сайте используя псевдонимы.

Псевдонимы сайтов используют YAML файлы, чтобы предоставить набор предустановленных опций, используя сокращенные имена.

Для определения удаленного сайта используется type: ssh. В этом случае команда ssh будет использоваться для запуска команд на удаленном сервере.

Псевдонимы сайтов можно получить используя следующие пути:

  • Глобально: ~/.console/sites/
  • Для каждого сайта: /path/to/site/console/sites/

Допустимые опции для псевдонимов сайтов

root: корневая директория Drupal проекта.
host: Доменное имя удаленной системы, не является объязательным для локальных сайтов.
port: Порт, который используется при соединении по ssh протоколу. По умолчанию используется порт 22.
user: Имя пользователя для соединения по ssh.
options: Массив допустимых опций Drupal консоли.
arguments: Массив аргументов Drupal консоли.
extra-options: Используется только если необходимы дополнительные опции, например, метод аутенификации и/или альтернативный идентификационный файл.
type: Тип сайта с которым будет происходить взаимодействие. Допустимые опции local, ssh, container. Опция local используется по умолчанию.

Настройка локального рабочего окружения

Использование псевдонимов сайтов требует определенной локальной настройки.

Глобальная конфигурация

Глобальная конфигурация может быть предоставлена копией этого файла ~/.console/config.yml. Эта информация сгруппирована по ключу  remote

application:
  ...
  remote:
    user: drupal
    port: 22
    options:
    arguments:
    type: ssh

Конфигурация специфического сайта

Конфигурация псевдонима сайта может быть предоставлена добавлением YAML файла /path/to/site/console/sites/sample.yml или ~/.console/sites/sample.yml

local:
  root: /var/www/drupal8.dev
  type: local
dev:
  root: /var/www/html/drupal
  host: 140.211.10.62
  user: drupal
  type: ssh
prod:
  root: /var/www/html/docroot
  host: live.drupal.org
  user: drupal
  type: ssh

Отладка сайтов

Все известные псевдонимы сайтов могут быть получены с помощью команды debug:site

drupal debug:site
 
+--------------------+-----------------+------------------------+
| Site               | Host            | Root                   |
+--------------------+-----------------+------------------------+
| sample.local       | local           | /var/www/drupal8.dev   |
| sample.dev         | 140.211.10.62   | /var/www/html/drupal   |
| sample.prod        | live.drupal.org | /var/www/html/docroot  |
+--------------------+-----------------+------------------------+

Детали конфигурации могут быть получены указанием имени сайта в качестве аргумента команды debug:site

drupal debug:site sample.dev
 
user: drupal
port: 22
options:
arguments:
root: /var/www/html/drupal
host: 140.211.10.62
type: ssh

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

Как использовать Drupal консоль для удаленной версии сайта?

Псевдонимы сайтов могут быть указаны с помощью параметра --target и имени сайта с которым Вы хотите взаимодействовать.

drupal --target=sample.dev cr all

Также псевдонимы сайта можно указать используя устаревший @ идентификатор:
drupal @sample.dev cr all

Подключение к виртуальному рабочему окружению

Вы можете подсоединиться к виртуальной машине или Докеру передавая значения для ключей extra-options и  type .

Пример для DrupalVM

dev:
  root: /var/www/drupalvm/drupal
  host: 192.168.88.88
  user: vagrant
  extra-options: '-o PasswordAuthentication=no -i ~/.vagrant.d/insecure_private_key'
  type: ssh

Пример для Drupal4Docker

dev:
  root: /var/www/html
  extra-options: docker-compose exec --user=82 php
  type: container

Когда используется type: container, то необходимо указать значения для  host и  user .

Что дальше?

Это было описание основных возможностей Drupal консоли, достаточно мощного и удобного инструмента. За более подробной информацией советую обратиться к официальной документации, которую можно найти здесь: https://hechoendrupal.gitbooks.io/drupal-console/content/en/index.html.

Добавить комментарий