Всем привет. В компании Convergent, где я работаю, в проектные команды часто входят несколько разработчиков: это могут быть специалисты по бэкенду, фронтенду и/или вёрстке. Проекты чаще всего разрабатываются на PHP, что обуславливает зависимости от различных внешних тулов вроде баз данных, систем полнотекстового поиска и прочего. И здесь кроется большая проблема: коллеги, работающие в Linux, который лежит в основе web-разработки, проблем не испытывают. А вот пользователи Windows получают головную боль.
Как решить эту проблему? У себя в компании мы используем несколько вариантов. В этой статье я решил поделиться нашими наработками.
После установки всего необходимого открываем PowerShell правами администратора и с помощью Git клонируем проект:
git clone https://github.com/s-mokrushin/ubuntu-development-box
cd ubuntu-development-box
cp .env.example .env
Теперь интересный момент — нужно отредактировать файл .env под ваш компьютер. В целом, для работы Ubuntu в виртуальной машине даже 16 Гб оперативной памяти будет не лишним.
Запускаем виртуальную машину:
vagrant up
При первом запуске Vagrant предложит установить необходимые плагины, после чего команду vagrant up нужно выполнить повторно. Также при первом запуске в фоновом режиме будут установлены все необходимые компоненты. Система загрузится быстрее, а весь набор софта будет установлен в процессе работы.
Ubuntu 20.04
После добавления изменений в конфигурацию Ansible, надо запускать команду vagrant provision (или vagrant up — provision, если виртуальная машина ещё не запущена).
Процесс установки всего необходимого ПО происходит с помощью инструмента Ansible. Если интересно узнать про него подробнее, то на русском языке есть как минимум две книги “Полное руководство Ansible, 3 изд.” и “Запускаем Ansible”. Я постарался написать конфигурацию максимально простой и понятной.
Я бы хотел ещё больше автоматизировать процесс установки моего проекта, например создав установочный дистрибутив. Если у кого-то есть желание помочь с этим, буду очень признателен.
Источник статьи: https://habr.com/ru/post/562088/
Как решить эту проблему? У себя в компании мы используем несколько вариантов. В этой статье я решил поделиться нашими наработками.
- Вариант первый. Готовый набор инструментов вроде OSPanel или XAMPP. В большинстве проектов на Yii, где в основном используется только MySQL, — это очень хорошие решения.
- Второй вариант — Docker. Он отлично подходит для автоматизации развертывания, в том числе legacy проектов. Но об этом нужно позаботиться. Сейчас, с выходом WSL 2, работать с Docker в Windows 10 (в т. ч. Домашнем издании) стало значительно удобнее, чем раньше. Об этом на Хабре есть множество статей.
- Третий вариант — поставить Linux второй системой. Это достаточно муторный процесс, так что я автоматизировал его с помощью инструментов виртуализации и автоматизации VirtualBox, Vagrant и Ansible.
- Ubuntu 20.04 с графическим интерфейсом. Смысл в том, что разработчики используют систему ровно так, если бы они работали просто на Ubuntu, которая установлена второй.
- С помощью Ansible при первом запуске устанавливается заданный набор софта (Git, Ansible, NVM, PHP, MC, Docker, Docker Compose, PhpStorm, Visual Code, DBeaver Community Edition). Набор при необходимости можно расширять с помощью создания новых ролей Ansible.
После установки всего необходимого открываем PowerShell правами администратора и с помощью Git клонируем проект:
git clone https://github.com/s-mokrushin/ubuntu-development-box
cd ubuntu-development-box
cp .env.example .env
Теперь интересный момент — нужно отредактировать файл .env под ваш компьютер. В целом, для работы Ubuntu в виртуальной машине даже 16 Гб оперативной памяти будет не лишним.
- BOX_CPU_COUNT — количество используемых вычислительных ядер процессора. Рекомендуемое значение = Общее количество / 2. Оптимальное значение — 4. Минимальное — 1.
- BOX_MEMORY_SIZE — объём выделяемой оперативной памяти в мегабайтах. Рекомендуемое значение = Общее количество / 2. Оптимальное значение — 8096. Минимальное — 2048.
- BOX_DISK_SIZE — объём выделяемого дискового пространства. Рекомендуемое значение — 75GB. Данное значение определяет максимальное дисковое пространство, которое может быть использовано виртуальной машиной (для установки же потребуется около 12 Гб).
- BOX_IP_ADDRESS — устанавливаемый локальный IP-адрес для виртуальной машины. Можно оставить по умолчанию.
- BOX_HOSTNAME — локальный хостнейм для доступа к виртуальной машине. Также можно оставить значение по умолчанию.
Запускаем виртуальную машину:
vagrant up
При первом запуске Vagrant предложит установить необходимые плагины, после чего команду vagrant up нужно выполнить повторно. Также при первом запуске в фоновом режиме будут установлены все необходимые компоненты. Система загрузится быстрее, а весь набор софта будет установлен в процессе работы.
После добавления изменений в конфигурацию Ansible, надо запускать команду vagrant provision (или vagrant up — provision, если виртуальная машина ещё не запущена).
Процесс установки всего необходимого ПО происходит с помощью инструмента Ansible. Если интересно узнать про него подробнее, то на русском языке есть как минимум две книги “Полное руководство Ansible, 3 изд.” и “Запускаем Ansible”. Я постарался написать конфигурацию максимально простой и понятной.
Заключение
Есть множество способов использовать Linux окружение, оставив в качестве основной ОС Windows 10. Вариант с установкой ОС в виртуальную машину выглядит достаточно громоздким и ресурсоемким, но, с другой стороны, процесс автоматизации с помощью Ansible и Vagrant позволяет не устанавливать каждый раз весь необходимый софт для работы, а также с лёгкостью переносить все настроенные внутри виртуальной машины проекты с компьютера на компьютер.Я бы хотел ещё больше автоматизировать процесс установки моего проекта, например создав установочный дистрибутив. Если у кого-то есть желание помочь с этим, буду очень признателен.
Полезные ссылки
- OSPanel — локальный веб-сервер для Windows с большим количеством модулей (вроде MongoDB, Redis и т. д.).
- XAMPP — Apache + MariaDB + PHP + Perl для Windows.
- Ansible — система управлениям конфигурациями.
- VirtualBox — наиболее популярная система виртуализации операционных систем для рабочих станций.
- Vagrant — инструмент для конфигурирования виртуальной среды.
Источник статьи: https://habr.com/ru/post/562088/