Настройка окружения разработки для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка окружения разработки для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка окружения разработки для 1С-Битрикс

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

Docker-окружение для Битрикс

Docker — наиболее портативный вариант: один docker-compose.yml у всех разработчиков даёт идентичное окружение.

Структура проекта:

project/
├── docker/
│   ├── php/
│   │   └── Dockerfile
│   ├── nginx/
│   │   └── default.conf
│   └── mysql/
│       └── my.cnf
├── docker-compose.yml
└── www/  ← код сайта

docker-compose.yml:

version: '3.8'

services:
  nginx:
    image: nginx:1.25-alpine
    ports:
      - "80:80"
    volumes:
      - ./www:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  php:
    build: ./docker/php
    volumes:
      - ./www:/var/www/html
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    environment:
      PHP_IDE_CONFIG: "serverName=bitrix-local"

  mysql:
    image: mysql:8.0
    volumes:
      - mysql_data:/var/lib/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/bitrix.cnf
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: bitrix
      MYSQL_USER: bitrix
      MYSQL_PASSWORD: bitrix
    ports:
      - "3306:3306"

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

  mailpit:
    image: axllent/mailpit
    ports:
      - "8025:8025"
      - "1025:1025"

volumes:
  mysql_data:

Dockerfile для PHP с расширениями Битрикс

docker/php/Dockerfile:

FROM php:8.1-fpm

RUN apt-get update && apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libwebp-dev \
    libzip-dev \
    libxml2-dev \
    libonig-dev \
    libmagickwand-dev \
    && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-configure gd \
    --with-freetype --with-jpeg --with-webp

RUN docker-php-ext-install \
    gd \
    mysqli \
    pdo_mysql \
    opcache \
    zip \
    soap \
    mbstring \
    bcmath \
    exif \
    intl

RUN pecl install imagick apcu xdebug \
    && docker-php-ext-enable imagick apcu xdebug

WORKDIR /var/www/html

Настройка Xdebug

В docker/php/php.ini для разработки:

[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal
xdebug.client_port = 9003
xdebug.idekey = PHPSTORM

; Не включать на продакшне!
[opcache]
opcache.enable = 0  ; Отключить OPcache для разработки (validate_timestamps работает медленнее)

В PHPStorm: Settings → PHP → Servers → добавить сервер с именем bitrix-local, host localhost, настроить path mappings: /path/to/project/www/var/www/html.

Копирование данных с продакшна

Для работы с реальными данными нужна копия БД и файлов:

# На продакшн-сервере — дамп БД
mysqldump -u bitrix -p bitrix_db \
  --single-transaction \
  --skip-lock-tables \
  --compress \
  --quick \
  | gzip > /tmp/bitrix_dump_$(date +%Y%m%d).sql.gz

# Скачать дамп
scp server:/tmp/bitrix_dump_*.sql.gz ./

# Залить в локальный MySQL
gunzip -c bitrix_dump_20240315.sql.gz | docker-compose exec -T mysql mysql -u bitrix -pbitrix bitrix

# Синхронизировать upload/ (только нужные папки, исключить кеш)
rsync -avz --exclude='*/resize_cache/' \
  server:/var/www/bitrix/upload/ \
  ./www/upload/

Настройка dbconn.php для локальной среды

В Битрикс нет встроенного .env механизма, но можно использовать переменные окружения через Docker:

// bitrix/php_interface/dbconn.php
<?php
$DBType = "mysql";
$DBHost = getenv('DB_HOST') ?: 'mysql';
$DBLogin = getenv('DB_USER') ?: 'bitrix';
$DBPassword = getenv('DB_PASSWORD') ?: 'bitrix';
$DBName = getenv('DB_NAME') ?: 'bitrix';
$DBDebug = getenv('APP_ENV') === 'local';
$DBPersistent = false;

define("SITE_SERVER_NAME", getenv('SITE_HOST') ?: 'localhost');

Конфигурация отправки почты в разработке

Mailpit (входит в docker-compose.yml выше) перехватывает всю исходящую почту. Настроить в Битрикс:

// bitrix/php_interface/dbconn.php или init.php
define("BX_SMTP_SERVER", "mailpit");
define("BX_SMTP_PORT", 1025);

Или через настройки Почтового модуля в панели администратора — использовать SMTP, сервер mailpit:1025.

Веб-интерфейс Mailpit: http://localhost:8025 — все письма попадают туда.

Синхронизация кода между разработчиками

Для команды: Git + .gitignore как описано в статье про деплой. Главное — не коммитить bitrix/modules/, upload/, .settings.php, dbconn.php с реальными паролями.

Хук post-merge для автоматической очистки кеша после git pull:

# .git/hooks/post-merge
#!/bin/bash
docker-compose exec -T php php /var/www/html/deploy/clear_cache.php
echo "Cache cleared after merge"
chmod +x .git/hooks/post-merge