Перенос WordPress на новый домен

Эта инструкция поможет вам перенести ваш сайт на WordPress с одного домена на другой, включая перенос файлов и баз данных с применением скрипта Search Replace DB.

Перенос файлов и базы данных

Шаг 1: Бэкап и перенос файлов сайта

scp -r /var/www/old_site_directory user@new_server_ip:/var/www/new_site_directory

Шаг 2: Настройка прав доступа

sudo chown -R www-data:www-data /var/www/new_site_directory/

Шаг 3: Экспорт и перенос базы данных

mysqldump -u username -p db_name > db_name.sql
scp db_name.sql user@new_server_ip:/path/to/directory

Шаг 4: Создание и импорт базы данных на новом сервере

mysql -u root -p
CREATE DATABASE db_name;
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'your-strong-password';
GRANT ALL PRIVILEGES ON db_name.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
mysql -u new_user -p db_name < db_name.sql

Использование Search Replace DB для обновления ссылок

Установка скрипта

  1. Скачайте последнюю версию Search Replace DB с GitHub репозитория.
  2. Распакуйте архив в корневой каталог вашего сайта.

Использование через веб-интерфейс

  1. Откройте в браузере папку со скриптом:
    http://new_domain/Search-Replace-DB-master
    
  2. Введите данные для подключения к базе данных и выполните поиск и замену старого домена на новый.

Использование через командную строку

php srdb.cli.php -h dbhost -n dbname -u dbuser -p "dbpass" -s "old_domain.com" -r "new_domain.com"

Примеры использования CLI

php srdb.cli.php -h localhost -n wordpress_db -u root -p "" -s "http://www.old_domain.com" -r "http://new_domain.com"

Настройка и запуск HTTPS

Установите и настройте SSL сертификаты с помощью Certbot:

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d new_domain -d www.new_domain

Автоматизация обновления сертификатов

crontab -e
0 0 15 * * sudo certbot renew --quiet

Известные проблемы и их решения

  • При возникновении ошибок "Mixed Content" добавьте в wp-config.php:
    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
        $_SERVER['HTTPS'] = 'on';