Devilbox aka ящик дьявола
Перед нами очередная полезная штука, работающая на Linux, Mac OS и Windows, под злобным названием Devilbox.
Требования⚓︎
Введение⚓︎
Devilbox представляет собой не только стек LAMP, но и стек MEAN. MEAN это набор технологий на базе JavaScript, предназначенных для разработки веб-приложений: MongoDB, ExpressJS, AngularJS и Node.js. Ну и работает это всё не в отдельном приложении, а на основе Docker.
Можно настроить нужные вам версии сервисов, а также использовать неограниченное количество проектов.
Приступаем⚓︎
Прежде всего остановите любые другие WAMP-приложения (OSPanel и т. п.), если они у вас запущены.
Заходим на диск, куда вы хотите установить Devilbox, и запускаем в консоли команду:
Меняем файл .env в соответствии с тем, какие именно сервисы вам нужны.
Например, можно задать корневую папку проектов:
Если вы используете Laravel, то наверняка захотите установить здесь public:
Там же можно поменять суффикс доменов по умолчанию:
Auto DNS
Не забудьте настроить и Auto DNS. Это такая полезная штука, которая избавляет вас от необходимости вручную добавлять адреса создаваемых вами сайтов в файл hosts. Для этого измените строчку HOST_PORT_BIND=1053 таким образом:
127.0.0.1 в качестве предпочитаемого DNS-сервера. Теперь можно выполнить запуск (Docker должен быть запущен):
Первый запуск может занять длительное время, пока все пакеты скачаются, установятся и запустятся. Но не переживайте, в последующие разы всё будет происходить намного быстрее.
Либо можно запустить или остановить только то, что вам нужно:
Для создания нового проекта вам просто потребуется создать новую папку в директории devilbox/data/www. Поскольку вы, вероятно, не хотите каждый раз редактировать файл /etc/hosts, встроенный DNS-сервер автоматически предоставит правильные записи DNS для каждого проекта.
Примечание
Пока Devilbox запущен, вам доступен пункт управления по адресу http://localhost. Здесь вы найдете все популярные инструменты: phpMyAdmin, Adminer и т. д.
Пробный проект⚓︎
Создадим для примера файл devilbox/data/www/test/index.php:
Если вы не настроили Auto DNS (см. выше), добавьте строчку 127.0.0.1 test.dvl.to в файл C:\Windows\system32\drivers\etc\hosts. Теперь в браузере должен быть доступен адрес https://test.dvl.to (да-да, здесь настроен SSL). Если вы поменяли суффикс доменов в файле .env, используйте его вместо .dvl.to.
Обновление⚓︎
Для получения наисвежайшего образа достаточно выполнить команду:
Однако, если только что была выпущена новая дополнительная версия (например, PHP) и вы хотите использовать её прямо сейчас, вы можете просто заgit cloneить репозиторий Docker и пересобрать контейнер. Каждый репозиторий контейнеров содержит сценарий оболочки для упрощения сборки:
# Скачиваем репозиторий PHP 8.3
git clone https://github.com/cytopia/docker-php-fpm-8.3
# Пересобираем контейнер
cd docker-php-fpm-8.3
./build/docker-rebuild.sh
Для изменения настроек PHP откройте файл devilbox/cfg/{версия PHP}/devilbox-php.ini-default, внесите нужные изменения и сохраните под именем devilbox-php.ini (чтобы было расширение .ini). Можно сделать неограниченное число таких конфигов, подхватываться будут только те, что с расширением .ini. Для вступления изменений в силу необходимо перезапускать Devilbox.
Проект на базе Laravel⚓︎
Теперь попробуем установить Laravel. Зайдите в папку devilbox, откройте консоль и выполните команду:
# Создадим папку внутри директории `data/www`
mkdir my-laravel
# Перейдем в эту папку
cd my-laravel
# Создадим новый проект
laravel new laravel-project
Символическое связывание фактического корневого каталога веб-сайта с htdocs важно. Веб-сервер ожидает, что корень документа каждого проекта находится в <vhost dir>/htdocs/. Это путь, по которому он будет обслуживать файлы. Это также путь, по которому должна быть найдена точка входа в вашу платформу (обычно index.php).
Однако некоторые платформы предоставляют фактическое содержимое во вложенных каталогах неизвестных уровней. Веб-серверу будет невозможно это выяснить, поэтому вам придется вручную связать его с ожидаемым путем.
Готово. Можно посмотреть созданный проект в браузере: https://my-laravel.dvl.to (если вы не меняли суффикс доменов)
Для остановки запущенного проекта можно воспользоваться графическим интерфейсом Docker Desktop, либо выполнить в корневой папке проекта команду docker compose down.
Список хостов Devilbox⚓︎
При настройке ваших PHP-проектов на использование MySQL, PostgreSQL, Redis, Mongo и других сервисов, убедитесь, что имя хоста/адрес каждого из них соответствует тому, как они определены в сети Devilbox:
| Контейнер | Имя | Хост | IP-адрес |
|---|---|---|---|
| DNS | bind | bind | 172.16.238.100 |
| PHP | php | php | 172.16.238.10 |
| Apache, Nginx | httpd | httpd | 172.16.238.11 |
| MySQL, MariaDB, PerconaDB | mysql | mysql | 172.16.238.12 |
| PostgreSQL | pgsql | pgsql | 172.16.238.13 |
| Redis | redis | redis | 172.16.238.14 |
| Memcached | memcd | memcd | 172.16.238.15 |
| MongoDB | mongo | mongo | 172.16.238.16 |
Как это использовать? Ну, например, при установке какого-нибудь движка, требующего создания базы данных, нужно ввести вместо localhost хост используемой вами базы данных — mysql, pgsql и т. п. Пользователь по умолчанию — root, без пароля.