Стандартна історія, коли потрібно негайно перенести сайт на інший сервер. Існує безліч способів як це зробити — і вручну, і автоматично. Я спробую детально описати класичний алгоритм, який спрацює у будь-яких випадках. За умови, що ви маєте доступ до обох серверів.
Частина 1. Резервне копіювання сайту
Найперше треба провести резервне копіювання. Цей процес складається з 2-х частин:
- Створення дампу бази даних сайту
- Створення бекапу файлів і папок сайту
Експортувати базу даних можна як з допомогою графічного інтерфейсу через додаток PhpMyAdmin, так і засобами командного рядку Linux.
Я віддаю перевагу командному рядку. Необхідно увійти через SSH на свій сервер та виконати наступну команду:
mysqldump -u username -p databasename > dump_file.sql
Тепер треба вивантажити дамп на локальну машину.
Це можна зробити командою scp в консолі Linux:
scp -P 22 -i ‘/privkey’ root@XX.XXX.XXX.XX:/dump.sql /local_dir — вивантаження файлу із сервера в папку на локальний комп’ютер
Аналогічно вивантажуємо файли:
scp -P 22 -i ‘/privkey’ -r root@XX.XXX.XXX.XX:/remote_dir /local_dir — вивантаження папки сайту з усім вмістом (рекурсивно) на локальний комп’ютер;
SQL-дамп відкрити у редакторі вихідного коду (наприклад, SCITE Editor) і замінити усі шляхи розташування кореневої папки сайту на нові.
Приклад:
/home/example.com/public_html/— коренева директорія сайту на старому сервері./home/web/example.com/public_html— коренева директорія сайту на новому сервері.
Якщо не відредагувати — сайт може працювати некоректно.
Для швидкої заміни тексту скористайтесь опцією Автозаміна (Replace All).
Увага: Зберігати дамп треба у тому ж кодуванні і форматі, щоби не пошкодити цілісність.
Частина 2. Імпорт файлів і бази даних сайту на новий сервер
Тепер необхідно перенести і базу даних, і файли сайту з локального комп’ютера на віддалений сервер. Робимо це знову ж таки з допомогою SCP.
Команда трішки відрізняється від попередньої:
scp -P 22 -i ‘/privkey’ /local_dir/file root@X.XXX.XXX.XX:/remote_dir— пересилання файлу з локального комп’ютера на віддалений сервер по SSH-ключу доступу.scp -P 22 -i ‘/privkey’ -r /local_dir root@X.XXX.XXX.XX:/remote_dir— пересилання папки на локальному комп’ютері з усім вмістом (рекурсивно) у папку на віддаленому сервері.
Увага: Якщо ви хочете вивантажити файли напряму з одного сервера на інший, не переносячи їх спочатку на локальний комп’ютер, то треба попередньо налаштувати зв’язку SSH-ключів “pivate+public key”. Приватний необхідно як файл скопіювати на новий сервер. Публічний ключ скопіювати у вигляді тексту в файл користувача старого сервера ~/.ssh/authorized_keys. Після цього протестувати з’єднання, підключившись з нового сервера зі старим по SSH, використавши приватний ключ:
ssh -p 22 -i /privkey root@XX.XX.XX.XXX
Якщо все спрацювало — можна з допомогою SCP, аналогічно як з локального комп’ютера, переносити файли і папки зі старого сервера на новий. Команда буде наступною:
sudo scp -P 22 -i ‘/privkey’ root@XX.XX.XX.XXX:/old_hosting/remote_dir1/ /new_hosting/remote_dir2
Примітка: Якщо переносимо сайт на WordPress, варто ретельно файл конфігурації wp-config.php: з’єднання з базою даних, розташування кореневої директорії сайту, логування, автозберігання, ревізії, кошик, memory limit і т.д. Там же не забути оновити salt-ключі WordPress SECRET KEYS. Також перевіряємо поточну версію PHP і права доступу на файли та папки.
Тепер можна перевірити чи все правильно перенесено — просто відкривши URL-адресу сайту. Якщо домен доступний, але бачимо помилку “Неможливо зв’язатися з базою даних” або “Виникла критична помилка на сайті” – це означає, що сервер бачить кореневу директорію сайту і залишається тільки правильно імпортувати базу даних.
Перш ніж імпортувати, треба її створити, зберігши при цьому усі дані – і назву бази, і її користувача, вказані у wp-config.php або іншому файлі конфігурації.
Створити БД можна через хостинг-панель або командний рядок Linux на сервері.
Команди створення бази даних для сайту на WordPress:
mysql -u root -p CREATE DATABASE databasename DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON databasename.* TO 'databaseuser'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; exit
Увага: кодування вашої старої і нової бази даних має співпадати! Наприклад, є різниця між базами utf8mb4 і просто utf8.
Тепер треба імпортувати в неї дамп (копію) бази даних. Це можна зробити або через веб-інтерфейс PhpMyAdmin, або через командний рядок:
mysql -u databaseuser -p databasename < dump_file.sql
Примітка: при виникненні помилки
ERROR 1062 (23000) at line 1201: Duplicate entryнеобхідно перевірити кодування бази. У цьому випадку з якихось причин виникло накладання. Якщо кодування баз збігається, то треба просто знайти рядок (або рядки) помилки й замінити INSERT INTO на REPLACE INTO. Потім повторити операцію.
Можливі проблеми при перенесенні сайту та їх вирішення
Якщо після перенесення сайту на новий хостинг у вас з’явились проблеми, наприклад виникає помилка 404, 403 або інші — пропоную наступний чекліст:
- Перевірити версію PHP. Підвищити або понизити. Вона повинна співпадати з версією, яка була встановлена на попередньому хостингу. Часто, через несумність PHP з’являється помилка 403, адже php файли просто не можуть виконатися. Також перевірити наявність усіх модулів, наприклад: zip, imagick. Провести конфігурацію PHP.INI.
- Перевірити права доступу (chmod) на файли і папки. Ось команди, які дозволять швидко їх оновити для CMS WordPress:
sudo find /usr/local/lsws/example.com/ -type d -exec chmod 755 {} \;таsudo find /usr/local/lsws/wordpress/ -type f -exec chmod 644 {} \; - Оновити власника/групу володіння (chown) на файли і папки сайту. Приклад для серверів на базі LiteSpeed:
sudo chown -R nobody:nogroup /usr/local/lsws/example.com/* - Перевірити файл конфігурації .htaccess. Спробувати його відключити, просто перейменувавши. Для WordPress рекомендую ознайомитись з довідкою по htaccess.
- Перевірити усі компоненти і модулі. Наприклад, якщо це WordPress, тоді спробувати відключити усі плагіни, просто перейменувавши папку plugins.
- Якщо є доступ до адмін-панелі WordPress – оновити постійні посилання, перейшовши у налаштування і натиснувши Update permalinks.
- Для роботи плагіну безпеки WordPress – Wordfence і власників OpenLiteSpeed сервера необхідно окремо вказати розташування файлу конфігурації — перейти в Webadmin Console -> Virtual Host, обрати свій домен, перейти в налаштування General -> Override PHP.INI й додати рядок:
php_value auto_prepend_file /home/yourwebsite.com/public_html/wordfence-waf.php - Оновити налаштування плагіна LiteSpeed Cache: оновити IP та ключ сервера, перевірити статус Memcache/Redis.
- Оновити дані плагіна Yoast SEO.
- Переналаштувати планувальник Cron (якщо використовувався серверний crontab).
- Перевірити або перевстановити SSL сертифікати.
- Перевірити конфігурацію CDN/DNS Cloudflare.
Після перенесення варто ретельно протестувати сай, вивчити інформацію, яку подають логи (можна встановити монітор запитів до бази даних для CMS WordPress – WP QUERY), провести відладку помилок і аудит безпеки, щоби мінімізувати будь-які критичні помилки та втрату даних.
Автор: © Konrad Ravenstone, KR. Laboratories Research

