Важное предупреждение!
Перед началом выполнения каких-либо действий, описанных далее, убедитесь, что у вас есть рабочий бекап изменяемых файлов. Потому что могут возникнуть ошибки, устранить которые гораздо проще и быстрее, просто откатив изменения. Инструкция по замене будет актуальна только для тарифов хостинга и серверов на базе Linux.
Подготовка нового домена
Если у Вас предустановлена панель ISPmanager 5, то Вам достаточно создать новый www-домен на который хотите заменить основной в разделе "Домены - www-домены".
На собственном окружении необходимо создать дополнительный виртуальный хост(vhost). Если у Вас нет панели и стоит собственное окружение, то вероятнее всего Вы знаете как это сделать на Вашем сервере. Если не знаете - обратитесь к нам в техподдержку.
Копия базы данных
Замену также нужно провести в базе данных, для этого нужно создать дамп базы в формате .sql и поместить в этой же папке. Не забудьте потом удалить файл дампа из папки сайта в целях безопасности.
При установке или переносе сайта Вы предоставляли или сами создавали базу данных от Вашего сайта. Нам необходимо узнать её название и сделать копию базы данных.
Вам необходимо войти на сервер по SSH. Если у Вас VPS сервер, то данные доступа по SSH есть у Вас в письме об активации сервера. Если у Вас виртуальный хостинг, то запросите включить SSH доступ через тикет в техподдержку.
После подключения переходим в папку вашего сайта или папку, в которой нужно провести замену:
cd /var/www/testuser/data/www/1old-domain.com/
Делаем дамп:
mysqldump -udb_user -p db_name > db_name.sql
Где db_user - имя пользователя БД
db_name - имя базы данных.
Дамп базы готов.
Копирование файлов
Вы уже находитесь в папке сайта. Поэтому Вам необходимо перейти на уровень выше командойcd ../
ls -lah
rsync -avPh 1old-domain.com 1new-domain.com
chown -R deepdivedigital:deepdivedigital 1new-domain.com
Замена ссылок
Перед тем, как приступить к замене ссылок у Вас должна быть копия БД и файлов которые мы уже подготовили. Убедитесь что смотрите в нужную папку прописав команду pwd
- она выведет на экран путь где Вы находитесь.
Чтобы найти и заменить все вхождения старого домена в файлах сайта выполните команды:
cd 1new-domain.com
grep -ri 1old-domain.com .
Команда выведет все упоминания на экран. Их может быть слишком много, поэтому давайте сразу заменим старый домен на новый.
grep -ril 1old-domain.com . | xargs sed -i 's,1old-domain.com,1new-domain.com,g'
- grep — поиск по выражению;
- l — отобразить найденные файлы списком;
- i — игнорировать регистр найденных выражений, то есть будут найдены выражения, записанные как строчными, так и прописными буквами или их комбинацией (использовать по необходимости);
- r — рекурсивный поиск во всех файлах и каталогах, начиная с указанного каталога;
- «
1old-domain.com
» — что мы ищем, например имя старого домена вашего сайта, протокол «http://», путь к папке на сервере, и что угодно еще; - . — каталог, в котором искать; данная запись означает текущий каталог, где вы сейчас находитесь;
- | — символ передачи результата вывода другой программе, то есть, весь вывод команды grep будет передан на вход другой программе, написанной далее;
- xargs — команда обычно сопровождает предыдущий символ перенаправления вывода, передает ваш список файлов следующей программе;
1new-domain.com
— как понятно из названия, производит замену одного выражения на другое, выражения указаны в кавычках;
После выполнения данной команды домен будет заменён как во всех файлах, так и в дампе базы данных, который мы делали ранее.
Теперь Вам необходимо создать новую базу данных и загрузить в неё дамп, либо залить дамп в существующую базу данных(если старый сайт больше не нужен).
Для загрузки дампа можете использовать следующую команду:
mysql new_db_name < test_db.sql
Где new_db_name и test_db это имя новой базы и дампа, соответственно.
Если в процессе переноса участвует кириллический домен, то перед заменой ссылок необходимо конвертировать его имя в PunnyCode-кодировку. Это можно сделать с помощью команды idn:
idn домен.рф
Результатом выполнения команды будет имя домена в PunnyCode-кодировке:
xn--d1acufc.xn--p1ai
Используйте его при замене ссылок:
grep -ril xn--d1acufc.xn--p1ai | xargs sed -i 's/xn--d1acufc.xn--p1ai/new_domain.ru/g'
Проверка сайта
Проверьте работу сайта: переходите по разделам, нажимайте на ссылки. Обращайте внимание на отображение картинок, текстов и адреса в строке браузера.
Если вы столкнулись с трудностями — обращайтесь в поддержку. Мы поможем разобраться с проблемой или самостоятельно перенесем ваш сайт на новый домен.
Копия сайта в панели управления ISPmanager 5
Войдите в панель управления и перейдите в раздел "Домены - www-домены"("Главное - www-домены" для панелей виртуального хостинга).
Создайте новый домен на который будете клонировать сайт.
На домене old-domain.com у нас установлен wordpress, на на нём и будем тренироваться.
При переходе на домен old-domain.com открывается стандартная страница wordpress.
Скопируем файлы wordpress в директорию нового домена.
Для этого перейдём в папку старого домена, выделим все файлы через SHIFT и сделаем копию.
Если попытаемся перейти на новый домен в браузере, то нас перенаправит на старый домен и откроет старый сайт, потому что необходимо заменить домен в файлах и БД.
Для замены домена запросите SSH доступ у техподдержки если Вы на виртуальном хостинге. Владельцы VPS серверов имеют SSH доступ по умолчанию.
Войдите в панель управления, откройте shell клиент и перейдите в папку сайта. В нашем случае это:
cd /var/www/dtestcomm/data/www/new-domain.com/
Далее делаем дамп базы данных.
mysqldump -udb_user -p db_name > db_name.sql
Где db_user - имя пользователя БД
db_name - имя базы данных.
Дамп базы готов.
Ищем и заменяем старый домен на новый в файлах и дампе базы данных:
grep -ril old-domain.com . | xargs sed -i 's,old-domain.com,new-domain.com,g'
Создаём новую базу данных и загружаем в неё наш дамп:
mysql new_db < test_db.sql
Далее нужно подключить новую базу в конфигурационном файле Вашего нового сайта. Для разных CMS это разный файл, к примеру для wordpress это файл wp-config.php.
После проделанных действий очистите кэш браузера и попробуйте перейти на Ваш новый сайт в браузере, он готов к работе!
Для работы с данным материалом необходимы базовые знания и навыки в работе с BASH и LINUX. Данная статья подходит для всех ОС семейства Linux независимо от набора установленного ПО. После общей статьи Вы найдёте подробный пример создания копии сайта с помощью панели управления ISPmanager 5.