Настройка окружения разработки для 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







