Что нового

Lando - кроссплатформенная альтернатива Open Server Panel (Docker based) (1 Viewer)

MaHarder

MaHarder

Модератор
SkripTers TEAM
Кодеры
OLD SkripTers
Регистрация
17 Дек 2019
Сообщения
1,438
Реакции
800
Что такое Lando? Это платформа для локальной разработки сайтов на основе LAMP. Но, уверяю, не только Apache входит в возможности данной системы (они позиционируют себя как библиотека). Настройка локального сервера зависит лишь от одного файла. И самое прекрасное в том, что под каждый ваш проект можно создавать отдельную конфигурацию!

Вебстраница библиотеки: https://lando.dev

Плюсы:
  • Кросплатформенность, будет работать на всех системах: MacOS, Linux и Windows с поддержкой WSL
  • Быстрая настройка в один файл
  • Настройка каждого "домена" отдельно
Минусы:
  • Документация на английском
  • Отсутствие удобного GUI
  • Обязательное наличие докера (Docker)

От себя хочу добавить, что это довольно удобная система управления пространством и проектами. Достаточно создать файл конфигурации и запустить сервис. Как я вообще вышел на Ландо? На работе пришлось пересесть на систему под линуксом (тема, где я искал подходящий линукс). Ну и поскольку я и на работе иногда работаю с PHP, а теперь и имею доступ к интернету, то я начал искать альтернативу для Open Server Panel для убунту. Наткнулся на парочку систем - devilbox и Lando.


Установка на системах Ubuntu/Debian:
https://docs.lando.dev/getting-started/installation.html - Официальная инструкция на все ОС, я буду писать только под убунту
  1. Устанавливаем докер
    1. При помощи скрипта:
      Bash:
      curl https://get.docker.com | sh
    2. Ручная установка:
      1. Установка необходимых ПО:
        1. Bash:
          sudo apt install gnome-terminal
        2. Bash:
          sudo apt-get install ca-certificates curl gnupg lsb-release -y
      2. Удаление остатков докера (если был), можно пропустить, если уже установлен:
        1. Bash:
          sudo apt remove docker-desktop
        2. Bash:
          rm -r $HOME/.docker/desktop
        3. Bash:
          sudo rm /usr/local/bin/com.docker.cli
        4. Bash:
          sudo apt purge docker-desktop
      3. Устанавливаем GPG ключи для репозитория докера и сам репозиторий:
        1. Bash:
          sudo mkdir -p /etc/apt/keyrings
        2. Bash:
          curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
        3. Bash:
          echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      4. Устанавливаем докер и его компоненты:
        1. Bash:
          sudo apt-get update
        2. Bash:
          wget https://desktop.docker.com/linux/main/amd64/docker-desktop-4.16.2-amd64.deb
          1. Верный пакет установки берём отсюда: https://docs.docker.com/desktop/install/ubuntu/
        3. Bash:
          sudo apt-get install ./docker-desktop-4.16.2-amd64.deb
        4. Bash:
          sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
  2. Устанавливаем Lando:
    1. Bash:
      wget https://files.lando.dev/installer/lando-x64-stable.deb
    2. Bash:
      sudo apt install ./lando-x64-stable.deb
    3. Добавляем текущего пользователя в группу докера:
      Bash:
      sudo usermod -aG docker $USER
  3. Перезапускаем сессию (Выход/Вход или перезагрузка системы)

На этом всё.

Примерный скрипт конфигурации:
YAML:
name: dle152
recipe: lamp
config:
    php: 7.2
    database: mysql:5.7
    xdebug: true
    webroot: .
services:
    dle152database:
        type: mysql:5.7
        portforward: true
        creds:
            user: mysql
            password: mysql
            database: dle152

proxy:
    appserver:
        - dle152.local

в любом удобном месте создать файл конфигурации с названием .lando.base.yml. Рекомендую в корне сайта, иначе в параметр webroot указываем полный путь до сайта. В консоле переходим туда, где находится файл конфигурации и задаём следующую команду
Bash:
lando rebuild

По конфигурации:
  • name: только в нижнем регистре и желательно без пробелов
  • recipe: есть много разных "рецептов", но для разработки на PHP достаточно указать lamp. На сайте разработчиков есть и другие готовые "рецепты"
  • config: отличается от рецепта к рецепту, если нужно что-то подправить под себя, то добавляет эту строчку
    • php: Указываем версию PHP
    • database: Выбор между mysql, postgres и mariadb. Через двоеточье :)) можно указать версию
    • xdebug: если нужен дебагер, то указываем с параметром true
    • webroot: Путь до сайта. Если файл конфигорации находится в корне сайта, то указываем либо слеш (/), либо точку (.)
  • services: Добавляется дополнительный набор сервисов, которые будут работать для данной конфигурации. Полезно особенно в том случае, если не берётся "рецепт" LAMP.
    • dle152database: название сервиса. Кол-во сервисов неограничено
      • type: Тип сервиса, в моём случае это mysql версии 5.7. Можно указать apache, ngnix и многие другие сервисы, которые будут работать на заднем фоне
      • creds: Данная настройка полезна для типа базы данных. Мы указываем здесь данные базы данных
        • user, password, database: Параметры для входа и название базы данных
  • proxy: Настройка проксиобработки сервисов и самой конфигурации
    • appserver: В моём случае я настраиваю проксирование вебсервера на определённый адрес
      • Адреса пишутся каждый с новой строки, НО их так-же надо будет прописать и в файле хостов ОС
В файле хостов, в моём случае в файле /etc/hosts прописываем следующее
Apache-конфиг:
127.0.0.1    dle152.local dle152database
Lando не прописывает их сама

Чтобы узнать данные подключения и текущие сервисы, достаточно ввести в консоль следующую команду:
Bash:
lando info

Чтобы перезапустить сервер:
Bash:
lando stop && lando start

Чтобы перенастроить сервер:
Bash:
lando rebuild

Чтобы удалить сервер:
Bash:
lando destroy -y
 
Последнее редактирование:
Добавил небольшое видео. Эксперементировал из бюро :skripka::ROFLMAO:

при записи видео я забыл включить верный вход и звук записался с реверсией, т.е. с несколькократным эхо.
 
  • Like
Реакции: Gara
Настройка xDebug и PHPStorm

Изменим конфигурацию для Lando для конкретного сайта:
YAML:
name: dle152
recipe: lamp
config:
  php: 7.4
  xdebug: "debug,develop"
  database: mariadb:10.6
  webroot: .
services:
  database:
    portforward: true
    creds:
      user: mysql
      password: mysql
      database: dle152
  appserver:
    webroot: .
    overrides:
      environment:
        XDEBUG_CONFIG: "idekey='PHPSTORM' start_with_request=trigger discover_client_host=true log=/home/maximharder/Development/logs/xdebug.log"
        PHP_IDE_CONFIG: "serverName=dle152local"
        XDEBUG_SESSION_START: lando

proxy:
  appserver:
    - dle152.local

Изменения:
xdebug: true => xdebug: "debug,develop" - Меняем простое да, на уровни дебага и логирования. Подробнее здесь: https://xdebug.org/docs/step_debug#mode
В сервицы был добавлен пункт appserver. Это переменная из рецепта LAMP. Она стоит за самим сервером (апач и пхп). Нужно перезаписать настройки xDebug'а:
  • idekey='PHPSTORM' - ключ для подключения дебагера к программе
  • start_with_request=trigger - автозапуск дебагира при его запросе, ставим на trigger, подробнее здесь: https://xdebug.org/docs/step_debug#start_with_request
  • discover_client_host=true - для автоматического обнаружения клиента прослушивания порта дебагера
  • log=/home/maximharder/Development/logs/xdebug.log - вывод дебага в отдельный файл
Так же не забываем переменную PHP_IDE_CONFIG. Указание конфигурационной переменной обязательно. Вместо dle152local можно своё прописать.Это значение важно, потому что под него будем настраивать сервер в PHPStorm'е.

Создаём сервер в настройках PHPStorm
Переходим сюда
: File -> Settings -> PHP -> Servers
Bildschirmfoto vom 2023 02 07 10 43 01Bildschirmfoto vom 2023 02 07 10 44 43
Нажимаем на Add (+ / Символ плюса) и добавляем сервер
1675763156520

  • name: Берём значением из PHP_IDE_CONFIG из конфигурации Lando.
  • host: Указываем домен сайта
  • Ставим галочку на "Use path mappings [...]"
  • Напротив Project files в строку Absolute path прописываем /app. Если в Project files ничего не было проставлено автоматически, то прописываем путь до проекта.
Добавляем конфигурацию в меню
1675763550247
Создаём новую конфигурацию и добавляем PHP Remote Debug
16757636301261675763665804
Прописываем любое название. Ставим галочку на Filter debug connection by IDE key и выбираем нами выше созданный сервер и в IDE Key прописываем PHPSTORM. Затем нажимаем на Validate в подменю Pre-configuration. Получаем следующее окно:
1675763849092
Жмём Validate. Получаем вывод конфигурации. Среди неё получим три предупреждения. Игнорируем, так как мы запускаем сервер из под докера. Нам важно, чтобы последующие пункты были отмечены оспешной галочкой.
1675764042240

Устанавливаем вспомогательные функции в браузер: https://www.jetbrains.com/help/phpstorm/2022.3/browser-debugging-extensions.html
Включаем прослушивание портов дебагера и наслаждаемся использованием.
1675764144139

 
Подключаем ionCube к конфигурации ландо
Взято отсюда: https://github.com/lando/pantheon/issues/46#issuecomment-470514233

Можно подключить свой php.ini и прописать все подключения туда, а можно прописать команду, которая автоматически будет загружать самую актуальную версию кьюба при каждой перестройки настройки сервера.

В сервисы appservice добавим следующую команду
YAML:
    build_as_root:
      - export PHP=7.4 && export IC_SO="ioncube_loader_lin_$PHP.so" && export PHP_EXT_DIR=`php-config --extension-dir` && cd /tmp && curl -o ioncube.tar.gz http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz && tar -xvvzf ioncube.tar.gz && mv "ioncube/$IC_SO" $PHP_EXT_DIR && rm -Rf ioncube.tar.gz ioncube && echo "zend_extension=$PHP_EXT_DIR/$IC_SO" > /usr/local/etc/php/conf.d/00_docker-php-ext-ioncube_loader.ini

Значение PHP=7.4 заменяем на своё. Затем перезапускаем конфигурацию: lando rebuild -y

Конфигурация должна выглядеть примерно так:
YAML:
name: dle152
recipe: lamp
config:
  php: 7.4
  xdebug: "debug,develop"
  database: mariadb:10.6
  webroot: .
services:
  database:
    portforward: true
    creds:
      user: mysql
      password: mysql
      database: dle152
  appserver:
    build_as_root:
      - export PHP=7.4 && export IC_SO="ioncube_loader_lin_$PHP.so" && export PHP_EXT_DIR=`php-config --extension-dir` && cd /tmp && curl -o ioncube.tar.gz http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz && tar -xvvzf ioncube.tar.gz && mv "ioncube/$IC_SO" $PHP_EXT_DIR && rm -Rf ioncube.tar.gz ioncube && echo "zend_extension=$PHP_EXT_DIR/$IC_SO" > /usr/local/etc/php/conf.d/00_docker-php-ext-ioncube_loader.ini
    webroot: .
    overrides:
      environment:
        XDEBUG_CONFIG: "idekey='PHPSTORM' start_with_request=trigger discover_client_host=true log=/home/maximharder/Development/logs/xdebug.log"
        PHP_IDE_CONFIG: "serverName=dle152local"
        XDEBUG_SESSION_START: lando

proxy:
  appserver:
    - dle152.local
 
Последнее редактирование:
Достаточно сомнительная тулза, так как всё можно сделать с docker-compose
 
Достаточно сомнительная тулза, так как всё можно сделать с docker-compose
я с докером мало работал, но соглашусь отчасти. мне удобней просто запустить ландо конфигурацию
 

Пользователи, просматривающие данную тему

Верх