Работа над задачей напрямую на боевом сайте — быстрый способ сломать что-то у реальных посетителей. Разберём, как корректно перенести копию 1С-Битрикс на локальный сервер для разработки и тестирования, не задев прод и не столкнувшись с типичными проблемами вроде "локально всё работает, а на сервере — нет".
Что переносить: файлы и база данных
Полный перенос состоит из двух независимых частей: файлов сайта
(ядро, шаблоны, загруженный контент в upload/)
и дампа базы данных MySQL. Забыть про любую из частей — гарантированно
получить нерабочую копию: без файлов не будет шаблонов и загруженных
изображений, без актуальной базы — не будет реального контента
и настроек.
Выгрузка файлов
# с сервера на локальную машину
rsync -avz --exclude 'bitrix/cache' --exclude 'bitrix/managed_cache' \
user@server:/path/to/site/ ./local-site/
Каталоги кеша (bitrix/cache, bitrix/managed_cache,
bitrix/stack_cache) переносить не нужно — они пересоздаются
автоматически и только увеличивают объём переносимых данных без
практической пользы. Каталог upload/ может оказаться
весомой частью переноса на проектах с большим количеством
изображений — для чисто функционального тестирования логики
без визуальной проверки его иногда разумно пропустить, подставив
вместо него несколько тестовых файлов.
Нужна помощь с Битрикс?
Выгрузка и импорт базы данных
# выгрузка на сервере
mysqldump -u user -p database_name > dump.sql
# импорт локально
mysql -u root -p local_database_name < dump.sql
База 1С-Битрикс на реальном проекте может быть весьма объёмной —
для ускорения выгрузки и передачи стоит сразу сжимать дамп
(mysqldump ... | gzip > dump.sql.gz), особенно
при переносе через медленный канал.
Настройка подключения к БД под новое окружение
После импорта базы обязательна правка файла
bitrix/php_interface/dbconn.php — локальные логин, пароль
и имя базы почти всегда отличаются от боевых. Оставленные боевые
реквизиты в этом файле на локальной копии — не просто ошибка
конфигурации, а потенциальный риск, если локальная машина случайно
получит сетевой доступ к боевой базе.
Смена адреса сайта в самой базе
Домен сайта хранится не только в конфигурации сервера, но и внутри
самой базы данных (таблица b_lang, поле SERVER_NAME,
и некоторые связанные настройки) — без этой правки система
продолжит генерировать ссылки и редиректы на боевой домен даже
при полностью локальном окружении, что особенно заметно
на страницах с абсолютными ссылками и в письмах.
Локальное доменное имя и hosts
# /etc/hosts (Linux/Mac) или C:\Windows\System32\drivers\etc\hosts
127.0.0.1 project.local
Локальный псевдо-домен вместо обращения по localhost
или IP удобнее для работы с многосайтовостью и cookie, привязанными
к конкретному имени хоста, — некоторые механизмы Битрикса (например,
сессии и авторизация) чувствительны к точному совпадению домена.
Отключение внешних интеграций на локальной копии
Перенесённая копия базы содержит те же настройки внешних интеграций, что и прод, — платёжные системы, отправка писем, обмен с 1С, вебхуки CRM. Без явного отключения или переключения в тестовый режим локальное тестирование рискует случайно отправить реальные письма клиентам, создать тестовый платёж в боевом платёжном шлюзе или запустить синхронизацию с реальной 1С — это одна из самых частых и неприятных ошибок при первом переносе на локальную машину.
Проверка версий PHP и MySQL
Локальное окружение должно соответствовать версиям PHP и MySQL, максимально близким к боевому серверу, — расхождение версий может скрыть проблему совместимости, которая проявится только при реальном обновлении сервера, или наоборот, создать локальную ошибку, которой на проде вообще нет.
Частые ошибки
- Боевые реквизиты БД остаются в dbconn.php. Риск случайного подключения локальной копии к продовой базе.
- Домен в базе не изменён на локальный. Ссылки и редиректы продолжают вести на боевой сайт.
- Внешние интеграции не отключены. Локальное тестирование отправляет реальные письма или создаёт тестовые платежи в боевом шлюзе.
- Каталоги кеша перенесены вместе с остальными файлами. Лишний объём переноса без практической пользы.
Итог
Полный перенос на локальный сервер требует синхронной выгрузки файлов и базы данных, правки реквизитов подключения и адреса сайта внутри базы, и, что легко забыть, явного отключения внешних интеграций — без этого шага локальная копия рискует выполнить реальные действия во внешних системах вместо изолированного тестирования.
