Содержание
Представьте: ваш сайт — это живой организм. Каждая страница — клетка, каждая кнопка — нервное окончание, а база данных — его сердце. Когда вы решаете переехать на новый VPS, вы не просто меняете хостинг. Вы переселяете целую экосистему. И если вы сделаете это неаккуратно — сайт может «умереть» на глазах у посетителей. А поисковые системы, как строгие врачи, запишут это как длительную недоступность и начнут снижать ранжирование. Но что, если вы сможете перенести сайт так, что никто — ни пользователь, ни Google, ни Яндекс — не заметит смены адреса? Это не фантастика. Это реальность, которую мы раскроем пошагово.
В этой статье вы получите исчерпывающее, проверенное на практике руководство по миграции WordPress на новый VPS с нулевым временем простоя. Мы не просто перечислим команды — мы объясним, почему именно так, а не иначе. Вы узнаете, как правильно настроить сервер, как не потерять ни одного комментария из базы данных, как избежать типичных ошибок, которые ломают SEO, и как внедрить SSL без паники. Всё — с примерами кода, реальными путями, лайфхаками и стратегиями, которые используют топовые веб-студии по всему миру.
Что вам понадобится: полный чек-лист перед началом миграции
Перенос сайта — это не «нажал кнопку и всё готово». Это операция, требующая подготовки. Прежде чем вы поднимете SSH-клиент, соберите этот комплект инструментов — он станет вашей аптечкой на пути к идеальному переносу.
- Доступ к старому серверу: SSH-логин и пароль (или ключ), FTP/SFTP-данные. Если вы используете панель управления (например, cPanel), убедитесь, что у вас есть права на экспорт базы данных и файлов.
- Новый VPS: Выбран и оплачен. Запишите его публичный IP-адрес — он вам понадобится в каждом этапе. Рекомендуем: минимум 2 ядра CPU, 4 ГБ RAM, SSD-диск. Для сайтов с трафиком >10 тыс. визитов в месяц — 4 ядра и 8 ГБ RAM.
- SSH-клиент: Для Windows — PuTTY или Windows Terminal с OpenSSH. Для macOS и Linux — встроенный Terminal. Убедитесь, что вы умеете подключаться по SSH:
ssh root@ваш_ip_нового_vps - FTP/SFTP-клиент: Мы рекомендуем FileZilla Pro (платная, но надёжная) или бесплатную FileZilla Client. Не используйте обычный FTP — только SFTP (SSH File Transfer Protocol). Порт: 22.
- Домен и доступ к DNS-панели: Вам нужно войти в панель управления доменом (Reg.ru, Nic.ru, Cloudflare, Google Domains и т.д.). Там вы будете менять A-записи.
- Резервная копия текущего сайта: Даже если вы всё делаете аккуратно — сделайте дополнительный бэкап через плагин (например, UpdraftPlus или Duplicator). Он спасёт вас, если что-то пойдёт не так.
- Время: Зарезервируйте 2–4 часа. Не начинайте миграцию перед важной кампанией или в пятницу вечером. Лучшее время — утро в будний день, когда трафик минимальный.
Важно: Не забудьте отключить все кеширующие плагины (WP Rocket, LiteSpeed Cache, W3 Total Cache) и CDN (Cloudflare, BunnyCDN) до начала миграции. Иначе вы будете копировать устаревшие версии страниц.
Настройка нового VPS: создание идеального окружения для WordPress
WordPress — это не статический HTML-сайт. Это динамическое приложение, которое требует сложной инфраструктуры: веб-сервер, PHP-движок, база данных и дополнительные модули. Наша задача — собрать это как конструктор, но с нулевыми ошибками.
Подключитесь к новому VPS по SSH и выполните следующие команды по порядку. Каждая — как шаг в строительстве дома.
Шаг 1: Обновление системы
apt update && apt upgrade -y
Это не просто «обновить». Это очистка от уязвимостей. Устаревшие пакеты — это дыры в стене вашего сервера. Всегда начинайте с этого.
Шаг 2: Установка Nginx — современный веб-сервер для скорости
apt install nginx -y
systemctl enable nginx
systemctl start nginx
Почему Nginx, а не Apache? Nginx — асинхронный сервер. Он обрабатывает тысячи одновременных соединений без нагрузки на CPU. Apache — синхронный. Для высоконагруженных сайтов — Nginx незаменим. Проверьте работу: откройте в браузере IP вашего VPS. Должна появиться страница «Welcome to nginx!».
Шаг 3: Установка PHP 8.1 или 8.2 — сердце WordPress
apt install php php-fpm php-mysql php-cli php-curl php-xml php-mbstring php-gd php-zip php-intl php-soap -y
Обратите внимание: мы установили php-fpm — FastCGI Process Manager. Он работает вместе с Nginx и обеспечивает стабильную обработку PHP-запросов. Без php-mbstring и php-xml многие плагины (например, WooCommerce или Yoast SEO) не будут работать. Проверьте версию:
php -v
Должно быть 8.1 или 8.2. Если у вас 7.4 — это устаревшая версия. WordPress официально поддерживает только 8.0+. Устаревший PHP — главная причина медленной работы и уязвимостей.
Шаг 4: MariaDB — надёжная база данных вместо MySQL
Мы выбираем MariaDB — это форк MySQL, но с лучшей производительностью и совместимостью. Командаapt install mariadb-server -y systemctl enable mariadb systemctl start mariadb mysql_secure_installationmysql_secure_installation— обязательна. Она:
- Задаёт пароль root-пользователя (запишите его!)
- Отключает анонимных пользователей
- Запрещает удалённый доступ root
- Удаляет тестовую базу
Шаг 5: WP-CLI — ваш суперинструмент для миграции
WP-CLI — это терминальный контроль WordPress. С его помощью вы можете экспортировать базу, устанавливать плагины, менять URL — без захода в админку. Это критично для миграции без простоев.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
wp --info
Если вы видите вывод с версией WP-CLI и путями — значит, всё установлено. Теперь вы можете выполнять команды вроде wp core download или wp db export — прямо на сервере, без FTP.
Резервное копирование: как сохранить всё содержимое сайта без потерь
Вы не просто «копируете файлы». Вы делаете двоичный снимок вашего сайта. Один пропущенный файл — и сломанная форма обратной связи. Один утерянный ID в базе — и все комментарии исчезнут. Никаких «на глаз».
Этап 1: Скачивание файлов сайта через SFTP
Откройте FileZilla. Подключитесь к старому серверу:
- Хост: IP старого VPS
- Пользователь: root (или ваш пользователь)
- Пароль: ваш пароль
- Порт: 22
- Тип соединения: SFTP
Перейдите в директорию WordPress. Где она? Часто это:
/var/www/html/— стандарт для Ubuntu/Debian/home/ваш_пользователь/public_html/— если используется пользовательский домен/var/www/вашдомен.ру/— если настроены виртуальные хосты
Как узнать точно? Подключитесь по SSH к старому серверу и выполните:
grep -i documentroot /etc/nginx/sites-enabled/*
Или, если Apache:
Скачайте всю папку на локальный диск. Не выбирайте отдельные файлы. Не пропускайте папки grep DocumentRoot /etc/apache2/sites-available/*.conf/wp-content/uploads/ — там все ваши изображения, видео, PDF-файлы. Это может быть 10 ГБ. Не бойтесь — это нормально.
Этап 2: Экспорт базы данных — без phpMyAdmin
Большинство гайдов говорят: «Откройте phpMyAdmin». Но на VPS он часто не установлен. И это правильно — он уязвим. Мы используем mysqldump — мощный, быстрый, безопасный.
Подключитесь к старому серверу по SSH и найдите имя базы данных. Откройте файл wp-config.php:
nano /var/www/html/wp-config.php
Найдите строку:
Запишите имя — например, define('DB_NAME', 'ваша_база_данных');wordpress_db.
Теперь экспортируйте базу:
mysqldump -u root -p wordpress_db > /tmp/wordpress_backup.sql
Система запросит пароль MySQL root. Введите его. Файл wordpress_backup.sql появится в папке /tmp/.
Скачайте его через FileZilla из /tmp/wordpress_backup.sql на ваш компьютер. Сделайте копию этого файла в двух местах! Одна — на локальном диске, вторая — в облаке (Google Drive, Dropbox).
Перенос файлов WordPress на новый VPS: точная копия, без ошибок
Теперь вы готовы к загрузке. Но не спешите! Есть важный нюанс: если вы просто перетащите файлы — права доступа могут сломаться. А это приведёт к ошибкам 403 Forbidden.
Подключитесь к новому VPS через FileZilla теми же параметрами, что и раньше — только IP теперь новый.
Перейдите в директорию, куда вы хотите разместить сайт. Обычно это:
/var/www/html/
Если её нет — создайте:
mkdir /var/www/html
Теперь — важно! Установите правильные права доступа. В FileZilla кликните правой кнопкой по папке /var/www/html/ → File permissions. Установите:
- Owner: read, write, execute
- Group: read, execute
- Others: read, execute
Или через SSH (если предпочитаете команды):
chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html/
Теперь перетащите все файлы с вашего компьютера в эту папку. Не удаляйте ничего. Даже файлы вроде .htaccess — их не будет, потому что вы используете Nginx. Но оставьте их — они не повредят.

Создание новой базы данных: безопасный пользователь и надёжная конфигурация
Вы не должны использовать root-пользователя для WordPress. Это как оставлять ключи от дома под ковриком. Мы создадим отдельного пользователя с минимальными правами.
Подключитесь к новому VPS по SSH и войдите в MySQL:
mysql -u root -p
Введите пароль. Теперь выполните команды по одной:
CREATE DATABASE wordpress_new_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'ВашНадёжныйПароль123!@#';
GRANT ALL PRIVILEGES ON wordpress_new_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Пояснения:
utf8mb4— поддерживает эмодзи и все языки мира. Без этого — кириллица может сломаться.wp_user@localhost— означает, что пользователь может подключаться только с локального сервера. Это безопасно.FLUSH PRIVILEGES;— перезагружает права. Без этой команды — изменения не вступят в силу.
Запишите в надёжное место:
- Имя базы: wordpress_new_db
- Пользователь: wp_user
- Пароль: ВашНадёжныйПароль123!@#
Импорт базы данных: как перенести всё содержимое без потерь
Теперь загрузим вашу резервную копию в новую базу. Это самый критичный этап. Ошибка здесь — и вы потеряете все записи, пользователей, товары, отзывы.
Загрузите файл wordpress_backup.sql на новый VPS. Используйте FileZilla — перетащите его в /tmp/ на новом сервере.
Подключитесь по SSH и выполните:
mysql -u wp_user -p wordpress_new_db < /tmp/wordpress_backup.sql
Система запросит пароль — введите тот, который вы задали для wp_user.
Что происходит? Команда читает SQL-файл и выполняет все команды в нём: создаёт таблицы, вставляет данные, устанавливает индексы. Это может занять от 30 секунд до 10 минут — в зависимости от размера сайта.
Проверьте результат:
mysql -u wp_user -p wordpress_new_db -e "SHOW TABLES;"
Вы должны увидеть список таблиц: wp_posts, wp_users, wp_options — это ваш сайт. Если таблиц нет — импорт не удался. Повторите шаг.
Настройка wp-config.php: ключ к доступу к новой базе
Файл wp-config.php — это паспорт вашего сайта. Он говорит WordPress: «Соединись с этой базой, под этим логином, с этим паролем».
Откройте его на новом сервере:
nano /var/www/html/wp-config.php
Найдите блок:
define('DB_NAME', 'ваша_база_данных');
define('DB_USER', 'ваш_пользователь');
define('DB_PASSWORD', 'ваш_пароль');
define('DB_HOST', 'localhost');
Замените значения на те, что вы создали:
define('DB_NAME', 'wordpress_new_db');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'ВашНадёжныйПароль123!@#');
define('DB_HOST', 'localhost');
Важно! Убедитесь, что нет лишних пробелов, кавычек или символов. Даже один лишний символ — и сайт не запустится.
Теперь добавьте две важные строки для безопасности и скорости — прямо перед /* That's all, stop editing! Happy blogging. */:
define('WP_MEMORY_LIMIT', '512M');
define('WP_MAX_MEMORY_LIMIT', '1024M');
Это предотвращает ошибки памяти при работе с большими медиафайлами и плагинами.
Сохраните файл: Ctrl+O → Enter → Ctrl+X.
Обновление DNS-записей A и CNAME: как заставить домен «переключиться»
Вы сделали всё на сервере. Но пока вы вводите в браузере вашдомен.ру — вы попадаете на старый сервер. Почему? Потому что DNS-записи указывают на старый IP.
Войдите в панель управления доменом (например, Cloudflare, Reg.ru, Nic.ru).
Найдите раздел DNS-записи.
Ищите запись типа A с именем @ (или пустое поле). Её значение — старый IP. Замените его на IP нового VPS.
Теперь найдите запись типа CNAME с именем www. Её значение должно быть @ или вашдомен.ру. Если её нет — создайте:
- Name: www
- Type: CNAME
- Value: вашдомен.ру
- TTL: 300 (5 минут)
Почему TTL 300? TTL — Time To Live. Это время, сколько DNS-серверы будут кешировать запись. Установив 300, вы гарантируете, что через 5 минут все пользователи увидят новый IP. После миграции — можно вернуть TTL в 86400 (24 часа) для оптимизации.
Совет от SEO-эксперта: Если вы используете Cloudflare — временно отключите прокси (оранжевое облако). Поставьте «DNS only» (серое облако). Иначе Cloudflare будет кешировать старую версию сайта, и вы не сможете протестировать миграцию.

Установка SSL-сертификата Let’s Encrypt: автоматический HTTPS без платы
HTTPS — не просто «зелёная замочка». Это сигнал Google о доверии. Без HTTPS ваш сайт теряет в SEO, а пользователи не доверяют формам. И мы установим его бесплатно и автоматически.
На новом VPS выполните:
apt install certbot python3-certbot-nginx -y
Затем:
certbot --nginx
Система:
- Обнаружит ваш домен (если DNS уже обновился)
- Создаст сертификат от Let’s Encrypt
- Автоматически настроит Nginx на использование HTTPS
- Добавит редирект с HTTP на HTTPS
Ответьте на вопросы:
- Введите email — для уведомлений о просрочке сертификата
- Согласитесь с условиями
- Выберите, хотите ли вы подписаться на рассылку — по желанию
- Выберите домен: укажите
вашдомен.руиwww.вашдомен.ру - Выберите: Redirect — Make all requests redirect to secure HTTPS access
После завершения вы увидите:
Certbot has set up a redirect from HTTP to HTTPS.
Проверьте:
- Откройте
http://вашдомен.ру— должен автоматически перенаправить наhttps:// - Откройте
https://вашдомен.ру— должна появиться зелёная замочка - Проверьте через SSL Labs — рейтинг должен быть A+
Важно! Let’s Encrypt сертификат действует 90 дней. Certbot автоматически настроил обновление. Проверьте его:
systemctl status certbot.timer
Должно быть: active (running).
Финальная проверка: как убедиться, что всё работает идеально
Миграция почти завершена. Но вы не можете просто «надеяться». Нужно проверить.
Проверка 1: DNS-пропагация
Откройте терминал и выполните:
ping вашдомен.ру
Если IP совпадает с новым VPS — DNS обновился. Если нет — подождите 15–30 минут. Можно использовать DNSChecker.org — он покажет, где уже обновилось.
Проверка 2: Работоспособность сайта
Откройте сайт в браузере. Проверьте:
- Главная страница загружается?
- Картинки отображаются?
- Формы (обратная связь, подписка) работают?
- Админка:
https://вашдомен.ру/wp-admin— входите?
Если сайт не открывается — проверьте логи:
tail -f /var/log/nginx/error.log
Если видите Permission denied — проверьте права на папку /var/www/html/. Если Access denied for user — проверьте wp-config.php.
Проверка 3: SEO-проверка
Перейдите в Google Search Console. Убедитесь, что ваш сайт привязан к новому URL. Запустите «Проверить URL» — он должен отвечать 200 OK.
Проверьте robots.txt: https://вашдомен.ру/robots.txt. Должен быть корректным. Не должно быть Disallow: /.
Заключение: миграция без простоев — это не магия, а дисциплина
Вы только что выполнили перенос WordPress на новый VPS — без простоев, без потерь, без SEO-штрафов. Это не просто техническая операция. Это стратегия, которая показывает, насколько вы профессионал.
Вот ключевые принципы, которые вы теперь знаете:
- Никогда не пропускайте резервное копирование. Даже если всё «кажется» простым.
- Настройка сервера — это основа. Без правильного Nginx, PHP и MariaDB сайт будет медленным или уязвимым.
- DNS — это время. Не ждите мгновенного результата. Установите TTL=300, чтобы ускорить обновление.
- HTTPS — обязательный стандарт. Не просто «надо». Это сигнал Google, что вы заботитесь о пользователях.
- WP-CLI — ваш лучший друг. Освойте его. Он сэкономит вам сотни часов.
Чтобы в будущем переносы были ещё проще — настройте автоматические бэкапы (например, через UpdraftPlus + Google Drive) и создайте шаблон настройки VPS — сохраните все команды в текстовом файле. Вы сможете повторить этот процесс за 30 минут, а не за 4 часа.
Поздравляем. Ваш сайт теперь работает быстрее, безопаснее и надёжнее. И никто — ни пользователь, ни Google, ни Яндекс — не узнал, что вы его переехали. Это — идеальный перенос. И теперь вы знаете, как его сделать.
Совет на будущее: Через 24 часа после миграции — удалите старый сервер. Не оставляйте его включённым. Это риск дублирования контента и штрафа от поисковиков.
Если вы нашли эту инструкцию полезной — поделитесь ею с коллегой. Или оставьте комментарий ниже: «Какой этап был самым сложным?» — мы ответим лично.