Обустраиваем Linux для разработчика 1С Плешивцев Евгений Информационный Софт Волгоград 1 Тема доклада Еще полгода назад Linux для меня был параллельной вселенной, пока не появилась WSL. Мне понравилась эта система и я нашел ей применения. Буду рад, если это доклад побудит вас сделать первый шаг к миру Linux. 2 Подсистема WSL WSL - Linux под рукой Для чего вам может понадобиться Linux Прикоснуться к ранее неизведанному Некоторый программы под Linux работают лучше, чем под Windows. Например: PostgreSQL, Apache, Docker. Лучше понимать мир большого интернета 3 Подсистема WSL Две версии WSL https://docs.microsoft.com/ru-ru/windows/wsl/compare-versions WSL 1 WSL 2 • Linux не совсем полноценный, например нет процесса systemd • Linux полноценный • Работа через программный слой Windows 10 означает, что Linux доступно все железо хостового компьютера • В WSL1 доступны COM порты хостовой машины https://clck.ru/QH7Dx • Все железо виртуальное, ровно то, которое выделила виртуальная машина • При каждом старте Linux виртуальная машина получает динамический IP адрес Как выбрать Выбирайте WSL2 всегда, кроме тех случаев, когда вам нужно железо хостовой машины или мешает динамический IP. 4 Подсистема WSL ConEmu – главный инструмент https://conemu.github.io/ ConEmu это удобный браузер консольных приложений. Например, терминал Linux, консоль CMD, FAR. • Настройка. Обновление задач. • Настройка. Начальный каталог консоли CMD • Настройка. Начальный каталог консоли Bash /dir %CD% wsl.exe ~ -d Ubuntu-20.04 5 Установка Linux в WSL Только ключевые моменты https://docs.microsoft.com/ru-ru/windows/wsl/ ✔Проверим версию Windows ✔ Проверим, что все необходимые компоненты Windows 10 включены (Подсистема Windows для Linux; Платформа виртуальной машины) ✔ Переключим систему WSL на версию 2 ✔ Если это первая установка в WSL 2, то потребуется обновить компоненту ядра ✔ Установим дистрибутив Linux из магазина Microsoft store ✔ Выполним первый запуск Linux ✔ Установим последние обновления системы Linux 6 Установка Linux в WSL Управление WSL https://docs.microsoft.com/ru-ru/windows/wsl/reference • Текущее состояние подсистемы Linux. Просмотр списка распределений. $ wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2 • Выбор версии WSL для новых распределений $ rem 'переключение на wsl версии 2, все новые установки ОС Linux’ $ rem 'будут выполнены в WSL2’ $ wsl --set-default-version 2 • Выключение Linux серверов 💤 $ rem 'выключение всех серверов’ $ wsl --shutdown $ rem 'выключение выбранного распределения’ $ wsl --terminate Ubuntu-20.04 7 Установка Linux в WSL Способы запуска Linux Пуск – Программы – Ubuntu 20.04 LTS ConEmu – Консоль Ubuntu Консоль CMD – wsl Консоль CMD – bash 8 Доступ к файлам Доступ к файлам из Linux Находясь в терминале Linux вам доступна, вся файловая система Windows10 Каталог /mnt/wsl/ (начиная со сборки 19018 Windows 10), это временный каталог доступный всем работающим распределениям. Это удобный способ обмена файлами между работающим операционным системам. 9 Доступ к файлам Доступ к файлам из Linux Несколько замечаний для начинающих • Регистр в наименованиях каталогов и файлов важен • Пробелы нужно экранировать • Текущий каталог нужно указывать (привыкайте сразу) 10 Доступ к файлам Доступ к файлам из Windows Находясь в Windows 10 вам доступна, вся файловая система Linux. Способы доступа: • Проводник Windows 10 \\wsl$\Ubuntu-20.04 • Терминал Linux в рабочем каталоге $ explorer.exe . Позиция компании Microsoft https://clck.ru/QHq7i НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ открывайте, не создавайте и / или не изменяйте файлы Linux внутри папки «% LOCALAPPDATA%» 11 Доступ к файлам Запуск программ Побочным эффектом прозрачного доступа к файлам является возможность запускать программы из соседней среды. • Из консоли CMD можно запустить программу Linux, например редактор nano. Выйдя из редактора, мы вернемся обратно в CMD $ wsl nano • В терминале Linux можно запустить программу Windows: pen-wsl2@PEN-HOME:~$ ipconfig.exe 12 IP адреса IP адреса в WSL 1 С WSL1 все просто😉. IP адрес сервера Linux равен IP адресу хостовой машины. В этом есть определенное преимущество WSL1 перед WSL2. Например, мы можем связать наш статический IP адрес с DNS именем в файле hosts Windows 10 и после этого обращаться к обеим системам и к Linux и к Windows через это доменное имя. 13 IP адреса Доступ по IP из Linux (WSL 2) Тут все довольно просто, из Linux к серверу запущенному на хостовой машине можно обратиться по: • IP адресу хостовой машины, который выдан маршрутизатором (рекомендую ☝ настроить в маршрутизаторе статические адреса) • Динамический IP адрес, выданный виртуальному Ethernet адаптеру (vEthernet (WSL)) при старте WSL. Выяснить адрес можно выполнив в терминале Linux следующую команду: pen-wsl2@PEN-HOME:~$ cat /etc/resolv.conf 14 IP адреса Доступ по IP из Windows (WSL 2) Если нужно из Windows обратиться к серверу запущенному в Linux, то нужно использовать следующие IP адреса: • localhost. Компания Microsoft в WSL 2 для всех сервисов, работающих в Linux, сделала проброс IP портов в localhost. • Динамический IP адрес, выданный виртуальному Ethernet адаптеру eth0 в Linux при старте WSL. Выяснить адрес можно набрав в терминале Linux следующую команду: hostname -I 15 IP адреса Приколотить IP адреса, намертво🔨 В Windows 10 назначьте статический IP адрес на своем железном маршрутизаторе В Linux можно воспользоваться следующими вариантами: • При старте WSL динамически меняем IP адрес пользовательского хоста в файле C:\Windows\System32\drivers\etc\hosts (https://github.com/shayne/go-wsl2-host) • При запуске Linux выполнять конфигурирование Ethernet адаптера eth0 (https://clck.ru/QHyYV) Для удобства я сделал cmd файлы. Брать на моем github https://github.com/petypen/StartUbuntuWSL 16 USB порты C USB портами в WSL 2 плохо. Очень плохо. Есть сложный и не очень изящный способ использовать USB порты хостовой машины, но его описание достойно отдельного доклада. Краткое описание необходимых шагов, что бы вы оценили размер проблемы приведено ниже. 1. Добавить в ядро Linux поддержку USB устройств • Получить исходники ядра Linux с репозитория Microsoft • C помощью специальной утилиты изменить конфигурацию ядра Linux • Собрать новое ядро Linux • Собрать дополнительные модули USBIP • Настроить конфигурацию так, чтобы при старте Linux WSL 2 использовало новое ядро 2. Установить в Linux USB драйвера. Создать командный файл для запуска драйверов USBIP. Его необходимо запускать каждый раз, когда в Linux требуется USB порт 3.Установить на хостовой машине сервер USB over IP а в Linux установить клиента USB over IP 17 USB порты C USB портами в WSL 2 плохо. Очень плохо. Но все-таки решаемо… Три главные ссылки: 1. Основная инструкция на github https://clck.ru/QQadN 2. Дополнительная инструкция на reddit https://cutt.ly/1frb7zc 3. VirtualHere https://virtualhere.com 18 SQL сервер PostgreSQL см. ИТС 🤷♂️ 19 Сервер 1С:Предприятие см. ИТС Шпаргалка по названиям пакетов Ubuntu дополнительных библиотек необходимых для сервера 1С:Предприятие Наименование библиотеки на ИТС и минимальная версия FreeType 2.1.9 Наименование пакета для Ubuntu20.04 libfreetype6 Назначение Для работы сервера «1С:Предприятия» в управляемом режиме; При использовании на сервере объектов Диаграмма, ГрафическаяСхема, ТабличныйДокумент; При использовании метода ПолучитьКартинку() объектов Диаграмма, ДиаграммаГанта, Дендрограмма, СводнаяДиаграмма; При выполнении операции сохранения в PDF. Libgsf 1.10.1 libgsf-bin Экспорт/импорт документов в формате XLS Glib 2.12.4 unixOdbc 2.2.11 libgsf-1-common libglib2.0-0 unixodbc Экспорт/импорт документов в формате XLS Работа с внешними источниками данных 20 GIT В дистрибутиве Ubuntu 20.04 от Microsoft GIT присутствует, но репозиторий пакетов Ubuntu содержит далеко не самую последнюю версию. Для автоматического обновления GIT подключите PPA (персональный архив пакетов) от компании git-scm по инструкции https://git-scm.com/download/linux ~$ sudo add-apt-repository ppa:git-core/ppa ~$ sudo apt update ~$ sudo apt upgrade 21 OneScript Прекрасный ❤ инструмент для автоматизации, который отлично работает под Linux. Для тех, кто впервые слышит это имя дам короткую справку. OScript или полное наименование OneScript это кросс-платформенная реализация виртуальной машины, исполняющей скрипты на языке 1С:Предприятие. С помощью OScript удобно решать административные задачи и задачи автоматизации процесса разработки. Интерпретатор реализован для операционных систем Windows и Linux. Проект разрабатывается на языке C# и платформе .NET Framework. Основные ресурсы в Интернет, связанные с OneScript: • Официальный сайт проекта https://oscript.io/ • Библиотека пакетов для OScript https://github.com/oscript-library • Чат поддержки в Telegram https://t.me/oscript_library 22 OneScript Установка OneScript Репозиторий находится на сайте проекта https://oscript.io/downloads Скачайте последний дистрибутив вручную или с помощью утилиты wget. Дополнительно, рекомендую обновить платформу Mono на которой построен OneScript для Linux. Мною было замечено, что отладчик OneScript работает корректно, только на последних версиях платформы. Источник информации, как обновить Mono – официальный сайт проекта: https://www.mono-project.com/download/stable/#download-lin-ubuntu 23 Visual Studio Code • Установите VSCode в Windows 10, если вы этого еще не сделали • В терминале Linux введите code . (с точкой в конце) 24 Visual Studio Code Добавьте необходимые для работы с OneScript расширения • Russian Language Pack for Visual Studio Code - русификация • Git Graph – удобный инструмент работы с GIT • Language 1C (BSL) – главный инструмент разработчика на OScript • OneScript Debug – пошаговая отладка в OScript • Markdown All in One – помощь в редактировании markdown 25 Автоматизация в Linux В Linux автоматизацию можно делать на привычном инструменте Пример задачи: Решение задачи в моем репозитории В системе Linux, которая работает в WSL автоматизировать запуск и остановку серверов 1С:Предприятие 8 (srv1cv83) и PostgreSQL (postgresql). Лог работы скрипта сохранять в файл srvmng.log https://github.com/petypen/SRVMNG 26 Мои контакты @petypen https://github.com/petypen https://infostart.ru/profile/138802/ Евгений Плешивцев 27