Статья

Как мигрировать сайт на новый VPS без потери трафика и SEO‑рейтинга

Если вы уже давно держите свой проект в интернете и решили перейти на более мощный виртуальный сервер (VPS), то, вероятно, задумываетесь: *«А как перенести всё без потери позиций?»*. Не волнуйтесь — я сам стоял на этом этапе. Ниже разложу процесс так, чтобы даже новичок смог следовать каждому шагу, а ваш сайт остался видимым для поисковиков и пользователей.

1. Почему нужен новый VPS?

Прежде чем бросаться в миграцию, давайте уточним цель:

Именно эти факторы делают VPS (Virtual Private Server) лучшим выбором для бизнеса, блогов и интернет‑магазинов. Если вы ищете качественный VPS‑хостинг, обратите внимание на **Azerta.ru** – они предлагают гибкие тарифы, круглосуточную техподдержку и 100 % uptime.

2. Подготовка к миграции

2.1. Создаём резервную копию

Перед тем как менять адреса и настройки, надо сохранить всё в надёжном месте.

Что Как сделать
Файлы сайта (HTML, PHP, медиа) tar -czvf site-backup.tar.gz /var/www/yourdomain.com
База данных MySQL mysqldump -u root -p yourdb > db-backup.sql
Конфигурации веб‑сервера Скопировать /etc/nginx/sites-available/ или /etc/apache2/sites-available/
Ошибка №1: «Собрал только файлы, но забыли дамп базы». В итоге сайт без контента.
Решение: всегда делайте backup сразу после изменения кода.

2.2. Выбираем VPS‑хостинг

Риторический вопрос: «А зачем платить за тестовое место?»
Ответ прост: проверяем конфигурацию, без риска для продакшена.

2.3. Получаем данные доступа

После заказа VPS вы получите:

Запишите их в безопасном месте — они понадобятся позже.

3. Установка и настройка окружения на новом сервере

3.1. Подключаемся по SSH

ssh root@NEW_VPS_IP

Ошибка №2: «Команда ssh не распознаётся».
Решение: убедитесь, что OpenSSH установлен (apt install openssh-server).

3.2. Устанавливаем веб‑сервер и PHP

Я обычно использую Nginx + PHP‑FPM, потому что он быстрее и легче в настройке.

apt update && apt upgrade -y
apt install nginx php-fpm php-mysql mariadb-client -y

Ошибка №3: «Проблемы с зависимостями при установке PHP».
Решение: обновите список пакетов и используйте -f для принудительной установки.

3.3. Настраиваем MariaDB

mysql_secure_installation   # задаём root‑пароль, удаляем anon users

Создаём базу данных и пользователя:

CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON yourdb.* TO 'youruser'@'localhost' IDENTIFIED BY 'strongpassword';
FLUSH PRIVILEGES;

Ошибка №4: «Пользователь не имеет прав на импорт».
Решение: проверяйте синтаксис GRANT и убедитесь, что пароль соответствует.

3.4. Перенос файлов

Используем rsync для быстрой передачи:

rsync -avz --progress /var/www/yourdomain.com/ root@NEW_VPS_IP:/var/www/

Ошибка №5: «Файлы не копируются, пропущены права».
Решение: добавьте -o и -g, чтобы сохранить владельца и группу.

3.5. Перенос базы данных

mysql -u youruser -p yourdb < /root/db-backup.sql

Если база большая, можно использовать `mysqldump --single-transaction`.

4. Настройка веб‑сервера на новом VPS

4.1. Создаём конфиг Nginx

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    root /var/www/yourdomain.com/public_html;
    index index.php index.html index.htm;

    access_log /var/log/nginx/yourdomain_access.log;
    error_log /var/log/nginx/yourdomain_error.log;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;  # меняйте под свою версию
    }

    location ~ /\.ht {
        deny all;
    }
}

Ошибка №6: «PHP‑FPM не запускается».
Решение: проверьте, что сокет указан правильно (php8.1-fpm.sock).

4.2. Включаем сайт

ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Если конфиг содержит ошибки, `nginx -t` покажет их.

5. Переадресация и сохранение SEO

5.1. Перенаправляем старый домен на новый IP

Если вы меняете только сервер, но домен остаётся тем же, то просто обновите A‑запись в DNS у вашего регистратора.

Ошибка №7: «Пользователи видят “404 Not Found” после смены IP».
Решение: убедитесь, что Nginx слушает правильный IP и порт.

5.2. Проверяем наличие 301‑переадресаций

Если вы меняете структуру URL (например, переходим с example.com/blog/old на example.com/articles/new), создайте правила в .htaccess или Nginx:

rewrite ^/blog/(.*)$ /articles/$1 permanent;

Ошибка №8: «Переадресация не работает, появляется 500 Internal Server Error».
Решение: проверьте синтаксис правил и наличие модуля rewrite.

5.3. Обновляем карту сайта

После миграции генерируем новый sitemap.xml:

php artisan sitemap:generate   # для Laravel

или вручную.

Публикуйте его в Google Search Console, обновите ссылки в robots.txt:

User-agent: *
Disallow:
Sitemap: https://yourdomain.com/sitemap.xml

Ошибка №9: «Google не видит новый sitemap».
Решение: убедитесь, что файл доступен без ошибок 403/404.

6. Проверка работоспособности

6.1. Тестируем локально

curl -I http://localhost/

Убедитесь, что статус 200 и заголовки корректные.

6.2. Проверяем SEO‑показатели

6.3. Мониторинг

Установите UptimeRobot или аналогичный сервис:

apt install fail2ban
systemctl enable nginx

Fail2Ban защитит от brute‑force атак, а UptimeRobot будет оповещать о недоступности сервера.

7. Что делать, если что-то пошло не так?

1. **Восстановите из резервной копии** – это самое быстрое решение. 2. Проверьте логи: - `/var/log/nginx/error.log` - `/var/log/mysql/error.log` 3. Если сайт недоступен после смены IP, откатитесь к старому серверу и повторите миграцию с более тщательной проверкой DNS.

8. Итоги

Теперь вы знаете, как перенести сайт на новый VPS без потери трафика и позиций в поиске. Удачной миграции! 🚀
,