Смена доменного имени Переводим wordpress на другой домен

Доброго времени дня!
Решил перенести свой блог с домена третьего уровня не потеряв контент.
Поискав в яндексе и гугле решения по переносе, в большей массе народ решает с помощью плагинов миграции, либо  остановился на своем быстром решении.
Итак дано:

  1. Блог на wordpress на адресе blog.marvins.ru
  2. База MySQL с именем wordpress
  3. Веб-сервер Nginx
  4. Доступ к терминалу

Нам необходимо перенести блог на адрес marvins.ru, по старому адресу настроить редирект на новый сайт.

Наши действия:

  1. Дамп базы
  2. Корректировка дампа
  3. Создание новой базы и развертывание в ней дампа
  4. Копирование содержимого сайта
  5. Правка конфигурационного файла wordpress
  6. Настройка нового виртуального хоста в nginx
  7. Настройка редиректа со старого адреса на новый

В данном примере мы считаем. что все находится на одном физическом хосте, если вы переносите на другой физический хост, то действия точно такие-же, только придется еще скопировать нужные файлы на другой хост и там все развернуть.

Делаем дамп базы:

mysqldump -uroot -p wordpress > blog.marvins.ru.sql

Т.к. wordpress хранит в базе полные пути, нам их необходимо скорректировать по имени нового домена.
Получившийся дамп открываем редактором vi и делаем замену старого имени на новое, в моем примере я менял все вхождение blog.marvins.ru на marvins.ru
vi blog.marvins.ru.sql
:%s/blog.marvins.ru/marvins.ru/g
:wq!

:wq! – сохраняем файл и выходим.

Запускаем клиент MySql и создаем базу и пользователя с паролем которые мы будем использовать для подключения нашего wordpress:

mysql -p
CREATE DATABASE wordpress_new CHARACTER SET utf8 COLLATE utf8_general_ci; 
GRANT ALL PRIVILEGES ON wordpress_new.* TO marvins@localhost IDENTIFIED BY 'YOURPASSWORD';
FLUSH PRIVILEGES;
\q

Немного поясню:

  • Первая строка – запускает клиент mysql, ключ -p указывает использовать пароль, т.к. пользователь у нас не указан (ключ -u), то подключается от имени root (к системному суперпользователю это имя не относится)
  • Второй строкой мы создаем новую базу с именем wordpress_new с кодировкой utf-8
  • Третьей строкой мы разрешаем пользователю marvins с паролем  YOURPASSWORD любые операции с базой wordpress_new
  • Четвертой строкой пересчитываем привилегии
  • Пятой строкой отключаемся от MySQL

Копируем наш wordpress в новое место (можно и не копировать, а использовать его, но я решил скопировать, т.к. в случае каких-либо ошибок вы не потеряете хотябы сайт по старому адресу):

mkdir/usr/local/www/newsite
cp -r /usr/local/www/wordpress/* /usr/local/www/newsite
chown -R www:www /usr/local/www/newsite

Открываем файл конфигурации wordpress:
vi /usr/local/www/newsite/wp-config.php

И в нем прописываем параметры соединения с базой данных в строках:

/** Имя базы данных */
define(‘DB_NAME’, ‘wordpress_new’);

/** Имя пользователя MySQL */
define(‘DB_USER’, ‘marvins’);

/** Пароль к базе данных MySQL */
define(‘DB_PASSWORD’, ‘YOURPASSWORD’);

/** Имя сервера MySQL */
define(‘DB_HOST’, ‘localhost’);

Далее настраиваем виртуальный хост в nginx для нового доменного имени, точнее проще скопировать старый, поправив пути до root директории.
В конфигурации “старого”виртуального хоста, в моем случае blog.marvins.ru устанавливаем редирект на новый сайт:

server {
        listen 80;
        server_name blog.marvins.ru;
        rewrite ^ $scheme://marvins.ru$request_uri? permanent; 
}

Проверяем корректность конфигурационных файлов nginx:
nginx -t

Если видим
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

То, говорим nginx перечитать конфигурацию:
nginx -s reload

Проверяем доступность нашего сайта по новому адресу, проверяем корректность редиректа со старого адреса и не забываем внести изменения в google webmasters и яндекс вебмастер.

Удачи, до встречи!

0 0 голосовать
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотр всех комментариев