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

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

Суть заключается в том, как осуществить данный процесс с наименьшими потерями времени и Ваших нервов, поскольку, во-первых, время — деньги, во-вторых, необходимо обеспечить при этом безостановочную работу сайта.

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

В принципе, всю нижеописанную информацию можно применить и к любому другому блоговому движку или системе управления сайтом. Я упоминаю WordPress, поскольку это наиболее часто используемая блоговая платформа.

Итак, способы переноса WordPress-сайта на другой хостинг:

  1. Перенести сайт вручную. Подразумевается следующее:
    • Сначала необходимо скопировать все файлы с фтп-сервера со старого хостинг на новый. Данный процесс упростит возможность сжатия всех файлов в один архив, который закачивается и распаковывается на новом хостинге. Любой современный хостер должен поддерживать работу с архивами через панель управления хостингом. Иначе пофайловая загрузка займет гораздо больше времени (в папке с Вордпрессом очень много файлов).

      Другой момент здесь — возможность копирования файлов напрямую с одного фтп-сервера на другой. Я пока с данной возможностью не встречался, но, насколько мне известно, это есть. Если такой возможности нет, то процесс переноса файлов весьма неудобен — сначала их необходимо скачать на свой компьютер (конечно, если нет локальной копии), а после этого закачивать на новый хостинг.

      Если новый хостер не «умеет» распаковывать архивы, то Вам поможет статья «Как распаковать ZIP архив на FTP-сервере»

      Таким образом, данный способ в связи с вышеописанными особенностями переноса может быть весьма неудобным и является не самым приятным из всех 3-х.

    • Перенести дамп базы данных. Сначала необходимо экспортировать дамп БД через phpMyAdmin, используя соответствующий пункт меню. После чего импортировать сей дамп через тот же инструмент на новом хостинге. Процесс, вроде бы, прост, но в ряде случаев, особенно при загрузке дампов большого размера, могут возникнуть трудности с импортом — появляется либо пустая страница, либо ошибка типа «временной лимит превышен».
  2. Попросить нового хостера перенести все содержимое со старого хостинга. Суть проста — необходимо предоставить саппорту хостера все необходимые данные от старого хостинг-аккаунта и он (саппорт) все действия по переносу WordPress-сайта выполнит за Вас. Адекватный хостинг-провайдер в большинстве случаев не откажет Вам в этом, ведь он должен оставить хорошее впечатление о качестве своих услуг.
  3. Перенести сайт с помощью SSH. Самый простой и интересный способ. Используя этот вариант, процесс переноса занимает у меня от силы 15-20 минут. Практически все автоматизировано, никаких лишних, так сказать, телодвижений. Главное — у Вас должен быть shell-доступ к своему аккаунту и на том, и на другом хостинге. Это максимально упростит перенос WordPress-сайта.

    Как в таком случае выглядит последовательность действий:

    • Через файловый менеджер в панели управления хостинга архивируем весь сайт.
    • Заходим через SSH-клиент (мне очень понравилась программа WinSCP) в аккаунт старого хостера и создаем дамп нужной БД следующей командой:

      mysqldump -u USERNAME -pPASSWORD BD_NAME > dump.sql

      где:

      USERNAME — имя пользователя БД,
      PASSWORD — пароль пользователя БД,
      BD_NAME — название БД.

      Обращаю внимание, что пробелы должны стоять точно так, как показано в вышеуказанной команде (и нижеуказанных командах).

      Поскольку дамп БД очень хорошо сжимается в архив, лучше его запаковать.

    • Заходим через SSH-клиент в нужную папку аккаунта нового хостинга и скачиваем только что созданные архивы сайта и БД следующими командами:

      wget http://site.name/site-archive.zip
      wget http://site.name/dump.zip

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

    • Распаковываем скачанные архивы в панели управления нового хостера.
    • Импортируем дамп в базу данных следующей командой:

      mysql -u USERNAME -pPASSWORD -D BD_NAME < dump.sql

      где USERNAME, PASSWORD и BD_NAME — соответствующие параметры БД на новом хостинге (естественно, она должна быть создана заранее).

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

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

На этом все. Надеюсь, что данная статья кому-то окажется полезной.

Комментарии (71)
  1. 1

    А про обычные сайты зря не написали, общую тему надо было с подразделами

  2. 2
    Feel

    Спасибо за пост!
    Очень помог

  3. 3
    Sergey

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

  4. 4
    ProGrafika

    Все перенес в базе старых урлов не осталось но картинки по прежнему со старыми урлами. Где может быть проблема. Кешь не вклбчон.

  5. 6
    Владимир

    Огромное Вам спасибо. Вы мне очень помогли. Я всегда хотел узнать, как импортировать базу данных с помощью Secure Shell (SSH), постоянно сталкивался с ошибками при импорте напрямую через phpMyAdmin, а тут Вы так легко всё объяснили. Я спокойно смог перенести сайт на DLE от одного хостера к другому, экспортировал старую базу благодаря Вашей статье, и легко импортировал в новую. Да и эта программа WinSCP просто супер, так легко с ней работать.

  6. 7
    Bodya

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

  7. 8
    @

    У меня при переносе worpdress с одного хостинга на другой выдало 500 Internal Server Error.
    Подчистил файл .htaccess
    все заработало

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress