Close

Як перенести веб-сайт на інший сервер (хостинг)?

Стандартна історія, коли потрібно негайно перенести сайт на інший сервер. Існує безліч способів як це зробити — і вручну, і автоматично. Я спробую детально описати класичний алгоритм, який спрацює у будь-яких випадках. За умови, що ви маєте доступ до обох серверів.

Зміст статті

Частина 1. Резервне копіювання сайту

Найперше треба провести резервне копіювання. Цей процес складається з 2-х частин:

  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-дамп обов’язково відкрити у редакторі коду і змінити там усі шляхи розташування папки сайту, якщо вони на новому сервері не збігаються.

Приклад:

/home/domain.com/public_html/ — коренева директорія сайту на старому сервері.

/home/web/domain.com/public_html — коренева директорія сайту на новому сервері.

Якщо не відредагувати — сайт не запрацює.

Відредагувати будь-який sql-файл найпростіше з допомогою редактора Notepad++ або Visual Studio Code. Для швидкої заміни тексту скористайтесь опцією Автозаміна (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: з’єднання з базою даних і розташування кореневої директорії сайту. Там же не забути оновити salt-ключі WordPress SECRET KEYS.

Читайте також:   5 безкоштовних альтернатив Microsoft Office

Тепер можна перевірити чи все правильно перенесено — просто відкривши URL-адресу сайту. Якщо домен доступний, але бачите помилку “Неможливо зв’язатися з базою даних” — відтак усе перенесено правильно, сервер бачить кореневу директорію сайту і залишається правильно імпортувати базу даних.

Якщо є проблеми, наприклад виникає помилка 404, або інші проблеми — пропоную наступний чекліст:

  • Оновити користувача (chown) WordPress: sudo chown -R nobody:nogroup /usr/local/lsws/domain.com/*
  • Оновити права на папки і файли (chmod) WordPress: sudo find /usr/local/lsws/domain.com/ -type d -exec chmod 755 {} \; та sudo find /usr/local/lsws/wordpress/ -type f -exec chmod 644 {} \;
  • Тимчасово відключити плагіни WordPress, просто перейменувавши теку plugins;
  • Попробувати відключити файл htaccess, або створити новий із директивами по замовчуванню;
  • Якщо доступ до адмін-панелі є — оновити постійні посилання WordPress, перейшовши у налаштування і натиснувши Update permalinks;
  • Для плагіну безпеки Wordfence і власників OpenLiteSpeed сервера необхідно окремо вказати розташування файлу конфігурації — перейти в Webadmin Console -> Virtual Host, обрати свій домен, перейти в налаштування General, блок Override PHP.INI й додати рядок з розташування файлу конфігурації WordFence: php_value auto_prepend_file /home/domina.com/public_html/wordfence-waf.php

Якщо проблем немає і ви побачили системне повідомлення WordPress про помилку з’єднання з базою даних — значить сайт працює і залишилося імпортувати базу.

Однак, щоби імпортувати, спочатку треба її створити, зберігши при цьому усі імена – і назву бази, і її користувача, вказані у wp-config.php чи іншому файлі конфігурації.

Створення бази даних 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.

Тепер треба імпортувати в неї дамп (копію) бази даних. Виконуємо команду:

mysql -u databaseuser -p databasename < dump_file.sql

Увага: при виникненні помилки ERROR 1062 (23000) at line 1201: Duplicate entry необхідно перевірити кодування бази. У цьому випадку з якихось причин виникло накладання. Якщо кодування баз збігається, то треба просто знайти рядок (або рядки) помилки й замінити INSERT INTO на REPLACE INTO. Повторити операцію.

Читайте також:   Безпека і анонімність в Telegram

Налаштування WordPress

Ще кілька рекомендацій по налаштуванню сайту на базі WordPress після перенесення на новий сервер:

  • Оновити налаштування і дані плагіна безпеки WordFence (якщо встановлений, прописати розташування до config-файлу, перегенерувати капчу, перевірити список заблокованих IP і ін.);
  • Оновити налаштування плагіна LiteSpeed Cache (якщо встановлений, оновити IP та ключ сервера, перевірити статус Memcache/Redis);
  • Оновити постійні посилання (permalinks) і дані плагіна Yoast SEO (якщо встановлений);
  • Налаштувати планувальник Cron (якщо до того він був вимкнений і використовувався серверний crontab);
  • Перевірити версію та модулі PHP (повинні співпадати), а також конфігурацію файлу PHP.INI і відкорегувати за потреби;
  • Перевірити налаштування WordPress у wp-config.php: автозберігання, ревізії, кошик, memory limit і т.д.

Варто детально протестувати сайт після перенесення, вивчити інформацію, яку подають логи (можна встановити монітор логів WP QUERY), провести відладку і кілька аудитів — аудит безпеки і SEO-аудит, щоби мінімізувати будь-які критичні помилки та втрати.

Підпиcатися

Підписуйтесь на новини та отримуйте нові публікації на свою електронну пошту!

👉 Також долучайтеся і читайте нас в Twitter і LinkedIn!

0 0 голосів
Рейтинг статті
Підписатися
Сповістити про
guest
0 Коментарі
Вбудовані Відгуки
Переглянути всі коментарі
0
Цікаво почути Вашу думку!x
Отримати комерційну пропозицію
Оформити заявку
Замовити консультацію

Заповніть, будь ласка, форму й наш спеціаліст зв’яжеться з Вами та надасть безкоштовну консультацію!

Замовити дзвінок

Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!