Стандартна історія, коли потрібно негайно перенести сайт на інший сервер. Існує безліч способів як це зробити — і вручну, і автоматично. Я спробую детально описати класичний алгоритм, який спрацює у будь-яких випадках. За умови, що ви маєте доступ до обох серверів.
Найперше треба провести резервне копіювання. Цей процес складається з 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).
Увага: Зберігати дамп треба у тому ж кодуванні і форматі, щоби не пошкодити цілісність.
Тепер необхідно перенести і базу даних, і файли сайту з локального комп’ютера на віддалений сервер. Робимо це знову ж таки з допомогою 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 або інші — пропоную наступний чекліст:
sudo find /usr/local/lsws/domain.com/ -type d -exec chmod 755 {} \;
та sudo find /usr/local/lsws/wordpress/ -type f -exec chmod 644 {} \;
sudo chown -R nobody:nogroup /usr/local/lsws/domain.com/*
php_value auto_prepend_file /home/yourwebsite.com/public_html/wordfence-waf.php
Після перенесення варто ретельно протестувати сай, вивчити інформацію, яку подають логи (можна встановити монітор запитів до бази даних для CMS WordPress – WP QUERY), провести відладку помилок і аудит безпеки, щоби мінімізувати будь-які критичні помилки та втрату даних.
ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:
Заповніть, будь ласка, форму й наш спеціаліст зв’яжеться з Вами та надасть безкоштовну консультацію!
Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!