До основного вмісту

Перенесення WordPress на VDS: покрокова інструкція

WordPress · 29.01.2025 · 4 хв читання
Ілюстрація до статті «Перенесення WordPress на VDS: покрокова інструкція»

Підготовка

Перед перенесенням: зробіть повний бекап (БД + файли), зафіксуйте версії PHP/MySQL на старому сервері, встановіть аналогічні на новому.

💡 Перенесення краще робити вночі — мінімум трафіку, менший ризик втрати транзакцій у БД.

Крок 1: Експорт бази даних

# На старому сервері
mysqldump -u wpuser -p wppassword wordpress_db > /tmp/wp_export.sql
# Передаємо на новий сервер
scp /tmp/wp_export.sql root@NEW_SERVER_IP:/tmp/

Крок 2: Перенесення файлів через rsync

rsync -avz --progress   /var/www/wordpress/   root@NEW_SERVER_IP:/var/www/wordpress/

Крок 3: Створення БД та імпорт

# На новому сервері
mysql -u root -p -e "CREATE DATABASE wordpress_db CHARACTER SET utf8mb4;"
mysql -u root -p -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'strong_password';"
mysql -u root -p -e "GRANT ALL ON wordpress_db.* TO 'wpuser'@'localhost';"
mysql -u root -p wordpress_db < /tmp/wp_export.sql

Крок 4: Налаштування wp-config.php

define('DB_HOST', 'localhost');
define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'strong_password');

Крок 5: Налаштування Nginx

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/wordpress;
    index index.php;

    location / { try_files $uri $uri/ /index.php?$args; }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
⚠️ Не перемикайте DNS до повної перевірки сайту на новому IP. Використовуйте /etc/hosts для локального тестування.

Типові помилки під час перенесення

ПомилкаПричинаЩо робити
Error establishing a database connectionУ wp-config.php на новому сервері залишились старі DB_HOST, DB_USER або DB_PASSWORDЗвірте всі чотири константи DB_* з реальними даними нової бази
mysqldump: Got error: 1045: Access denied for userКористувача бази даних не створено на новому сервері або вказано невірний парольСтворіть користувача заново командою CREATE USER і видайте GRANT ще раз
413 Request Entity Too Large під час імпорту через phpMyAdminРозмір SQL-дампу перевищує upload_max_filesize або client_max_body_sizeІмпортуйте через консоль: mysql -u root -p wordpress_db < wp_export.sql
This site can't provide a secure connection після перемикання DNSНа новому сервері ще не випущено SSL-сертифікат для доменуВипустіть сертифікат Let's Encrypt (certbot) до перемикання DNS або одразу після нього
404 Not Found на всіх сторінках, крім головноїНа новому сервері не налаштовано try_files в Nginx, або не перечитано правила постійних посиланьПеревірте конфіг Nginx і оновіть permalinks: Налаштування → Постійні посилання → Зберегти зміни

Порівняння способів перенесення

СпосібКонтроль над процесомОбмеження розміруПідходить для
mysqldump + rsync (цей метод)ПовнийНемаєВеликих сайтів і нестандартних налаштувань сервера
Duplicator / All-in-One WP MigrationСереднійДо 500 МБ–2 ГБ на безкоштовній версіїНевеликих сайтів, перенесення без доступу по SSH
Перенесення інструментом хостинг-панеліНизькийЗалежить від панеліПереходу між тарифами одного провайдера

Коли цей спосіб не підходить

  • На старому сервері немає доступу по SSH (звичайний shared-хостинг) — тоді використовуйте експорт через панель або плагін перенесення
  • Сайт — частина WordPress Multisite зі спільними таблицями для десятків піддоменів — перенесення потребує окремої процедури мапінгу доменів
  • На старій IP-адресі працює поштовий сервер або інші сервіси, прив'язані до конкретної адреси, — їх потрібно переносити окремо і заздалегідь
  • Бізнесу потрібне перенесення без жодної секунди простою — тоді потрібна схема blue-green з балансувальником, а не пряме перемикання DNS

Детальний розбір інструментів передавання файлів — у статті «Перенесення файлів сайту: rsync, SCP і FTP — що обрати», а прапори mysqldump розібрані у статті «mysqldump: резервне копіювання та відновлення MySQL».

Перевірка результату

Після перенесення переконайтеся, що сайт коректно працює на новому сервері:

# Цілісність core-файлів WordPress
wp core verify-checksums

# Кількість таблиць у новій базі має збігатися зі старою
mysql -u wpuser -p -e "SHOW TABLES FROM wordpress_db;" | wc -l

# Головна сторінка відповідає 200
curl -s -o /dev/null -w "%{http_code}\n" -H "Host: example.com" http://NEW_SERVER_IP/

# Перевірка постійних посилань (permalinks) на 404
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/2026/01/test-post/

Якщо сайт встановлювався з нуля, корисно звіритися з інструкцією «Встановлення WordPress на VPS без хостингу з нуля» — там описано базові вимоги до середовища PHP і Nginx.

Перенесення вручну дає повний контроль над кожним кроком, але вимагає акуратності: не поспішайте на етапі перевірки перед перемиканням DNS, інакше виправляти помилки доведеться вже на живому трафіку.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці