Рассмотрим перенос сайта на WordPress на другой хост
Какие бывают причины переноса WordPress:
- Планируется ремонтные работы в сети провайдера
- Переезд на другой хостинг
- Отключение электричества
Меня на это вынудил 3-й пункт:)
Планируются дома работы с отключением электричества.
Чтобы сайт не простаивал, я решил его временно переместить на VPS.
Вводная
Что имеем:
- Сервер с адресом 1.1.1.1
- Сайт с именем site.ru
- Сервер на который будем переносить с адресом 2.2.2.2
Оба сервера нам доступны по ssh.
На втором сервере уже установлены и настроены MySQL (MariaDB), NGINX, Certbot и PHP.
Если нет, то можно узнать как это сделать из этого материала.
В данном материале мы не будем рассматривать перенос сайта с помощью каких-либо плагинов.
Что будем переносить:
- Директорию сайта /var/www/site.ru
- Базу MySQL ‘wordpress’
- Сертификаты /etc/letsencrypt/live/site.ru
- Конфигурационный файл NGINX /etc/nginx/sites-available/site.ru
Поехали
Устанавливаем все обновления на сайт.
Заходим на текущий хост 1.1.1.1 по ssh.
Создаем временные директории на сервере куда мы будем переносить сайт:
ssh vladimir@2.2.2.2 'mkdir -p site/sql site/lets site/nginx'
Создаем дамп базы wordpress:
mysqldump wordpress -p > site.sql
Копируем все на новый хостинг:
scp -r /var/www/site.ru/ vladimir@2.2.2.2:site scp /etc/nginx/sites-available/site.ru vladimir@2.2.2.2:site/conf scp site.sql vladimir@2.2.2.2:site/sql scp -r /etc/letsencrypt/live/site.ru/ vladimir@2.2.2.2:site/lets
Заходим на сервер 2.2.2.2 с помощью ssh
Если помним пароль базы данных — это хорошо.
Если нет, то смотрим его в конфигурационном файле WordPress:
less site/site.ru/wp-config.php define('DB_NAME', 'wordpress'); /** Имя пользователя MySQL */ define('DB_USER', 'wordpress'); /** Пароль к базе данных MySQL */ define('DB_PASSWORD', 'mypassword');
Видим, что:
- Пользователь базы: wordpress
- С паролем: mypassword
Создаем базу данных WordPress
mysql -p CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"localhost" IDENTIFIED BY "mypassword"; FLUSH PRIVILEGES; EXIT
Импортируем дамп базы данных
mysql -p wordpress < site/sql/site.sql
Копируем остальное на нужные места
cp -r site/lets/site.ru/ /etc/letsencrypt/live/ cp -r site/site.ru /var/www/ chown -R www-data:www-data /var/www/site.ru/ cp site/site.ru /etc/nginx/sites-available/ ln -s /etc/nginx/sites-available/site.ru /etc/nginx/sites-enabled/
Проверим корректность конфигурации NGINX:
nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
В моем случае все хорошо, перезапускаем NGINX:
nginx -s reload
Для теста в host файл вашего компьютера добавляем запись:
2.2.2.2 site.ru
Заходим на сайт, проверяем все ли нормально работает.
Если результат устраивает, то меняем в DNS А запись на новый IP.
P.S. Необходимо обратить внимание на то что:
Во-первых сертификаты обновляться не будут (необходимо получить новый).
Во-вторых после изменения DNS записи нужно время для обновления зоны.