Наиболее часто встречающиеся варианты разработки в закрытом контуре

Урок 7 из 8

15 мин

Разработка через удаленное подключение

Для удалённого доступа к компьютеру используются различные методы. Самые популярные доступ с помощью RDP, TeamViewer, AnyDesk (но есть и другие менее популярные, как, например, Сitrix workspace)

Удалённый рабочий стол (RDP)

Для подключения используется адрес компьютера к которому нужно подключиться, логин и пароль. После введения адреса, логина и нажатия кнопки подключиться будет выведено окошко с вводом пароля. Удалённый рабочий стол откроется в новом окне.

TeamViewer

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

Anydesk

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

Подключение через VPN

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

Локальная разработка на машине разработчика

Введение

В данной статье мы рассмотрим работу с docker контейнерами и развертывание Bitrix в них, а также подготовку окружения, приближенного к окружению проекта. Здесь не будет описания "1C-Битрикс: Виртуальная машина VMBitrix" и работы с ней, так как для этого уже есть соответствующий раздел в документации.

Подготовка к развертыванию bitrix в docker

  1. Клонируем репозиторий https://github.com/bitrixdock/bitrixdock в удобную директорию.
  2. Генерируем самоподписанный сертификат с именем localhost или любым другим и добавляем его в конфигурационный файл nginx/conf/nginx.conf
    server {
    ...
    ssl_certificate localhost.crt;
    ssl_certificate_key localhost.key;
    …
    }
  3. Создаем директорию для нашего проекта и выбираем один из двух вариантов развертывания Bitrix:
    • Установка Bitrix через bitrixsetup.php
    • Разворачивание из готового бэкапа через файл restore.phpp.

Рассмотрим развертывание через bitrixsetup.php:

  1. В корне созданной директории создаем два файла: docker-compose.yml и .env. Пример содержимого docker-compose.yml:
    version: '3.9'
    services:
      php:
    	build: ~/bitrixdock/${PHP_VERSION}
    	volumes_from:
      	- source
    	volumes:
      	- '/home/nivanov/bitrixdock/.ssh:/var/www/.ssh'
    	links:
      	- db
      	- memcached
    	networks:
      	- bitrix
    	restart: unless-stopped
    	mem_limit: 2048m
      web_server:
    	build: ~/bitrixdock/${WEB_SERVER_TYPE}
    	depends_on:
      	- source
    	volumes_from:
      	- source
    	ports:
      	- '${INTERFACE}:80:80'
      	- '${INTERFACE}:443:443'
    	links:
      	- php
    	networks:
      	- bitrix
    	restart: unless-stopped
    	mem_limit: 1024m
    
      db:
    	build: ~/bitrixdock/${DB_SERVER_TYPE}
    	platform: linux/amd64
    	volumes:
      	- ~/bitrixdock/${DB_SERVER_TYPE}/init:/docker-entrypoint-initdb.d
    	volumes_from:
      	- source
    	ports:
      	- '${INTERFACE}:3306:3306'
    	environment:
      	MYSQL_DATABASE: ${MYSQL_DATABASE}
      	MYSQL_USER: ${MYSQL_USER}
      	MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      	MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    	command: mysqld --user=root --sql-mode=""
    	networks:
      	- bitrix
    	restart: unless-stopped
    	mem_limit: 1024m
    
      memcached:
    	image: memcached:1.6.12-alpine
    	volumes_from:
      	- source
    	ports:
      	- '${INTERFACE}:11211:11211'
    	networks:
      	- bitrix
    	restart: unless-stopped
    
      source:
    	image: alpine:latest
    	volumes:
      	- ~/bitrixdock/logs/${WEB_SERVER_TYPE}:/var/log/${WEB_SERVER_TYPE}
      	- ~/bitrixdock/logs/php:/var/log/php
      	- ~/bitrixdock/logs/db:/var/log/mysql
      	- ~/bitrixdock/logs/memcached:/var/log/memcached
      	- db:/var/lib/mysql
      	- cache:/var/lib/memcached
      	- ~/bitrixdock/www/html:/var/www/html
      	- ${SITE_PATH}:/var/www/bitrix
      	- /etc/localtime:/etc/localtime/:ro
    	networks:
      	- bitrix
    volumes:
      db:
    	driver: local
      cache:
    	driver: local
    
    networks:
      bitrix:
    	driver: bridge
    	ipam:
      	driver: default
      	config:
    - subnet: 10.100.0.0/24
    
    Пример содержимого .env:
    # Project name to separate multiple bitrixdock instances
    COMPOSE_PROJECT_NAME=my_bitrix
    # PHP version settings. Allowed values are: php56, php71, php73, php74, php80, php81, php82
    PHP_VERSION=php81
     # Web server type. Allowed value is apache or nginx.
    WEB_SERVER_TYPE=nginx
    # MySQL settings. Allowed value is mysql or percona.
    DB_SERVER_TYPE=mysql
    MYSQL_DATABASE=bitrix
    MYSQL_USER=bitrix
    MYSQL_PASSWORD=123
    MYSQL_ROOT_PASSWORD=123
    # Network
    INTERFACE=0.0.0.0
    # Site path
    SITE_PATH=/home/nivanov/PhpstormProjects/mcart_bitrix
    
  2. Выполняем команду
    docker-compose build --no-cache && docker-compose up -d

После успешной сборки и запуска контейнеров, можно перейти по адресу http://localhost/bitrixsetup.php и увидеть страницу с установкой

картинка

С этого момента можно установить нужный дистрибутив и начать работать. Примечание: для выбора сервера БД нужно указать имя нашего контейнера с базой

картинка

Преимущества для разработчиков

  1. Гибкая настройка окружения;
  2. Возможность легкого переключения между версиями PHP и конфигурирования каждого контейнера отдельно с помощью команды
    docker-compose -f ./docker-compose.yml up -d --build —force-recreate php
  3. Возможность замены memcached на redis и другие настройки;
  4. Возможность создания конфигураций для проекта и использования одинаковых окружений;
  5. Легкая переносимость окружения между разными машинами и операционными системами.

Вывод

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

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

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

Разработка на удаленной песочнице разработчика

Введение

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

Кроме вышеперечисленного эту статью также можно использовать для формирования списка требований к рабочему месту разработчика Битрикс в случае, если разработчик вынужден работать через удаленное подключение на машине заказчика.

Подготовка сервера

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

  1. git - для управления версиями кода;
  2. npm/yarn - для управления зависимостями и сборки фронтенд-ресурсов;
  3. node.js - версия не должна превышать v16.20.0, чтобы обеспечить стабильную работу инструмента bitrix-cli;
  4. bitrix-cli - инструмент командной строки, предоставляющий удобные команды для работы с платформой Bitrix;
  5. composer - для управления зависимостями и установки пакетов PHP;
  6. xdebug3 - инструмент для отладки PHP-кода.

Установка и настройка этих пакетов позволит разработчику без препятствий выполнять поставленные задачи на проекте. Кроме того, рекомендуется иметь подготовленный бэкап дев-среды, который будет развернут на стендах каждого разработчика. Это поможет обеспечить единые условия работы на стендах.

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

Подготовка IDE разработчика

Для разработки на песочнице разработчика используем вторую схему, описанную в статье "Особенности использования IDE и Bitrix Framework". Перед началом работы необходимо настроить вашу интегрированную среду разработки (IDE) для работы с проектом.

Вот несколько шагов, которые следует выполнить:

  1. Настройка подключения к удаленной машине: Установите и настройте соединение с удаленной машиной, на которой расположена песочница разработчика. Это позволит вам работать с кодом и файлами на удаленной машине через вашу IDE;
  2. Подключение репозитория: Свяжите ваш проект с репозиторием, чтобы иметь возможность управлять версиями кода и совместной разработкой;
  3. Настройка xdebug: Настройте xdebug в вашей IDE для отладки PHP-кода на удаленной машине. Это позволит вам удобно отслеживать и исправлять ошибки в процессе разработки;
  4. Синхронизация файлов: Настройте синхронизацию файлов между вашей локальной машиной и песочницей разработчика. Это позволит вам удобно вносить изменения в код и видеть результаты на песочнице.

В процессе разработки на песочнице разработчика могут возникнуть некоторые сложности. Некоторые из них могут включать:

  1. Необходимость настройки удаленного сервера и установки необходимых пакетов;
  2. Проблемы с настройкой xdebug и синхронизацией файлов между локальной машиной и песочницей.

Использование песочницы разработчика на платформе Bitrix предоставляет разработчикам ряд преимуществ:

  1. Безопасная и изолированная среда для разработки и тестирования нового функционала;
  2. Требуются ресурсы от разработчика только для IDE;
  3. Полностью готовая среда для разработки;
  4. Удобное масштабирование и управление ресурсами.

Совместная разработка на удаленном сервере (gitflow)

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

  1. Выполнить git init для инициализации
  2. Подключить git remote add origin [соединение]
  3. Переключиться на ветку developer
  4. Создать в удобном месте дополнительную директорию, выполнить первые два пункта в новой директории и стянем все ветки.

Разработка:

  1. На сервере для разработки должна быть включена основная ветка "developer"
  2. Когда разработчик завершает задачу и необходимо передать изменения дальше, доработки фиксируются в ветку "developer" командой git commit -m "task[номер задачи]: [описание]" и затем ветку необходимо отправить в репозиторий командой git push origin developer.
  3. Разработчик переходит в ранее созданную дополнительную директорию, обновляет ветки и стягивает новые ветки по необходимости. Далее выполняются следующие действия: создается ветка для новой задачи от ветки, в которую будет производиться перенос, выполняется cherry-pick нужных коммитов, новая ветка отправляется в git, и создается запрос на слияние (merge request) в нужную ветку.
  4. После слияния ветки с нужной веткой дальнейшие действия зависят от вашей системы непрерывной интеграции и развертывания (CI/CD). Это может быть автоматическое развертывание или ручной перенос ответственным лицом.

Вывод

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