Устанавливаем виртуальную машину Битрикс в Docker на Ubuntu: пошаговая инструкция

Битрикс – удобный инструмент для создания веб-проектов различного масштаба. Проблема в том, что его сделали именно для CentOS, а программисты часто используют и другие ОС. В результате приходится выполнять перенос виртуальной машины «Битрикс» в Docker, благодаря чему удаётся упаковывать вместе с приложением в контейнер зависимости, необходимые для работы приложения.

В этой статье мы расскажем, как установить виртуальную машину на примере Ubuntu, это актуально и для других Linux-систем.

С какими трудностями можно столкнуться при работе с Битрикс 

При желании можно настроить окружение под битрикс вручную. Однако у всех свои требования, а когда их слишком много, учесть их сложно. Отсюда вытекают некоторые проблемы.

  • Centos поддерживается не везде. Соответственно, может возникнуть ситуация, когда при поступлении запроса на установку другой операционной системы будет отказано.
  • Часто в инфраструктуре преобладают дистрибутивы на базе Debian. 
  • Приходится применять различные подходы к подготовке инфраструктуры.
  • Использование Centos не всегда подходит для получения различных сертификаций.
  • Поддержка Centos 7 может неожиданно закончиться, поэтому важно подготовить альтернативу.
  • Иногда происходит разрастание «зоопарка», если используют другие дистрибутивы.

Однако справиться с такими неудобствами помогает Docker.

Что такое Docker

Docker – это инновационная технология контейнеризации, которая позволяет упаковывать, доставлять и выполнить любое приложение в легковесной, автономной и переносимой среде. Он предоставляет удобное и эффективное решение для разработки, развертывания и масштабирования приложений в среде контейнеров.

Контейнеризация – это концепция, основанная на изоляции приложений и их зависимостей. Вместо того чтобы запускать всю виртуальную операционную систему, Docker позволяет создавать и запускать контейнеры, которые содержат только необходимые компоненты для работы приложения. Контейнеры на основе Docker обладают преимуществами оптимизации ресурсов и эффективного управления, поскольку они делят хостовую операционную систему и используют общие ресурсы, такие как ядро и файловая система.

Docker упрощает процесс разработки и обеспечивает консистентность окружения между разработчиками и операционной средой. Он прост в использовании и масштабируется как на локальных серверах, так и в облачных средах. Он может работать с различными операционными системами и интегрироваться с различными инструментами автоматизации развертывания.

Подготовка и запуск

Для установки виртуальной машины нужны несколько инструментов: Nginx, PHP-FPM и MySQL, рекомендуем выбрать последние версии.

Обратите внимание, что директория с ядром битрекс должна находиться в каталоге с аналогичным именем, поскольку является корневой. 

Проверьте идентификаторы UID и GID для Nginx и PHP-FPM – их значения 101:101.

Установка виртуальной машины Bitrix в Docker

Процесс состоит из 8 этапов. Рассмотрим каждый из них подробно.

  1. Настройка Nginx.

Nginx – это бесплатное ПО для создания веб-сервера для обработки входящих и исходящих запросов на разных протоколах передачи данных.

Выбираем путь в контейнере /var/www/bitrix. Взаимодействие с контейнером осуществляется через envsubst и переменные окружения. 

Путь для конфигурационного файла, а также шаблонов dbconn и settings. – /var/www/bitrix/conf. 

Первым шагом станет открытие порта.

docker run -p 101:101 nginx

Введите в браузере адрес IP-сервера. В результате получите ответ «Welcome to nginx!».

  1. Настройка PHP-FPM.

PHP-FPM – это программный пакет, который помогает обрабатывать скрипты на языке PHP. Он работает а протоколе FastCGI, поддерживая связь между веб-сервером и PHP.

Для него тоже выбираем путь /var/www/bitrix. 

В конфигурационном файле conf/override.ini будут храниться настройки сервера.

Дополнительно понадобятся расширения xml, zip, mysqli и другие, чтобы запустить битрикс.

  1. Настройка MySQL.

MySQL – это СУРБД, где данные хранятся в виде таблиц.

Идентификаторы пользователей выставляем 1001:1001.

Директорию data, содержащую сведения по базе данных перенесите на хост, назначив аналогичные UID и GID. Инструкция id нужна для проверки.

timeweb@timeweb:~$ id

uid=1000(timeweb) gid=100(timeweb) groups=1000(timeweb), 4(adm),...

timeweb@timeweb:~$ id timeweb

uid=1000(timeweb) gid=100(timeweb) groups=1000(timeweb), 4(adm),...

Сделайте резервную копию файлов с информацией о UID и GID, найти их можно по пути /etc/passwd и /etc/group. Затем можете изменить идентификаторы.

timeweb@timeweb:~$ groupmod -g 1001 timeweb

timeweb@timeweb:~$ usermod -u 1001 -g 1001 timeweb

Выполните проверку.

timeweb@timeweb:~$ id timeweb

uid=1001(timeweb) gid=1001(timeweb) groups=1001(timeweb)

  1. Завершение подготовки.

Конфигурационный файл z_bx_custom.cnf разместите в config/.

Место для дампа базы данных в директории docker-entrypoint-initdb.d.

Убедитесь, что здесь же находится шаблон init.sql.template.

Установите атрибут SGID на директорию с кодом, чтобы файлы в процессе не менялись. Используйте команду ниже, заменив your_code_directory на нужную директорию. 

timeweb@timeweb:~$ chmod u+s your_code_directory

  1. Установка виртуальной машины.

Основной каталог разместите в директории bitrix/. 

Проверьте размер дампа базы данных. При необходимости можно выполнить его сжатие через декомпрессор.

Сделайте скрипт инициализации и запустите его один раз.

Назначьте файл init.sh исполняемым.

chmod +x init.sh

Через sudo подготовьте директории MySQL и SQL.

./init.sh db

Установите пользователя.

./init.sh owner $bitrix

Установите права.

 ./init.sh perm.

Очистите кэш.

./init.sh clear-cache

  1. Сбор образа.

Собирать образ удобно с помощью встроенного инструмента Docker-Compose. 

docker-compose -f docker-compose.build.yaml build

Откроется файл, который выглядит так.

Здесь вместо нулей нужно вставить свои значения, указать пути и задать пароли.

  1. Настройка файла окружения.

На хосте по IP 127.0.0.1 доступен домен. Для него нужно задать переменную окружения в .env, при необходимости отредактировать регистрационные данные. В последней строке вставьте ключ API. 

ENVIRONMENT=bitrix

USERNAME=bitrix

PASSWORD=bitrix

API_KEY=xxxx

  1. Завершение установки.

Откройте файл docker-compose.yaml в PHP-FPM. В пункте extra_hosts укажите локальный IP.

Запустите Docker.

docker-compose up -d

Установка завершена. Заходите на сайт и начинайте работать.

Как обеспечить максимальную стабильность и безопасность виртуальной машины Битрикс в Docker

Для обеспечения надежности и стабильности работы виртуальной машины, необходимо иметь подходящий выделенный сервер.

Одной из главных причин аренды выделенного сервера является обеспечение высокой производительности виртуальной машины. При работе с Битрикс в Docker, требуется определенный объем ресурсов, чтобы обеспечить плавную работу сайта или приложения. Аренда выделенного сервера позволяет получить достаточное количество процессоров, оперативной памяти и дискового пространства для удовлетворения потребностей виртуальной машины.

Выделенный сервер также обеспечивает высокую степень безопасности данных. Поскольку виртуальная машина содержит важную информацию, такую как клиентские данные или финансовые транзакции, необходимо обеспечить надежное хранение и передачу данных с помощью дополнительной защиты от несанкционированного доступа и шифрования данных.

Еще одним преимуществом выделенного сервера является гибкость в управлении виртуальной машиной. Он предоставляет полный контроль и свободу в настройке, оптимизации своей инфраструктуры. Это позволяет масштабировать ресурсы в соответствии с растущими потребностями вашего проекта, гарантирует высокую доступность и производительность виртуальной машины.

На выделенном сервере легко установить и настроить Docker-контейнеры, а также предоставляет выделенный IP-адрес и возможность настройки доступа к виртуальной машине из любого места. 

Ознакомьтесь с тарифами аренды выделенного сервера https://www.nic.ru/catalog/hosting/dedicated/

Подведём итоги

Теперь у вас есть инструкция для переноса виртуальной машины «Битрикс» в Docker. Вы получили мощный инструмент для управления, развертывания и масштабирования приложения. Docker позволяет упаковывать зависимости в контейнер, обеспечивает изоляцию, увеличивает надежность и безопасность работы приложения, а также упрощает процесс разработки и тестирования.

Всё ещё остались вопросы?