NexNode
Все гайды
Веб-серверСредний

Перенос сайта на WordPress с хостинга на VPS: пошагово

Переезжаем с виртуального хостинга на свой сервер: установка LEMP, перенос файлов и базы, домен, HTTPS и проверка без простоя.

13 мин чтенияобновлено 29 июля 2026 г.

Виртуальный хостинг хорош на старте, но рано или поздно упирается в потолок: сайт тормозит под нагрузкой, нельзя поставить нужное расширение PHP, соседи по серверу съедают ресурсы, а поддержка отвечает «оптимизируйте сайт».

VPS снимает эти ограничения. Разберём переезд так, чтобы посетители не заметили простоя.

Что нужно от сервера

Посещаемость в суткиПамятьЯдра
до 10002 ГБ2
1000–50004 ГБ2
5000+ или магазин8 ГБ4

WooCommerce требовательнее обычного блога примерно вдвое — закладывайте запас.

Локация. Для российской аудитории берите сервер в России: скорость отклика напрямую влияет на позиции в поиске и на поведение посетителей. Подобрать можно в каталоге по странам.

Шаг 1. Ставим веб-сервер, PHP и базу

Мы соберём связку nginx + PHP-FPM + MariaDB. Она заметно экономнее классического Apache.

терминал
root@vps:~#apt update && apt upgrade -yroot@vps:~#apt install -y nginx mariadb-server php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl unzip

Защитим базу данных:

терминал
root@vps:~#mysql_secure_installation

Отвечайте: root-пароль — задать, анонимных пользователей — удалить, удалённый вход root — запретить, тестовую базу — удалить.

Шаг 2. Создаём базу под сайт

терминал
root@vps:~#mysql -u root -p

Внутри выполните:

CREATE DATABASE wp_site CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'ПРИДУМАЙТЕ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON wp_site.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Кодировка utf8mb4 обязательна — иначе на сайте поломаются эмодзи и часть символов.

Шаг 3. Забираем данные со старого хостинга

База. В панели старого хостинга откройте phpMyAdmin, выберите базу, вкладка «Экспорт», формат SQL, скачайте файл.

Есть SSH-доступ к старому хостингу — быстрее так:

старый хостинг
user@old:~#mysqldump -u СТАРЫЙ_ЮЗЕР -p СТАРАЯ_БАЗА | gzip > backup.sql.gz

Файлы. Заберите содержимое папки сайта — обычно public_html или www. Достаточно каталога wp-content и файла wp-config.php, само ядро WordPress мы скачаем свежее.

Шаг 4. Разворачиваем на новом сервере

терминал
root@vps:~#mkdir -p /var/www/mysite && cd /var/www/mysiteroot@vps:~#wget https://ru.wordpress.org/latest-ru_RU.tar.gzroot@vps:~#tar -xzf latest-ru_RU.tar.gz --strip-components=1root@vps:~#rm latest-ru_RU.tar.gz

Загрузите со своего компьютера папку wp-content:

ваш компьютер
user@local:~#scp -r ./wp-content root@НОВЫЙ_IP:/var/www/mysite/

Импортируйте базу:

терминал
root@vps:~#gunzip -c backup.sql.gz | mysql -u wp_user -p wp_site

Настройте права — это частая причина ошибок «не удалось записать файл»:

терминал
root@vps:~#chown -R www-data:www-data /var/www/mysiteroot@vps:~#find /var/www/mysite -type d -exec chmod 755 {} \;root@vps:~#find /var/www/mysite -type f -exec chmod 644 {} \;

Шаг 5. Настраиваем wp-config.php

терминал
root@vps:~#cd /var/www/mysite && cp wp-config-sample.php wp-config.php && nano wp-config.php

Впишите данные базы:

define( 'DB_NAME', 'wp_site' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', 'ваш_пароль' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );

Ключи безопасности сгенерируйте на официальном сервисе и вставьте вместо заготовок.

Шаг 6. Конфигурация nginx

терминал
root@vps:~#nano /etc/nginx/sites-available/mysite
server {
    listen 80;
    server_name мойсайт.ру www.мойсайт.ру;
    root /var/www/mysite;
    index index.php;

    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~* \.(jpg|jpeg|png|gif|webp|css|js|woff2)$ {
        expires 30d;
        access_log off;
    }

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

Строка try_files отвечает за человекопонятные адреса — без неё все страницы кроме главной будут отдавать 404.

терминал
root@vps:~#ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/root@vps:~#nginx -t && systemctl reload nginx

Шаг 7. Проверяем ДО переключения домена

Ключевой момент для переезда без простоя: посмотреть сайт на новом сервере, пока домен ещё указывает на старый.

Откройте на своём компьютере файл hosts (на Windows C:\Windows\System32\drivers\etc\hosts, на macOS и Linux /etc/hosts) и добавьте строку:

123.45.67.89  мойсайт.ру www.мойсайт.ру

Теперь только ваш компьютер будет открывать сайт с нового сервера. Проверьте главную, внутренние страницы, админку, формы, картинки.

Не забудьте убрать строку

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

Шаг 8. Переключаем домен и ставим HTTPS

Убедились, что всё работает — меняйте A-запись домена на новый IP. Обновление занимает от нескольких минут до пары часов.

Когда домен заработает, выпускайте сертификат:

терминал
root@vps:~#apt install -y certbot python3-certbot-nginxroot@vps:~#certbot --nginx -d мойсайт.ру -d www.мойсайт.ру

Подробнее — в гайде про nginx и HTTPS.

Шаг 9. Меняем адреса внутри базы

Если старый сайт работал по http, а новый по https, в базе останутся старые ссылки, и часть картинок не загрузится. Замените их:

терминал
root@vps:~#cd /var/www/mysiteroot@vps:~#wget -O wp-cli.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.pharroot@vps:~#php wp-cli.phar search-replace 'http://мойсайт.ру' 'https://мойсайт.ру' --allow-root

Не делайте замену через SQL напрямую

В WordPress часть настроек хранится в сериализованном виде, где записана длина строки. Простой UPDATE ... REPLACE ломает такие записи, и слетают настройки темы и виджетов. WP-CLI учитывает это правильно.

Держим старый хостинг ещё неделю

Не отключайте старый сервер сразу. Пока обновляются DNS-записи, часть посетителей ещё будет приходить туда. Неделя — безопасный запас, и есть куда откатиться, если вылезет неожиданное.

Что сделать после переезда

Бэкапы. На хостинге их делал провайдер, теперь это ваша забота. Настройте резервное копирование базы и папки wp-content.

Защита. WordPress — самая атакуемая система в интернете. Обязательно пройдите базовые меры безопасности.

Мониторинг. Раньше за доступностью следил хостинг. Поставьте Uptime Kuma, чтобы узнавать о падении первым.

Подобрать сервер под сайт

Для обычного сайта на WordPress достаточно 2 ГБ памяти, для магазина берите 4 ГБ.

Смотреть тарифы