Перейти к содержимому

Копия сайта не открывается на стенде - разбор причин

Файлы и база перенесены, а стенд отдаёт белую страницу или чужой домен. Разбираем причины по убыванию частоты, начиная с подключения к базе.

С чего начать

Проверяем, подключается ли база теми же реквизитами:

Окно терминала
grep -A 8 "'connections'" /home/stend/bitrix/.settings.php | grep -E 'host|database|login'
mysql -h 127.0.0.1 -u stend -p stend_base -e 'SELECT COUNT(*) FROM b_lang;'
# отказ на этом шаге объясняет и белую страницу, и бесконечную загрузку

Реквизиты боевой базы в файле настроек - самая частая причина мёртвой копии. Файл переносят вместе с сайтом, и стенд честно стучится на недоступный сервер, пока не упрётся в предел времени ожидания.

Смотрим, какой домен записан у сайтов:

SELECT LID, SERVER_NAME, DIR FROM b_lang; -- домен каждого сайта копии
UPDATE b_lang SET SERVER_NAME = 'stend.local' WHERE LID = 's1';
-- после правки обязательно сбрасывают кэш: адреса попадают в него тоже

Домен сайта участвует в ссылках писем, в редиректах и в правилах обработки адресов. Со старым значением стенд уводит разработчика на боевой сайт, и правки проверяются совсем не там.

Ищем внешние хранилища кэша и сессий:

Окно терминала
grep -nE "memcache|redis|'cache'" /home/stend/bitrix/.settings.php
# боевой сервер кэша недоступен со стенда: страница висит до предела времени

Проверяем права на служебные каталоги:

Окно терминала
sudo chown -R www-data:www-data /home/stend/{bitrix/cache,bitrix/managed_cache,upload}
rm -rf /home/stend/bitrix/cache/* /home/stend/bitrix/managed_cache/*
# перенесённый кэш чужого домена и чужих прав мешает больше, чем помогает

Сравниваем окружение стенда и боевого сервера:

Окно терминала
php -v && php -m | sort > /tmp/stend.txt
ssh boevoy 'php -v && php -m | sort' > /tmp/prod.txt
diff /tmp/stend.txt /tmp/prod.txt # разные расширения дают ошибки на ровном месте

Причины

  1. В настройках остались реквизиты боевой базы примерно 30% случаев

    ПризнакБелая страница или долгая загрузка без единой записи в журнале ошибок.

    ПроверкаЧитаем секцию подключений файла настроек и пробуем подключиться этими реквизитами из консоли.

    Что делатьПрописываем локальные реквизиты в файле настроек и файле подключения к базе данных.

  2. В базе записан боевой домен сайта примерно 20% случаев

    ПризнакСтенд открывается, но ссылки и формы уводят посетителя на боевой сайт.

    ПроверкаСмотрим значение домена у каждого сайта в таблице языков и сайтов.

    Что делатьМеняем домен на локальный, сбрасываем кэш и проверяем правила обработки адресов.

  3. Кэш или сессии настроены на внешний сервер примерно 20% случаев

    ПризнакСтраница висит до предела времени выполнения, ошибок в журнале при этом нет.

    ПроверкаИщем в файле настроек секции внешнего кэша и хранилища сессий по имени сервиса.

    Что делатьПереводим стенд на файловый кэш и обычные сессии либо поднимаем сервис локально.

  4. Права на служебные каталоги не те примерно 15% случаев

    ПризнакОшибки записи в каталоги кэша и загрузок, страницы собираются частично.

    ПроверкаСмотрим владельца каталогов кэша и загрузок и сравниваем с пользователем веб-сервера.

    Что делатьМеняем владельца служебных каталогов и удаляем перенесённый с боевого сервера кэш.

  5. На стенде другая версия PHP или набор расширений примерно 10% случаев

    ПризнакОшибки о неизвестных функциях и классах, которых на боевом сайте никогда не было.

    ПроверкаСравниваем версию языка и список расширений на стенде и на боевом сервере.

    Что делатьДоставляем недостающие расширения и приводим версию языка к боевой хотя бы по старшему номеру.

  6. Правила веб-сервера уводят на боевой адрес примерно 5% случаев

    ПризнакЛюбой адрес стенда заканчивается переходом на боевой домен в браузере.

    ПроверкаЧитаем правила перенаправления в файле веб-сервера и в настройках виртуального хоста.

    Что делатьОтключаем правила с жёстко прописанным доменом на время работы стенда.

Частые вопросы

Почему белая страница вместо текста ошибки?

Вывод ошибок на копии обычно выключен настройками боевого сайта. На стенде его включают сразу: разбор без текста ошибки превращается в гадание.

Нужно ли переносить каталог кэша?

Нет, он собирается заново и только мешает при переносе. Кэш и уменьшенные копии картинок исключают из копирования целиком.

Копия открылась, но админка требует ключ.

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

Почему на стенде уходят письма покупателям?

Почта и обмен перенеслись вместе с настройками и продолжают работать. Их отключают сразу после подъёма копии, до первой проверки заказа.

Стенд работает, но данных нет.

База восстановлена не полностью или подключена другая база. Сверяют число записей в основных таблицах с боевым сайтом.

Смежное

Первоисточник