Быстрые ссылки

Перенос сайта на другой хостинг: чек-лист без простоя

Перенос на другой хостинг — операция, при которой позиции в поиске не должны пострадать вообще. Адреса страниц не меняются, контент тот же, меняется только сервер. Проблемы возникают из-за мелочей: забытой почты, cron, сертификата, кодировки базы. Ниже — чек-лист, по которому я переношу сайты.

До начала: инвентаризация

Выпишите, что работает на старом хостинге помимо самого сайта:

  • почта на домене — где она: у хостинга, в Яндекс 360, в Google;
  • cron-задачи — обмен с 1С, рассылки, очистка кэша, бэкапы;
  • поддомены — тестовые версии, CRM, отдельные лендинги;
  • версия PHP и расширения (ionCube, imagick, intl, soap);
  • размер файлов и базы;
  • SSL-сертификат — бесплатный Let’s Encrypt или купленный;
  • внешние интеграции, привязанные к IP сервера: платёжные системы, API служб доставки, 1С.

Последний пункт часто забывают: если платёжная система принимает уведомления только с определённого IP или сайт обращается к API с белым списком адресов, после переноса оплата перестанет подтверждаться.

Шаг 1. Подготовьте новый хостинг

  • Создайте сайт и базу данных.
  • Установите ту же версию PHP, что на старом хостинге. Обновление PHP — отдельная задача, не смешивайте её с переносом.
  • Включите нужные расширения.
  • Проверьте лимиты: memory_limit, max_execution_time, upload_max_filesize.

Шаг 2. Скопируйте файлы

Через SSH это быстро и надёжно:

tar czf site.tgz --exclude=wp-content/cache --exclude=bitrix/cache -C /var/www example.by

Переносите архив на новый сервер (scp, rsync или через панель) и распаковывайте. Без SSH — через FTP, но долго и с риском пропустить файлы. Кэш переносить не нужно.

Можно и напрямую между серверами:

rsync -avz --exclude 'wp-content/cache' user@old-server:/var/www/example.by/ /var/www/example.by/

Шаг 3. Перенесите базу

mysqldump -u user -p --single-transaction --default-character-set=utf8mb4 dbname > dump.sql
mysql -u newuser -p newdb < dump.sql

Обратите внимание на кодировку. Старые сайты на Битриксе и Joomla бывают в windows-1251 — переносите в той же кодировке, иначе вместо текста будут знаки вопроса.

Для больших баз используйте сжатие: mysqldump … | gzip > dump.sql.gz.

Шаг 4. Поправьте конфигурацию

Пропишите новые доступы к базе:

  • WordPress — wp-config.php: DB_NAME, DB_USER, DB_PASSWORD, DB_HOST;
  • OpenCart — config.php и admin/config.php: DB_* и пути DIR_* (абсолютные пути к папкам на новом сервере);
  • 1С-Битрикс — /bitrix/.settings.php и /bitrix/php_interface/dbconn.php;
  • Joomla — configuration.php: доступы к базе и пути к папкам tmp и logs.

Пути в OpenCart и Joomla — частая причина ошибок после переноса: сайт открывается, но не загружаются изображения или не работает админка.

Шаг 5. Проверьте сайт до смены DNS

Главный приём, который исключает простой. На своём компьютере добавьте в файл hosts строку с IP нового сервера:

203.0.113.10 example.by www.example.by

Файл hosts: в Windows — C:\Windows\System32\drivers\etc\hosts, в macOS и Linux — /etc/hosts. Теперь ваш браузер открывает сайт с нового сервера, а все остальные — со старого.

Проверьте:

  • главную и несколько внутренних страниц;
  • админку;
  • формы — отправьте тестовую заявку;
  • корзину и оформление заказа;
  • поиск по сайту;
  • загрузку изображений в админке.

SSL на этом этапе можно проверить, только если сертификат уже выпущен на новом сервере. Let’s Encrypt обычно выпускается после смены DNS — заранее можно перенести сертификат со старого сервера или использовать проверку через DNS.

Шаг 6. Почта

Если почта на домене обслуживается старым хостингом, решите заранее, где она будет. Варианты:

  • перенести ящики на новый хостинг вместе с письмами (IMAP-синхронизация);
  • перейти на Яндекс 360 или Google Workspace.

При смене DNS проверьте MX-записи и SPF — они должны указывать на тот сервер, где почта будет жить. Если сайт отправляет письма через SMTP, проверьте эти настройки на новом сервере. Подробнее — в статье «Не приходят заявки с сайта».

Шаг 7. Смена DNS

Есть два способа:

  • сменить A-запись домена на IP нового сервера — если DNS управляется у регистратора или в отдельном сервисе;
  • сменить NS-серверы на серверы нового хостинга — тогда все записи (MX, TXT, поддомены) нужно заранее создать на новом хостинге.

За сутки до переноса уменьшите TTL записей до 300 секунд — тогда переключение пройдёт за минуты, а не за сутки.

Пока DNS обновляется, часть посетителей попадает на старый сервер, часть — на новый. Поэтому на время переключения не вносите изменений на сайте и, если это магазин, следите за заказами на обоих серверах.

Шаг 8. После переключения

  • Выпустите SSL-сертификат на новом сервере, если ещё не сделали.
  • Настройте cron-задачи.
  • Проверьте обмен с 1С, платёжные уведомления, API доставки.
  • Проверьте, что редиректы с http на https и с www на без www (или наоборот) работают как раньше.
  • Посмотрите в Яндекс Вебмастере, нет ли всплеска ошибок.
  • Настройте резервное копирование на новом хостинге.
  • Через неделю, убедившись, что всё работает, отключите старый хостинг. Не раньше.

Перенос с сменой домена

Это другая операция. Нужны постраничные 301-редиректы со старого домена на новый, указание переезда в Яндекс Вебмастере и в Search Console, и старый домен должен продлеваться минимум год. Позиции временно просядут даже при правильном переезде.

Хостинг в Беларуси

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

Частые ошибки

  • Перенесли сайт, но не почту — неделя без писем.
  • Не уменьшили TTL — переключение растянулось на сутки.
  • Перенесли базу в другой кодировке — знаки вопроса вместо текста.
  • Обновили PHP одновременно с переносом — непонятно, что именно сломалось.
  • Сразу отключили старый хостинг — нечего восстанавливать, если что-то забыли.

Если сайт большой, с обменом с 1С или вы не хотите рисковать — перенос входит в мои услуги: перенос сайта без простоя, с проверкой всех интеграций.

Особенности по CMS

WordPress

  • Если меняется адрес (поддомен для теста, другой домен), используйте wp search-replace, а не замену в SQL-дампе текстом: в базе WordPress много сериализованных данных, и простая замена ломает их длину.
wp search-replace 'https://old.example.by' 'https://example.by' --skip-columns=guid --dry-run

Сначала с —dry-run, чтобы увидеть количество замен, затем без него.

  • Проверьте постоянные ссылки: после переноса на сервер с другим веб-сервером (Apache на nginx) правила .htaccess не работают, и внутренние страницы отдают 404. Для nginx нужна директива try_files $uri $uri/ /index.php?$args.

OpenCart

  • Пропишите новые абсолютные пути в обоих config.php: DIR_APPLICATION, DIR_SYSTEM, DIR_IMAGE, DIR_STORAGE.
  • Очистите папки кэша и модификаций, затем «Обновить» в модификаторах.
  • Проверьте, что ЧПУ работают: для nginx нужно правило перенаправления на index.php?_route_=.

1С-Битрикс

  • Удобнее всего переносить через штатное резервное копирование и restore.php — он сам распакует архив и пропишет доступы к базе.
  • После переноса пройдите «Проверку системы» на новом сервере: она покажет недостающие расширения PHP и ошибки прав.
  • Перенесите агенты на cron и проверьте, что cron на новом сервере запускает /bitrix/modules/main/tools/cron_events.php.

Проверка после переноса командами

Пара полезных проверок с вашего компьютера:

curl -sI https://example.by/ | head -n 5
curl -sI http://example.by/ | grep -i location
nslookup -type=mx example.by

Первая показывает код ответа и сервер, вторая — работает ли перенаправление на HTTPS, третья — куда указывают почтовые записи домена.

Сколько держать старый хостинг

Минимум неделю после переключения DNS, а лучше до конца оплаченного периода. За это время всплывают забытые мелочи: еженедельная cron-задача, письмо от платёжной системы, обращения на старый IP. Если старый хостинг уже удалён, восстановить забытое будет не из чего.

Чек-лист переноса

  1. Инвентаризация: почта, cron, поддомены, PHP, интеграции по IP.
  2. Новый хостинг с той же версией PHP.
  3. Копия файлов без кэша.
  4. Перенос базы в той же кодировке.
  5. Новые доступы и пути в конфигурации.
  6. Проверка через hosts до смены DNS.
  7. Снижение TTL за сутки.
  8. Перенос почты, MX и SPF.
  9. Смена DNS в нерабочее время.
  10. SSL, cron, интеграции, редиректы.
  11. Резервные копии на новом хостинге.
  12. Старый хостинг — не раньше чем через неделю.

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

Можно ли перенести сайт без участия старого хостинга?

Да, если есть доступ к файлам по FTP или SSH и к базе через phpMyAdmin. Если доступов нет, их восстанавливают у старого провайдера.

Изменятся ли позиции в поиске после переноса?

Если адреса страниц, содержимое и HTTPS остались прежними, а сайт не был недоступен долго, — нет.

Нужна помощь?

Если не хочется разбираться самому или не получилось — напишите мне. Посмотрю сайт и скажу, что сломалось и сколько стоит исправить.

Перенос сайта на другой хостингНаписать в TelegramНаписать в Viber

Leave a comment