Цель - установить CMS Drupal 9 на локальный компьютер без необходимости предварительно вникать в настройки ПО и среды.
Требуются: ПК под управлением ОС Debian или Ubuntu, пользователь с правами sudo. Команды вводятся в терминал путем копирования через буфер обмена мышки
Проекты будем разворачивать с помощью:
- DDEV-Local - мэйнтейнер Randy Fay, лицензия Apache-2.0
- Docksal - мэйнтейнер Леонид Макаров, лицензия MIT
DDEV-Local и Docksal - это инструменты для определения и управления средами веб-разработки. Используют Docker и Docker Compose для создания полностью контейнерных сред для ваших проектов.
Что такое Docker?
Установка Docker
Если ранее были установлены, удаляем старые версии docker:
sudo apt-get remove docker docker-engine docker.io containerd runc
Устанавливаем дополнительные пакеты:
sudo apt-get install ca-certificates curl gnupg lsb-release libnss3-tools
Скачиваем ключ шифрования и подключаем репозиторий:
Debian
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Ubuntu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновляем индекс, устанавливаем docker:sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Проверяем версию и статус демона:docker --version
sudo systemctl status docker
Добавляем текущего пользователя в группу docker и активируем его:sudo usermod -aG docker $USER && newgrp docker
Проверяем работоспособность docker:
docker run hello-world
Установка DDEV-Local
Скачиваем скрипт и запускаем установку. В процессе отвечаем на вопросы "y", по необходимости вводим пароль sudo:
curl -LO https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh && bash install_ddev.sh
Смотрим версию:
ddev --version
Создаем каталог проекта и переходим в него:
mkdir d9ddev
cd d9ddev
Далее создаем структуру каталогов проекта, контейнеры docker, устанавливаем шаблон сайта, задаем имя пользователя и пароль:
ddev config --project-type=drupal9 --docroot=web --create-docroot
ddev start
ddev composer create "drupal/recommended-project"
ddev composer require drush/drush
ddev exec drush site:install --account-name=admin --account-pass=admin
Запускаем проект и открываем его в браузере. Пользователь и пароль admin
ddev launch
Установка Docksal
Скачиваем и запускаем скрипт:
bash <(curl -fsSL https://get.docksal.io)
Создаем проект, например d9docksal:
fin project create
Переходим в каталог проекта и запускаем его:
cd d9docksal
fin start
Устанавливаем локальный сертификат:
fin debug -c 'mkdir -p ${CONFIG_CERTS}; mkcert -key-file ${CONFIG_CERTS}/${VIRTUAL_HOST}.key -cert-file ${CONFIG_CERTS}/${VIRTUAL_HOST}.crt *.${VIRTUAL_HOST} ${VIRTUAL_HOST}'
Перезапускаем сервер:
fin system reset vhost-proxy
Адрес сайта и пароль указываются в терминале. Если не сохранили пароль, то сформировать одноразовую ссылку для в хода с правами администратора:
fin drush uli
Чтобы пробросить сайт с локальной машины в интернет, регистрируемся на сервисе https://ngrok.com
Устанавливаем пакет ngrok:
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com bullseye main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
Сохраняем токен, полученный на сайте ngrok.com:
ngrok authtoken <token>
В каталоге проекта d9ddev или d9docksal запускаем соответственно ddev share или fin share.
Источники:
https://docs.docker.com/engine/install
https://ddev.readthedocs.io/en/stable
https://www.digitalocean.com/community/tutorials/how-to-develop-a-drupal...
https://www.drupal.org/docs/official_docs/en/_local_development_guide.html
https://docs.docksal.io/getting-started/setup
https://ngrok.com/download
Комментарии
Привет. Хороший будет материал для раздела документации. Сделай, пожалуйста проверку правописания. Очень много опечаток
Ок. Боролся с форматированием.
В статье нет самого главного: зачем использовать ddev или docksal, когда можно обойтись одним лишь докером?
Наверное потому что не каждый хочет тратить время на изучение конфигов докера. Так же как и не каждый хочет собирать Gentoo из исходников, а просто ставит Ubuntu и работает
Вот видно, что создатели docksal тоже не заморачивались с изучением докера, поэтому вместо того, чтобы гонять трафик между контейнерами через внутреннюю сетку докера, поднимают аж целый днс-сервер и половина команд почему-то периодически требует sudo
А вообще, не очень понятно, что такое "конфиги докера" и зачем их изучать для разворачивания локального сайта. Равно как и непонятно, кем именно можно работать, просто поставив убунту, где из коробки нет практически ничего, кроме Libre Office.
Ну Лёха. Мы живем в такое время, когда для решения какой-то задачи есть несколько инструментов на выбор. Не нравится доксал - юзай голый докер. Да хоть OpenServer. Но что-то мне подсказывает, что возмущаешься ты потому что у вас в компании юзают доксал и тебе приходится
Да, юзают и мне приходится. К слову, приходилось успешно решать проблемы, которые в трекере доксала по полгода висят, как нерешённые. И вот довольно много поюзав его на разных проектах могу сказать, что в сущности это и есть обычный docker-compose, только зачем-то его конфиги раскидали по нескольким файлам, что поди разберись, что там к чему.
Утилита fin конечно местами полезна, но только в каких-то самых базовых кейсах. Чуть что, всё равно надо идти в контейнер и выполнять команды там.
В общем я вижу себе плюсы и минусы как-то так: в каких-то очень базовых и обыденных сценариях доксал даёт облегчение работы на 10%, а в случае каких-то проблем даёт многократное увеличение сложности.
Ну и опять же вопрос распространённости. Если что-то сломалось в docker-compose, то в интернете миллион ответов на такие же вопросы. Если же что-то касается docksal, то инфы вообще голяк.
У меня противоположный опыт. За 2,5 года использования не было критических проблем. Ходить в контейнер и что-то там делать вообще практически ни разу не было необходимости
Пробовал поднять вопрос об уходе с доксала?
Там все CI-скрипты на него завязаны, очень геморно будет
Это где-то в продакшене используется? Соболезную...
Нет, в продакшене не используется))
Ну дак это всё решаемо. Видимо, кроме тебя всех всё устраивает?
Конечно решаемо. Только надо сесть и решить, а на это нужно порядочное количество времени, которого никогда нет.
Я тоже не понимаю совершенно, зачем это нужно. Если пользоваться контейнерами, хорошо бы понимать, хотя бы, какие именно контейнеры выбраны для создания окружения, ну и с докером минимально уметь работать. Иначе не получиться решать проблемы, да и использовать это всё нормально.
А разные "полуготовые окружения", пытаясь заменить собой простейший docker-compose файл, создают какие-то свои контейнеры со своими проблемами, и прячут от пользователя то, что не нужно, при этом реально упрощая очень мало действий. И сами требуют изучения, и приносят лишние проблемы.
Хорошо ещё, когда они просто являются практически тем самым docker-compose.yml, как какой-нибудь docker4drupal, но и тогда из-за универсальности есть переусложнение, и часто используются разные свои контейнеры, со своими проблемами.
На мой взгляд, куда проще научиться работать с официальными контейнерами nginx, php, mysql и.т.п. и освоить docker-composе. Информации по этому на многие порядки больше. Проблемы все найдены и исправлены, или есть информация как с ними жить и.т.п.
В общем тому, кто решает для себя, что использовать, рекомендую не заморачиваться с docksal и подобными вещами - они скорее ваше время потратят в итоге, а не сэкономят.
Есть самое главное! ))
Зачем ставить на локальный компьютер? Как вариант - посмотреть, изучить, пощупать CMS Drupal. Акцентирую внимание именно на CMS, а не прочих видах самодостаточного ПО, как веб-сервера, БД, системы виртуализации. Насколько пригодны ddev и docksal для профессиональной разработки судить не могу. А чтобы составить представление, как это работает и, вообще, интересно ли это вам, указанные инструменты вполне подходят. Фактор времени здесь определяющий.
Я использую ddev и всем доволен и никаких проблем нету все зависит от задачи
Быстрый старт- это научиться поднимать вебсервер с нуля и потом на эту базу уже использовать докер или docksal , если это потом не окажется лишней работой
Поднять вебсервер с нуля значительно дольше, чем установить докер и выполнить одну-две команды из инструкции.
Здесь ближе к руководству по быстрому, то есть с минимальной подготовкой, запуску в целях ознакомления с основными функциями продукта.
Даже в режиме rootless?
Хз, что за режим такой. Это какая-то чисто доксаловская фишка. Особенно бесит, когда набрал fin up в консоли, вроде что-то зашевелилось, пошёл чайник поставить, приходишь, а там висит [sudo] password for username:
Увидел предупреждение, когда про установку докера писал:
https://docs.docker.com/engine/install/linux-postinstall/
Собственно, сам режим rootless, официально поддерживается с версии докера 20.10
https://docs.docker.com/engine/security/rootless/
А докер тут вообще ни при чём. Это создатели доксал большие любители sudo:
https://github.com/docksal/docksal/blob/develop/bin/fin
просто на странице нажмите Ctrl + F и наберите "sudo"
Эм-м-м... врачом? Из коробки там есть еще браузер и графический просмотрщик. Ну так, для примера.
Все профессии важны, все профессии нужны. Для многих профессий вообще компьютер не нужен, как и друпал. Видимо, в этом и заключался совет - поставить убунту и идти на работу)))
Вроде все шло штатно, до команды:
ddev launch
и вот такой результат получаем:
/usr/bin/xdg-open: 869: www-browser: not found
/usr/bin/xdg-open: 869: links2: not found
/usr/bin/xdg-open: 869: elinks: not found
/usr/bin/xdg-open: 869: links: not found
/usr/bin/xdg-open: 869: lynx: not found
/usr/bin/xdg-open: 869: w3m: not found
xdg-open: no method available for opening 'https://d9ddev.ddev.site'
Failed to run launch ; error=exit status 3
На этом быстрый старт и заканчивается. Кто знает решение данной проблемы?
Полагаю, что нужно установить один из предлагаемых консольных браузеров
Да! Действительно не хватало консольного браузера. Огромное спасибо!
В результате запустился непонятный сайт на минималках. Что с ним делать в инструкции ни слова. Закрыл и пошел дальше.
Проделал все описанные процедуры вплоть до проброски из локалки в сеть.
Получил ссылку на вход....типа: http://test1.docksal
По данной ссылке можно зайти на сайт только на самом сервере.
Как можно зайти на этот сайт из локальной сети?
Ссылки типа http://192.168.0.104/test1.docksal не работают.
И что бы два раза не вставать. docksal предлагает к установке три версии drupal9. Какую ставить?
Простейший способ отредактировать файл /etc/hosts на Вашей машине:
192.168.0.104 test1.docksal
Это работает, если у Вас статические адреса в локальной сети нет желания поднимать dns.
Если не пускает, проверяйте настройки файервола вашей системы и далее веб-сервера.
Спасибо! гляну фаервол.
Сначала добавить такую возможность выполнив
fin config set --global DOCKSAL_VHOST_PROXY_IP=0.0.0.0
(возможно понадобится перезапуск служб доксала)
Затем на другой машине прописать в файле /etc/hosts
192.168.1.123 test1.docksal
Где 192.168.1.123 это айпишник машины, где собственно доксал и крутится
Ну и в итоге там где в файл хостов прописали набираем в браузере test1.docksal
Спасибо! Заработало!!!
Никакую. Ставим друпал как обычно через composer
Ага docksal это про другое.
Я про вот этот выбор после команды fin project create
Если нет браузера по-умолчанию, скорее всего нет никакой DE, и вероятнее всего - это сервер. Вы же не указываете систему. Эта инструкция для локальной машины, на которой Вы работаете, не для сервера. Но и там можно запустить, только не ddev launch (браузера же нет), а ddev start из каталога с проектом.
Обычный неттоп с кубунтой и двумя браузерами (FF, Ch). Лежит на холодильнике -сервер. Подключен к телевизору -медиа центр. Подключен к монитору -локальная машина.
Но суть я уловил. Спасибо!
я успешно запускаю drupal9 на wsl2. для некоторых задач пойдет. докер в голову не лезет. но понимаю что изоляция контейнерная нужна. хотел бы LXC контейнеры освоить через их менеджер. типа домашний vps с использованием OpenVZ.
С docker и dосker-compose это будет проще и удобнее, на самом деле. Ну и сами контейнеры проще и легче.
А openvz тут и вообще не при чём. Если уж управлять этим, то скорее через libvirt и virt-manager.
Но проще немного с докером разобраться имхо.
да через libvirt и virt-manager правильней. просто система на virtuozzo целый готовый хостинг предлагает.
ну может дойду до докера когда-н.
Для разработки это явно излишне, а чтобы в проде использовать эту штуку надо хорошо знать и настраивать - это не то, чтобы очень уж готовое решение, если про openvz говорить. Так что не рекомендую...
Как в этой кухне попасть в бд с помощью phpmyadmin?
В какой кухне? Если DDEV-Local, то в каталоге проекта выполнить
ddev launch -p
Посмотреть все сервисы проекта
ddev describe
Более подробно на https://ddev.readthedocs.io/en/latest/users/developer-tools/
Имеется в виду сайт установленный по примеру из данной темы форума.
ddev launch -p
Выдает ошибку
Ошибка открытия https://d9ddev.ddev.site:8037/:
ddev describe
выдает таблицуPHPMyAdmin OK https://d9ddev.ddev.site:8037
Вроде как служба работает, но перейти по этому адресу не получается.
Более того непонятки с тем куда и как устанавливается сайт по данному мануалу. Такое ощущение что ddev установил сайт в папку
d9ddev/web
а после команды
fin project create
он еще и установился в папкуd9ddev/test1/web
отсюда он и работает в браузере.При этом команды
ddev composer require 'modulename'
устанавливает модуль в первый адрес.fin composer require 'modulename'
во второй адрес.кстати в DDEV version v1.22.4 PHPMyAdmin убрали. можно дополнительно установить adminer:
ddev restart
ddev describe
еще для желаемой конфигурации модно отредактировать config.yaml например:
php_version: "8.2"
webserver_type: apache-fpm
timezone: Europe/Moscow
nodejs_version: "20"
P.S. нет. вынесли в отдельный модуль
ddev get ddev/ddev-phpmyadmin
Будьте внимательнее. Вы установили два сайта в один каталог d9ddev. Зачем?
В инструкции для сайта на основе Ddev в домашнем каталоге пользователя для примера создается каталог d9ddev.
Для сайта на основе Docksal в домашнем каталоге пользователя создается каталог d9docksal.
Понятно, что названия каталогов могут быть любыми.
Попробуйте оба инструмента, выберите, какой больше нравится и пользуйтесь.
Сразу добавлю, Ddev при установке сразу добавляет PHPMyAdmin.
В Docksal необходимо добавить вручную, то есть в каталоге проекта выполнить
fin addon install pma
fin project start
Доступ по адресу pma.<название сайта>
Спасибо! С двойной установкой разобрался. В Ddev phpMyAdmin работает норм.
А вот на Docksal потратил кучу времени, но согласно официально инструкции он так и не заработал. Открывается заглавная страница и все.
Оказалось адрес, по которому находится phpMyAdmin, нынче другой. Как это узнать из одного единственного мануала? Никак.
Лезем в файл .docksal/docksal.yml в последней строчке находим отличие pma. /pma-
Действующий на данный момент адрес пишется через дефис:
http://pma-<project_name>.docksal
А зачем двойная установка то?
Это же на выбор по желанию кому как.
или я что-то не допонял?