К основному содержимому

Миграция с shared-хостинга на VDS: пошаговое руководство

Миграция · 19.04.2026 · 4 мин чтения
Иллюстрация к статье «Миграция с shared-хостинга на VDS: пошаговое руководство»

Переход с общего хостинга (shared) на виртуальный выделенный сервер (VDS/VPS) — это закономерный шаг, когда сайт вырастает из ресурсных ограничений. VDS даёт полный root-доступ, независимые ресурсы CPU/RAM и возможность тонкой настройки под ваши нужды.

Когда пора переезжать с shared на VDS

СимптомПричинаРешение
Сайт тормозит в часы пикКонкуренция за ресурсы с соседямиVDS с выделенными ресурсами
Ошибки 503 / превышение лимитовCPU/RAM квоты sharedVDS без ограничений хостера
Нельзя установить нужный PHP/PythonShared контролирует окружениеПолный root на VDS
Нужен cron каждую минутуShared запрещает частые заданияЛюбой cron на VDS
Несколько проектовДополнительные сайты стоят дорогоНеограниченное кол-во сайтов на VDS

Подготовка VDS перед миграцией

# Обновить систему (Ubuntu/Debian)
apt update && apt upgrade -y

# Установить веб-стек
apt install nginx php8.3-fpm php8.3-mysql php8.3-mbstring   php8.3-xml php8.3-curl php8.3-zip mariadb-server -y

# Запустить сервисы
systemctl enable --now nginx php8.3-fpm mariadb

Шаг 1: Создание резервной копии на shared-хостинге

# Через cPanel: Backup Wizard → Full Backup
# Или вручную через SSH (если доступен)
tar -czf ~/backup-site.tar.gz ~/public_html/
mysqldump -u dbuser -p dbname > ~/backup-db.sql

Шаг 2: Перенос файлов на VDS

># Скачать архив с shared на локальный ПК, затем загрузить на VDS
scp backup-site.tar.gz root@YOUR-VDS-IP:/var/www/

# Или напрямую с shared на VDS через rsync
rsync -avz --progress user@shared-host:~/public_html/   root@YOUR-VDS-IP:/var/www/example.com/

# Распаковать
cd /var/www/
tar -xzf backup-site.tar.gz

Шаг 3: Восстановление базы данных

# Создать БД и пользователя
mysql -u root -p <<'SQL'
CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPass123';
GRANT ALL ON mysite.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
SQL

# Импортировать дамп
mysql -u myuser -p mysite < backup-db.sql

Шаг 4: Настройка Nginx

# /etc/nginx/sites-available/example.com
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

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

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

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

Шаг 5: Тестирование до смены DNS

># Добавить в /etc/hosts на вашем ПК для теста
YOUR-VDS-IP example.com www.example.com

# Проверить сайт в браузере без смены DNS
# После успешного теста — вернуть hosts и сменить DNS

Шаг 6: Смена DNS без простоя

Смените DNS-записи только после успешного тестирования сайта на VDS:

  1. Снизьте TTL A-записи до 300 секунд за 24 часа до миграции
  2. Убедитесь что сайт работает на VDS (через /etc/hosts)
  3. Обновите A-запись на IP вашего VDS
  4. Дождитесь распространения DNS (5–30 минут при TTL 300)
  5. Держите старый хостинг активным ещё 48 часов как запасной вариант
Нулевой простой: При правильном снижении TTL и тестировании через /etc/hosts переключение DNS происходит незаметно для пользователей — сайт доступен всё время.
Обновите конфиг приложения! После переноса обновите wp-config.php (WordPress), .env или другие конфиги с новыми данными БД. Старые credentials от shared-хостинга работать не будут.

Зачем переходить с shared на VDS

Shared хостинг ограничивает ресурсы CPU/RAM, запрещает запуск фоновых процессов и не позволяет тонкую настройку PHP/MySQL. VDS даёт полный контроль.

💡 Признаки что пора на VDS: сайт падает в часы пик, нужны cron-задачи каждую минуту, требуется PHP 8.2+ или Redis.

Шаг 1: Бэкап с cPanel

cPanel → Backup Wizard → Full Backup. Скачайте архив (.tar.gz) с сервера.

Шаг 2: Установка стека на VDS

apt update && apt install -y nginx mysql-server php8.2-fpm   php8.2-mysql php8.2-gd php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip

systemctl enable --now nginx mysql php8.2-fpm

Шаг 3: Импорт базы данных

mysql -u root -p -e "CREATE DATABASE mydb CHARACTER SET utf8mb4;"
mysql -u root -p -e "CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'pass';"
mysql -u root -p -e "GRANT ALL ON mydb.* TO 'myuser'@'localhost';"
mysql -u root -p mydb < backup.sql

Шаг 4: Настройка Nginx + PHP-FPM

server {
    listen 80;
    server_name mysite.com www.mysite.com;
    root /var/www/mysite;
    index index.php index.html;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Чеклист перед переключением DNS

ПроверкаКоманда
Сайт открывается по IPcurl http://NEW_IP
PHP работаетphp -r "echo phpinfo();" | head
MySQL доступнаmysql -u myuser -p mydb -e "SHOW TABLES;"
SSL настроенcertbot --nginx -d mysite.com
⚠️ Снизьте TTL DNS-записи до 300 секунд за 24 часа до переноса — это ускорит распространение после смены A-записи.
Статья помогла?
← Назад в базу знаний Задать вопрос поддержке