Подготовка и бэкап
Перед любым переносом сделайте полный бэкап. На старом сервере создайте архив файлов сайта:
tar -czf site-backup.tar.gz /var/www/yoursite/
Отдельно сделайте дамп базы данных. Для MySQL:
mysqldump -u root -p dbname > db-backup.sql
Для PostgreSQL:
pg_dump -U postgres dbname > db-backup.sql
Сохраните конфиги Nginx/Apache, crontab:
crontab -l > cron-backup.txt
Также сохраните список установленных пакетов. Проверьте, что бэкап корректен — попробуйте распаковать архив и убедитесь, что SQL-дамп не обрезан.
Перенос файлов на новый сервер
Самый надёжный способ —
rsync через SSH:rsync -avz --progress /var/www/yoursite/ user@new-server:/var/www/yoursite/
Rsync передаёт только изменённые файлы и умеет докачивать при обрыве соединения. Альтернатива:
scp -r /var/www/yoursite/ user@new-server:/var/www/yoursite/
Однако scp не поддерживает докачку. Для больших объёмов (десятки гигабайт) используйте
rsync с параметром --compress. Не забудьте перенести конфигурационные файлы, включая .env, если они не в репозитории.Восстановление базы данных
На новом сервере установите ту же версию СУБД, что и на старом — это избавит от проблем совместимости. Создайте базу и пользователя, затем импортируйте дамп. Для MySQL:
mysql -u root -p dbname < db-backup.sql
Для PostgreSQL:
psql -U postgres dbname < db-backup.sql
После импорта проверьте целостность: зайдите в базу и выполните пару выборок по ключевым таблицам. Убедитесь, что все таблицы на месте и данные корректны.
Переключение DNS
За 2-24 часа до переноса уменьшите TTL записей DNS до 300 секунд (5 минут) — так старые значения быстрее вытеснятся из кэшей. После того как новый сервер полностью настроен и протестирован, измените A-запись домена на IP нового сервера. Распространение DNS занимает от нескольких минут до суток, в зависимости от TTL и провайдеров. Пока DNS переключается, оба сервера должны быть работоспособны — часть пользователей будет попадать на старый, часть на новый.
Тестирование до переключения
Не переключайте DNS, пока не убедитесь, что сайт работает на новом сервере. Добавьте запись в локальный файл hosts (замените IP на адрес нового сервера):
echo '1.2.3.4 yourdomain.com' >> /etc/hosts
Откройте сайт в браузере и проверьте: работает ли авторизация, корректны ли изображения, нет ли ошибок 500. Проверьте логи Nginx/Apache на наличие ошибок. Протестируйте формы, отправку писем и другую критическую функциональность.
SSL-сертификат на новом сервере
После переключения DNS и его распространения выпустите новый SSL-сертификат на новом сервере:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Если вы используете Cloudflare — SSL проксируется на их стороне, и на сервере достаточно самоподписанного сертификата или Cloudflare Origin Certificate. Не забудьте настроить автообновление:
sudo certbot renew --dry-run
Эта команда проверит, что cron/timer для обновления работает.