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-дамп відкрити у редакторі вихідного коду (наприклад, SCITE Editor) і замінити усі шляхи розташування кореневої папки сайту на нові.

Приклад:

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

/home/web/domain.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/domain.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/domain.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), провести відладку помилок і аудит безпеки, щоби мінімізувати будь-які критичні помилки та втрату даних.

ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:

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

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

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

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