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

Следующим шагом после первоначальной настройки удалённого VPS-сервера, которую я описывал в предыдущей статье, является перенос сайтов и баз данных с виртуального хостинга на наш VPS, и окончательная настройка web-сервера, и публикация сайта.
Есть множество способов это сделать, однако я опишу самый эффективный, ибо все остальные считаю форменным извращением и напрасной тратой времени.
Самый простой способ скопировать файлы сайта и базу данных – через консоль ssh-клиента, без всяких FTP.
Практически всем пользователям виртуального хостинга предоставляют ещё и данные для ssh-доступа, но к сожалению, мало кто умеет с ним работать, а некоторые вообще не понимают, для чего это, предпочитая старый добрый FTP, со-всеми его уязвимостями и тормозами.
Между тем, передача файлов по sftp-протоколу не только безопаснее, но ещё и происходит тупо быстрее. Потому считаю ftp-протокол безнадёжно устаревшим.
SFTP — SSH File Transfer Protocol — позволяет передавать файлы посредством стандартного ssh, поверх защищённого соединения, без необходимости установки ftp-сервера, и открытия под него дополнительных портов в сетевом интерфейсе, уязвимых для udp-флуда.
Плюс ко-всему прочему, помимо защищённости, по sftp скорость передачи файлов значительно выше, включая все преимущества и меры безопасности, присущие SSH, в т.ч. авторизацию по ключам.
Итак, всё очень просто: для начала нам надо подключиться к VPS-серверу по SSH, а уже с него — опять-же, используя SSH — к виртуальному хостингу, на котором расположен наш сайт.
Почему именно в таком порядке: если вы сначала подключитесь по ssh к виртуальному хостингу — то вы не сможете ничего скопировать на ваш VPS, поскольку у вас не будет прав на запись в каталог будущего сайта, в виду разных пользователей на сервере и на хостинге. Поэтому, сначала авторизуемся на сервере, потом копируем с хостинга.
С виртуального хостинга нам необходимо скачать ДВА файла: сжатый архив файлов сайта, включая файл конфигурации web-сервера (.htaccess, если на сервере виртуального хостинга был установлен Apache), и — дамп базы данных сайта, опять-же — в виде сжатого архива. Но сначала их нужно создать.
Поэтому, ШАГ ПЕРВЫЙ: переходим в консоли на хостинге в домашний каталог пользователя командой CD (вы должны знать, где находятся файлы сайта, на крайний случай гляньте структуру директорий в ftp-клиенте). И архивируем все файлы и каталоги сайта командой tar в сжатый архив:
cd ~/
tar -zcvf archive.tar.gz path/to/files
Опции команды tar: -z — сжатие архива при создании; -с (create) — непосредственно, создание архива; -v — вывод информации о процессе работы (можно не указывать); -f — направляем вывод в файл. Далее идёт непосредственно имя файла архива — archive.tar.gz (можете указать своё), и путь к корневому каталогу сайта.
После выполнения команды, в домашнем каталоге пользователя появится файл сжатого архива, с заданным именем. Пол-дела сделано!
Далее, создаём сжатый дамп базы данных. Для этого необходимо знать имя базы данных, пользователя MySQL, имеющего на неё права, и пароль этого пользователя. Думаю, не стоит объяснять, что юзер БД и юзер на виртуальном хостинге — это не одно и тоже, а две разные сущности.
Выполняем там-же, в консоли на виртуальном хостинге:
mysqldump -u USER -p DATABASE | gzip > database.sql.gz
Команда запросит пароль юзера БД, вводим, получаем результат. В данном конкретном случае, команда перенаправляет вывод в программу сжатия, для уменьшения объёма дампа БД. В принципе, сжатие можно не использовать, но если БД «раздута» то её копирование на VPS-сервер займёт больше времени. Последним параметром идёт имя файла сжатого архива, можете задать своё.
Итак, что имеем: два файла в домашней директории пользователя на виртуальном хостинге — archive.tar.gz и database.sql.gz.
ШАГ ВТОРОЙ: копируем полученные файлы на наш VPS. Для этого, отключаемся в консоли от виртуального хостинга, командой exit и автоматически возвращаемся в консоль VPS сервера.
И одной простой командой scp копируем всё себе на сервер!
scp user@virtualhost.ru: ~/archive.tar.gz ~/
scp user@virtualhost.ru: ~/database.sql.gz ~/
Оба файла будут скопированы в домашнюю директорию пользователя на VPS сервере, под которым мы авторизовались.
ШАГ ТРЕТИЙ: распаковываем файлы в нужную директорию, и экспортируем дамп БД на сервер MySQL, с файлами всё просто — используем команду tar:
tar -zxvf archive.tar.gz -C path/to/dir
Флаг -x (eXtract) обозначает извлечение, а параметр -С указывает путь к каталогу, в который надо всё извлечь. Если у вас установлена хостинг-панель VestaCP — то путь извлечения из домашней директории пользователя будет ~/web/sitedomein.ru/public_html , вместо sitedomein.ru подставьте доменное имя своего сайта.
Не забудьте после извлечения задать правильные права на папки и каталоги, и назначить правильных владельцев и группы, командами chown и chmod.
С базой данных немного сложнее, сначала необходимо её создать через хостинг-панель, либо непосредственно из консоли. Через хостинг-панель это сделать проще, указываете имя БД, имя пользователя и пароль.
Из консоли немного сложнее, сначала из под root в mysql создаёте нового пользователя, с привилегиями на базу данных, потом из-под этого пользователя создаёте новую БД, с именем, на которое у пользователя mysql есть привилегии.
Когда БД создана — импортируем в неё таблицы с данными из сжатого дампа, следующими командами:
gunzip < database.sql.gz | mysql -u USER -p DATABASE
Сначала сжатый дамп разжимается командой gunzip, и сразу же перенаправляется поток в команду mysql, в качестве USER и DATABASE указываем владельца БД и имя БД соответственно, так-же, команда запросит пароль пользователя.
ШАГ ЧЕТВЁРТЫЙ — производим окончательную настройку локального файла конфигурации web-сервера, это необходимо, если на хостинге стоял Apache, а на VPS установлен Nginx.
Обычно, такой файл конфигурации генерируется автоматически хостинг-панелью, при добавлении нового домена. Но всегда можно что-нибудь подправить, например обработку php, или добавить SSL-cертификат и подключить HTTPS-протокол.
Ну и последнее, ШАГ ПЯТЫЙ — это настройка DNS: прописываем правильные NS-записи A и CNAME, что-бы доменное имя указывало на правильный IP-адрес, связанный с нашим VPS-сервером.
Важное примечание: всегда придерживайтесь правила — один домен — один отдельный IP! Все доменные имена ваших сайтов должны висеть на отдельных IP-адресах, причём, на первичном IP, через который вы администрируете VPS, вообще не должно быть никаких доменов, кроме того, что выделил хостер, и он должен быть закрыт фаерволом ото-всех, кроме вас. Прежде всего, это связано с вопросами безопасности.
Таким образом, в три простых шага, легко и непринуждённо, с минимальными временными затратами и без лишних телодвижений, все файлы и данные оперативно переносятся с виртуального хостинга на выделенный VPS-сервер.
Ну и естественно, если вам нужны услуги по удалённой установке и настройке выделенного VPS/VDS сервера Linux, а времени, знаний или желания заморачиваться этим нет — вы всегда можете обратиться ко-мне, консультирую бесплатно!