Налаштування оточення розробки для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування оточення розробки для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування середовища розробки для 1С-Bitrix

Розробляти Bitrix безпосередньо на production-сервері через FTP — це ризик зламати live сайт правкою одного файлу. Локальне середовище з правильною конфігурацією дозволяє розробляти offline, використовувати дебаггер, тестувати зміни схеми БД без страху.

Docker-середовище для Bitrix

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 з розширеннями Bitrix

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

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

У PHPStorm: Settings → PHP → Servers → додати сервер з іменем bitrix-local, host localhost, налаштувати path mappings: /path/to/project/www/var/www/html.

Копіювання даних з production

Для роботи з реальними даними потрібна копія БД та файлів:

# На production-сервері — дамп БД
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 для локального середовища

У Bitrix немає вбудованого .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:

// 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