Битрикс – удобный инструмент для создания веб-проектов различного масштаба. Проблема в том, что его сделали именно для CentOS, а программисты часто используют и другие ОС. В результате приходится выполнять перенос виртуальной машины «Битрикс» в Docker, благодаря чему удаётся упаковывать вместе с приложением в контейнер зависимости, необходимые для работы приложения.
В этой статье мы расскажем, как установить виртуальную машину на примере Ubuntu, это актуально и для других Linux-систем.
При желании можно настроить окружение под битрикс вручную. Однако у всех свои требования, а когда их слишком много, учесть их сложно. Отсюда вытекают некоторые проблемы.
Однако справиться с такими неудобствами помогает Docker.
Docker – это инновационная технология контейнеризации, которая позволяет упаковывать, доставлять и выполнить любое приложение в легковесной, автономной и переносимой среде. Он предоставляет удобное и эффективное решение для разработки, развертывания и масштабирования приложений в среде контейнеров.
Контейнеризация – это концепция, основанная на изоляции приложений и их зависимостей. Вместо того чтобы запускать всю виртуальную операционную систему, Docker позволяет создавать и запускать контейнеры, которые содержат только необходимые компоненты для работы приложения. Контейнеры на основе Docker обладают преимуществами оптимизации ресурсов и эффективного управления, поскольку они делят хостовую операционную систему и используют общие ресурсы, такие как ядро и файловая система.
Docker упрощает процесс разработки и обеспечивает консистентность окружения между разработчиками и операционной средой. Он прост в использовании и масштабируется как на локальных серверах, так и в облачных средах. Он может работать с различными операционными системами и интегрироваться с различными инструментами автоматизации развертывания.
Для установки виртуальной машины нужны несколько инструментов: Nginx, PHP-FPM и MySQL, рекомендуем выбрать последние версии.
Обратите внимание, что директория с ядром битрекс должна находиться в каталоге с аналогичным именем, поскольку является корневой.
Проверьте идентификаторы UID и GID для Nginx и PHP-FPM – их значения 101:101.
Процесс состоит из 8 этапов. Рассмотрим каждый из них подробно.
Nginx – это бесплатное ПО для создания веб-сервера для обработки входящих и исходящих запросов на разных протоколах передачи данных.
Выбираем путь в контейнере /var/www/bitrix. Взаимодействие с контейнером осуществляется через envsubst и переменные окружения.
Путь для конфигурационного файла, а также шаблонов dbconn и settings. – /var/www/bitrix/conf.
Первым шагом станет открытие порта.
docker run -p 101:101 nginx
Введите в браузере адрес IP-сервера. В результате получите ответ «Welcome to nginx!».
PHP-FPM – это программный пакет, который помогает обрабатывать скрипты на языке PHP. Он работает а протоколе FastCGI, поддерживая связь между веб-сервером и PHP.
Для него тоже выбираем путь /var/www/bitrix.
В конфигурационном файле conf/override.ini будут храниться настройки сервера.
Дополнительно понадобятся расширения xml, zip, mysqli и другие, чтобы запустить битрикс.
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)
Конфигурационный файл z_bx_custom.cnf разместите в config/.
Место для дампа базы данных в директории docker-entrypoint-initdb.d.
Убедитесь, что здесь же находится шаблон init.sql.template.
Установите атрибут SGID на директорию с кодом, чтобы файлы в процессе не менялись. Используйте команду ниже, заменив your_code_directory на нужную директорию.
timeweb@timeweb:~$ chmod u+s your_code_directory
Основной каталог разместите в директории bitrix/.
Проверьте размер дампа базы данных. При необходимости можно выполнить его сжатие через декомпрессор.
Сделайте скрипт инициализации и запустите его один раз.
Назначьте файл init.sh исполняемым.
chmod +x init.sh
Через sudo подготовьте директории MySQL и SQL.
./init.sh db
Установите пользователя.
./init.sh owner $bitrix
Установите права.
./init.sh perm.
Очистите кэш.
./init.sh clear-cache
Собирать образ удобно с помощью встроенного инструмента Docker-Compose.
docker-compose -f docker-compose.build.yaml build
Откроется файл, который выглядит так.
Здесь вместо нулей нужно вставить свои значения, указать пути и задать пароли.
На хосте по IP 127.0.0.1 доступен домен. Для него нужно задать переменную окружения в .env, при необходимости отредактировать регистрационные данные. В последней строке вставьте ключ API.
ENVIRONMENT=bitrix
USERNAME=bitrix
PASSWORD=bitrix
API_KEY=xxxx
Откройте файл docker-compose.yaml в PHP-FPM. В пункте extra_hosts укажите локальный IP.
Запустите Docker.
docker-compose up -d
Установка завершена. Заходите на сайт и начинайте работать.
Для обеспечения надежности и стабильности работы виртуальной машины, необходимо иметь подходящий выделенный сервер.
Одной из главных причин аренды выделенного сервера является обеспечение высокой производительности виртуальной машины. При работе с Битрикс в Docker, требуется определенный объем ресурсов, чтобы обеспечить плавную работу сайта или приложения. Аренда выделенного сервера позволяет получить достаточное количество процессоров, оперативной памяти и дискового пространства для удовлетворения потребностей виртуальной машины.
Выделенный сервер также обеспечивает высокую степень безопасности данных. Поскольку виртуальная машина содержит важную информацию, такую как клиентские данные или финансовые транзакции, необходимо обеспечить надежное хранение и передачу данных с помощью дополнительной защиты от несанкционированного доступа и шифрования данных.
Еще одним преимуществом выделенного сервера является гибкость в управлении виртуальной машиной. Он предоставляет полный контроль и свободу в настройке, оптимизации своей инфраструктуры. Это позволяет масштабировать ресурсы в соответствии с растущими потребностями вашего проекта, гарантирует высокую доступность и производительность виртуальной машины.
На выделенном сервере легко установить и настроить Docker-контейнеры, а также предоставляет выделенный IP-адрес и возможность настройки доступа к виртуальной машине из любого места.
Ознакомьтесь с тарифами аренды выделенного сервера https://www.nic.ru/catalog/hosting/dedicated/
Теперь у вас есть инструкция для переноса виртуальной машины «Битрикс» в Docker. Вы получили мощный инструмент для управления, развертывания и масштабирования приложения. Docker позволяет упаковывать зависимости в контейнер, обеспечивает изоляцию, увеличивает надежность и безопасность работы приложения, а также упрощает процесс разработки и тестирования.