Как перенести сайт на другой хостинг

В своей книге «WordPress для начинающих» я подробно описал, как правильно перенести сайт на другой хостинг. Тем не менее, теория это одно, а практика совсем другое и в процессе переноса всех своих сайтов с одного хостинга на другой я допустил пару ошибок, о которых по ходу пьесы и упомяну в этой статье.

Обычный пользователь, будь-то блоггер или простой серфер, не может безошибочно выполнить перенос сайта с одного хостинга на другой, не имея опыта. Да и запоминать это ни к чему. Поэтому, я рекомендую вам занести эту статью в закладки до того момента, когда у вас действительно возникнет необходимость переноса сайта на другой хостинг.

Итак, с чего начинается перенос сайта с одного хостинга на другой? Конечно же с Родины, а именно с четкого представления в голове алгоритма последовательных действий. Пропуск какого-либо пункта или перестановка пунктов местами вредно для здоровья и чревато непредсказуемыми последствиями. Так что, следуем программе «Х», которую я вывел благодаря своему опыту.

Как вы, наверное, догадались, будем переносить сайт на движке, требующего наличие базы данных, таких как: WordPress, DLE, Drupal, Joomla или других, поскольку сайт на html перенести на другой хостинг проще пареной репы — для этого достаточно файлы сайта с одного хостинга перенести по FTP на другой хостинг. Здесь же задача усложняется рядом моментов.

Перенос сайта с одного хостинга на другой

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

Чтобы статья была полной, буду описывать всё с начала. Допустим, вы определились с новым хостингом, например, с таким, на который пал мой выбор. Данный хостинг (США) не имеет никаких ограничений, круглосуточную поддержку, панель управления на русском языке и нереальное количество наворотов, которых и в помине нет на отечественных хостингах + оплату одного или трех доменов пожизненно! (в зависимости от плана). Аптайм данного хостинга составляет не ниже 99,9%. Если вы покажете статистику, где за месяц аптайм будет меньше, то хостер вернет вам деньги за этот месяц! Если кто-то заинтересовался, связывайтесь со мной, помогу оплатить, расскажу все рабочие моменты и вышлю инструкцию по работе.

Отвлечемся от назойливой рекламы и приступим к делу.

Первым делом нам нужно создать дополнительный домен в панели управления web-сервером — си-панеле (на другом хостинге это может быть DirectAdmin, H-sphere, Hosting Controller или бог ещё знает какая другая). Я буду показывать добавление домена именно в си-панеле, которая на мой взгляд самая старая, самая надежная, покрытая пылью, но являющаяся панелью №1 среди других панелей. В любом случае, от того какая панель, суть не меняется.

При покупке виртуального хостинга клиент всегда указывает свой основной домен (это может быть любой его домен), который автоматом прописывается в си-панель и файлы которого всегда находятся в корне сервера. Поэтому, этот шаг применим только к остальным доменам: 2-му, 3-му и т.д. Для добавления домена в разделе Домены нажимаем на Дополнительные домены:

как перенести сайт - дополнительный домен

… и на следующей страничке заполняем необходимые поля, некоторые из которых заполняются автоматом:

как перенести сайт на хостинг

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

перенести сайт на другой хостинг

Кстати, поговаривают, что в своё время какой-то киберсквоттер (скупщик хороших доменных имен) продал домен vodka.ru за 5 млн.вечнозеленых!

После этого на главной странице си-панели переходим по ссылке Базы данных MySql:

как перенести сайт на сервер

Создаем базу данных с именем, созвучным названию домена:

как перенести сайт с денвера

После создания базы данных, возвращаемся на эту же страницу и в самом низу добавляем пользователя к этой базе данных, т.к. у каждой базы должен быть хозяин, иначе никак. В выпадающем списке выбираем пользователя и только что созданную базу:

как правильно перенести сайт

После чего уважаемая система нас перебрасывает на страницу, где мы должны пользователю предоставить все привилегии, чтоб ему можно было всё, но ему за это ничего не было. Это делается одним щелчком мышки по радиоточке All Privileges:

перенос сайта

В результате, видим сообщение типа «Пользователь …. был добавлен к базе ….»

Убеждаемся в том, что вновь созданная пара ПользовательБаза Данных появилась в списке «Текущие базы данных«:

перенос сайта на хостинг

Скопируйте или запишите эти 2 значения и пароль, они нам ещё пригодятся. Си-панель пока не закрываем, она нам тоже ещё пригодится.

Следующим этапом создадим дамп базы данных данного сайта. Заходим в си-панель старого хостинга и из раздела Базы Данных переходим в phpMyAdminдиректорию управления базами данных:

перенос сайта на сервер

В phpMyAdmin нам необходимо в левой колонке выбрать из выпадающего списка баз данных ту, которая нам нужна. Если у вас сайтов много, то рекомендую все операции делать сразу для всех сайтов. На этом шаге я сделал в течение нескольких минут дампы всех баз. После того, как база выбрана, отмечаем все её таблицы, содержащих всё, что нажито непосильным трудом и нажимаем на кнопку Экспорт для перехода на страницу, где отмечаем необходимые параметры:

перенос сайта на другой хостинг

Некоторые параметры по умолчанию не стоят, поэтому я специально выделил то, что должно быть отмечено обязательно. В частности, пункт «Добавить DROP TABLE / VIEW / PROCEDURE / FUNCTION» необходимо активировать, а пункт «Добавить IF NOT EXISTS», стоящий по умолчанию, убрать. Также архив желательно сохранить в формате gzip:

перенос сайта с localhost

После нажатия на кнопку ОК, в строке загрузок браузера появится ярлык с названием архива базы данных:

перенос сайта на другой сервер

Сохраняем его на жесткий диск своего компьютера в отдельную папку с базами данных.

Итак, основная работа по подготовке переноса сайта на другой хостинг сделана. Теперь можно перекурить и выпить чашечку кофе … После этого возвращаемся в утилиту phpMyAdmin, но уже нового хостинга, на который мы возлагаем большие надежды в предвкушении чего-то свежего, нового, надежного и непревзойденного.

Теперь наша задача — залить дамп базы данных, который мы сохранили на свой компьютер, в заранее созданную на 2-м шаге базу данных, пока что пустую. Это произойдет после того, как мы выберем нужную базу данных и нажмем Импорт, что в переводе с латинского означает «ввозить товары в страну«. Мы же будем закачивать дамп базы в созданную базу данных.

По аналогии с пятым пунктом, в левой колонке выбираем базу данных, в которую будем импортировать дамп базы данных, а справа вверху нажимаем ярлык Импорт:

перенос сайта wordpress на хостинг

… после чего на жестком диске своего компьютера выбираем экспортированный со старого хостинга дамп базы данных:

бесплатный перенос сайта на хостинг

Если импорт прошел успешно, система сообщает об этом и рядом с названием базы данных появляется информация о количестве таблиц:

импорт базы данных

Заходим в админ-панель сайта, который необходимо перенести, переписываем все активные плагины, после чего их отключаем. Это необходимо для того, чтобы не было конфликтов при переносе файлов на новый хостинг.

Посредством FTP-протокола копируем все файлы сайта к себе на компьютер в отдельную папку. Для переноса больших массивов я пользуюсь FTP-клиентом FileZilla. Для необъемных передач (картинку закачать, файл обновить и т.д.) у меня всегда под рукой шустрый FAR. Подробно останавливаться на этом пункте я не буду, так как наверняка все те, у кого есть сайты, уже выполняли подобную задачу не один раз.

Единственный момент, на котором можно заострить внимание это то, что во время передачи файлов могут возникнуть так называемые «неудавшиеся передачи«, о чем FTP-клиент обязательно вас известит. Вот их как раз надо докачать по новой. В остальном всё просто — выделяете файлы на хостинге и нажимаете кнопку передачи (как правило это клавиша на клавиатуре F5, она же выполняет функцию обновления страниц), либо правой кнопкой мыши выбираете пункт «Закачать на сервер». Таким же образом будет осуществляться передача файлов с компьютера на новый сервер.

Открываем конфигурационный файл сайта (для блога на движке WordPress это - wp-config.php), например одним из следующих редакторов: Notepad 2, Notepad ++ или UnicEdit и меняем в нем старые данные на новые, которые мы записали на 4-м шаге:

заполнение файла wp-config.php

Сохраняем файл в кодировке UTF-8 без сигнатуры BOM (иначе «труба» — всё покроется кракозябрами или вопросительными знаками).

Также, в самом начале файла, сразу после <?php вставляем 2 строки с урлами вашего домена:

define('WP_HOME', 'http://www.vodka.ru');
define('WP_SITEURL', 'http://www.vodka.ru');

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

-  загруженность удаленного сервера
-  загруженность линий связи и маршрутизаторов на пути к удаленному серверу
-  ограничения пропускной способности провайдера

Этот шаг, равно как и 8-й, самые продолжительные по времени и, если у вас сайтов много, то и процедура будет утомительная. К примеру, сайты вордпресса у меня заливаются минут 20.

Наступил торжественный момент: присвоение сайту новых именных серверов, попросту говоря — смена DNS (от англ. Domain Name System — система доменных имён). Для этого необходимо зайти в управляющую панель регистратора сайта и сменить старые DNS на те, которые прислал в письме новый хостер. Например:

NAMESERVER INFORMATION:
====================
NS1: ns1.pipedns.com
NS2: ns2.pipedns.com
NS3: ns3.pipedns.com

DNS могут обновляться от 1-го до 72-х часов. Именно поэтому я и сказал в самом начале, что если поторопиться и первым делом сменить DNS, а затем делать всё остальное, то может возникнуть такая ситуация, что после отправки запроса на смену DNS, они обновятся уже через 1 час. То есть, сайт уже прописали по новому месту жительства, а его там ещё нет — вы попросту не успели выполнить все шаги, которые я описал выше. В этом случае, вместо сайта посетители увидят заставку хостинга, например такую:

виртуальный сервер не существует

Как вы понимаете, такая ситуация (в зависимости от времени недоступности сайта поисковыми роботами) чревата нехорошими последствиями — в лучшем случае падением пузомерок. Если вас такой вариант развития событий не устраивает, то начинайте перенос сайтов не менее, чем за 72 часа до окончания проплаченного периода на вашем старом хостинге, а лучше дней за 5. Так как, если допустить, что DNS вступят в силу позже, чем у вас закончится срок оплаты, то старый хостер может просто отключить ваши сайты (зависит от хостера).

Как только вы получите сообщение от регистратора домена на e-mail о том, что заявка по смене DNS выполнена, можно смело удалять все файлы сайта со старого хостинга, а также все свои базы. Зачем оставлять своё богатство в чье-то распоряжение? Также не забудьте, пока у вас имеется доступ к админ-панели на старом хостинге, скопировать адреса почтовых ящиков, которые вы создавали, а также письма, которые представляют для вас ценность. После чего их также удалите.

После того, как сайт или сайты стали доступны, осуществляем все настройки, которые были на сайтах до переноса на новый хостинг:

-   включаем плагины,
-   указываем необходимые права папкам и файлам. Для того, чтобы была возможность закачивать файлы и архивы прямо из админ-панели (для вордпресса), необходимо в том числе выставить права 777 на папку wp-content/uploads и все папки внутри неё. Права меняются либо FTP-клиентом, либо непосредственно в файл-менеджере си-панели.
-   на вкладке Постоянные ссылки (ЧПУ — человеко-понятные УРЛы (веб-адреса, удобные для восприятия человеком, от англ. SEF — Search Engine Friendly)) обновляем файл .htaccess. Он нужен для возможности конфигурации работы сервера в отдельных директориях и поддиректориях, не предоставляя доступа к главному конфигурационному файлу (httpd.conf). Обычно, для вордпресса, в нем должно быть записано:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Выставляем права на этот файл — 777.

Если вы всё сделали по инструкции, то у вас проблем с переносом сайта на другой хостинг быть не должно. Но бывают ситуации, когда возникают ошибки. Рассмотрим их.

Ошибки после переноса сайта на другой хостинг


Вместо сайта видим белый экран

- проверить, чтобы были залиты все файлы сайта
- проверить, чтобы в списке тем сайта была дефолтная тема

Показывается только главная страница, внутренние страницы не работают

- восстановить ЧПУ в админке так, как они были настроены на старом хостинге. Если проблема была в этом, то всё станет на свои места. Если у вас страницы имели адрес http://site.ru/?p=123, а вы хотите изменить их на ЧПУ, с латинским словом по названию поста после адреса, например: http://site.ru/post, то в общих настройках поставьте галочку напротив Произвольно и впишите /%postname%. Если же вы хотите, чтобы страницы имели окончание .html, то впишите /%postname%.html.
- проверяем работоспособность файла .htaccess следующим образом: создаем на компьютере файл HTML, например: good.html, пишем в нем GOOD и вставляем смайлик (шутка), загружаем его в корень сайта. В файле .htaccess вставляем строку:

DirectoryIndex good.html index.php

Это в случае, если основная страница сайта index.php (в вордпрессе это именно так). Если же главная страница сайта имеет другое название и расширение, значит вставьте его. Эта директива заставит сервер Apache перед страницей index.php выдать вначале страницу good.html. Если откроется именно эта страница, то .htaccess работает исправно. Если же нет, обратитесь к новому хостеру с просьбой проверить поддержку .htaccess.

Вместо сайта видим надпись: Fatal error: Call to undefined function require_wp_db() in /home…..

- убедиться, что в конфигурациооном файле имя пользователя, база данных, пароль и хост соответствуют новым значениям

Вместо сайта видим сообщение: Cannot modify header information — headers already sent by…

1. Какой-то из файлов темы или движка сохранен не в кодировке UTF-8. Необходимо проверить все файлы.

2. Если в сообщениии есть указание на файл functions.php, убрать «левый вывод» на указанной строке.

Наблюдаем сообщение: Error establishing a database connection (нет соединения с базой данных)

- проверить правильность данных в конфигурационном файле
- убедиться в наличии базы данных

Вместо сайта видим сообщение о том, что сайт расположен на таком-то хостинге

- убедиться, что файлы сайта залиты в правильную папку
- удалить из корневой директории сайта файл index.html, автоматически созданный при заливке файлов сайта

Вместо сайта видим предложение об установке нового сайта (блога)

- удалить все таблицы базы данных (если таковые имеются) и перезалить их ещё раз

Вместо сайта видим сообщение о том, что сервер не найден

- подождать обновления DNS

При наборе в браузере адреса сайта, происходит редирект на другой сайт (возможно, тоже ваш)

- прописать в таблицах базы данных URLы, соответствующие вашему сайту

Не работает админ-панель сайта, либо идет перегрузка сервера на хостинге

- возможно, вы забыли выключить плагины — для этого необходимо переименовать папку с плагинами, таким образом плагины будут отключены, затем по одному включить снова

Это наиболее вероятные ошибки, которые потенциально могут возникнуть, но ещё раз повторюсь — если делать всё по вышеприведенной инструкции, то проблем быть не должно! И не забывайте самое главное правило — не удаляйте файлы сайта и не модифицируйте их, пока вы не сделали их резервные копии.

Надеюсь, что если вам прийдется перенести сайт на другой хостинг, у вас всё получится без осложнений. В этой статье я описал ручной способ переноса сайта на другой хостинг. Он является самым трудоемким, но зато зная этот способ, с остальными двумя вы справитесь гораздо быстрее. Но о них в другой раз.  Если у вас возникнут вопросы, сомнения или замечания по правильности изложенного материала, велкам в комменты.


Если у Вас появились идеи, вопросы, предложения по данному посту или по блогу в целом, можете писать сюда: http://auditor.reformal.ru/


Метки: , , , , , , , , , , ,

Если Вам понравилась заметка, пожалуйста, прокомментируйте ее, подпишитесь на фид и получайте будущие публикации по RSS, либо поделитесь с друзьями в социальных сетях:

Комментарии

Спасибо,хорошая статья очень помогла :) автору респект

Привет, СПасибо все очень хорошо описано! РЕспект все дела! У меня проблема возникла с админкой, все перенес с откл. плагинами…сайт заработал, но не могу зайти в админку…http://www.pklawpartners.com/administrator/ типа пишет администратор индекс … что делать??

Похоже, что вы где-то допустили ошибку. Поинтересуйтесь у тех, кто с джумлой работает.

Андрей П.

Спасибо! Уже разобрался. нужно в конфиге было пароль изменить)))Ворд прес и Джумала почти одинаковы в переносе)

Спасибо за подробную статью.
У меня все же возникла проблема при переносе блога.
Он отображается в браузере просто как список папок, которые я залила на хостинг. Возможно, проблема при копировании файлов сайта. Опишу ситуацию.
Я сначала пыталась перекинуть архив с файлами, а потом распаковать его через панель управления хостингом. Но не нашла, как распаковать. Там был архив в архиве, конечное расширение .tar.gz. И я на компьютере распаковала его. Путь распаковки был таков:
1.Извлекла сначала из первоначального архива (расширение .tar.gz), получился архив с расширением .tar.
2. Распаковала его – внутри была папка h.
3. Внутри папки h была папка с названием моего домена (правда, без точек перед зоной ru).
4. А уже внутри этой папки были папки: cgi-bin, htdocs, log и еще файлы.
Так как мне поступить – все же нужно копировать первоначальный архив (вдруг этот путь распаковки прописан где-нибудь и на что-то влияет) и распаковывать его уже в панели хостинга? Или все распаковать на компе и перекинуть только содержимое папки htdocs? Или все три папки? Меня беспокоит сам путь распаковки, если он на что-то влияет. Потому что в файле sql я нашла какую-то строчку, где был прописан этот путь распаковки. Строка в этом файле имеет начало:

INSERT INTO `wp_options` VALUES ……….
она длинная и содержит в себе:
«/h/папка с назв.домена/htdocs/wp-content/themes/назв.моей темы на блоге/header.php\»;}

Если я заливаю распакованные файлы, значит, мне нужно корректировать что-то в этой строке в файле sql? У меня блог в интернете отображается просто как перечень папок, которые я залила на хостинг. Что не так?

auditor_se

Как то Вы сбивчиво объясняете… «.tar.gz.» — это что за архив? Вы сделали архив базы данных? О каком архиве с файлами Вы говорите?

Большое спасибо за статью. Сохраняю в закладки. Думаю пригодиться.

Комментирование закрыто.