Перенос сайта с одного сервера на другой через коносоль
В последнее время столько раз переносил сайты с одного сервера на другой, что решил всё делать через командную строку, так быстрее. Хотя есть не намного медленнее альтернативы, если совместно использовать командную строку и графический интерфейс, но решил делать одним способом. Описываю процесс.
Содержание:
Удобно создать себе команды в каком-нибудь защищенном менеджере паролей и оттуда в случае необходимости копировать:
или в таком формате, где-нибудь в заметках, для каждого из своих сайтов:
В таком случае перенос сайта или базы данных будет занимать считанные минуты. Это будет казаться фантастикой, особенно, если раньше вы копировали с помощью FTP клиентов и страницы phpMyAdmin.
При переносе менять можно всего лишь ip адрес сервера, а пути оставлять прежними. Если вы везде пользуетесь одними инструментами, например, ISP Manager или Vesta, то пути и не меняются. Это очень удобно.
Перенос сайта
Ниже будет подробное описание переноса, а в конце краткий перечень всех команд. Если команды и так понятны, можно сразу перейти к списку всех команд и вставлять в командную строку одну за другой.
На старом сервере
Сначала перенесем файлы сайта.
Заходим на сервер через ssh, удобно логиниться через быстрые ярлыки. А если более профессионально и безопасно, то через SSH ключ.
Переходим в директорию, которую будем архивировать:
cd /home/admin/web/ploshadka.net/public_html/
Запаковываем в .tar.gz (сохраняем только папку сайта, без полного пути):
tar -cvvzf site.tar.gz ./
Переносим архив сайта на другой сервер:
scp site.tar.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/
При первом подключении к стороннему серверу появится сообщение о том, что надо внести уникальный отпечаток, чтобы в последствии доверять этому серверу. Надо ответить yes.
The authenticity of host '111.11.11.11 (111.11.11.11)' can't be established. ECDSA key fingerprint is 01:al:39:bm:19:ds:32:59:ns:49:fm:ds:59:18:38:23. Are you sure you want to continue connecting (yes/no)?
Затем вводим пароль доступа от нового сервера:
Warning: Permanently added '111.11.11.11' (ECDSA) to the list of known hosts. root@111.11.11.11's password:
После чего файл будет скопирован на новый сервер.
У меня при команде scp показывает ошибку:
ssh: No such file or directory
Но, если перед ней указано что-то вроде:
100% 600MB 10.5MB/s 00:57
Значит, что наш резервный файл был скопирован удачно и в нужное место.
Я не знаю с чем связано уведомление No such file or directory, когда при этом всё копируется. Может баг такой. Если вдруг директории такой и в самом деле нет, то в этом случае никакого копирования не произойдет.
Удаляем архив на старом месте. Он нам больше не нужен.
rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz
На новом сервере
Заходим на новый сервер. А затем переходим в директорию в которую хотим распаковать архив:
cd /home/admin/web/ploshadka.net/public_html/
Распаковываем в эту папку все файлы:
tar -xvvzf /home/admin/web/ploshadka.net/public_html/site.tar.gz
Для запоминания этого набора букв, будет полезным знать их назначения.
xvvzf расшифровывается как:
x — распаковка, vv — подробный вывод результатов, z — формат файла gz, f — файл.
Удаляем наш бэкап файл:
rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz
Все команды вместе
На старом сервере:
cd /home/admin/web/ploshadka.net/public_html/ tar -cvvzf site.tar.gz ./ scp site.tar.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/ (ввести пароль от нового сервера) rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz
На новом:
cd /home/admin/web/ploshadka.net/public_html/ tar -xvvzf /home/admin/web/ploshadka.net/public_html/site.tar.gz rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz
Переносим базу данных MySQL
Теперь пришла очередь перенести базу данных сайта.
На старом сервере
Снова переходим в директорию, которую будем архивировать. Это нужно делать всегда, на всякий случай, особенно если сайтов много, чтобы не было ошибок:
cd /home/admin/web/ploshadka.net/public_html/
Экспортируем и архивируем базу данных. В USER и DBNAME вводим название конкретной базы данных и название пользователя для неё, которую хотим экспортировать. Вместо PASS вводим пароль от этой же базы данных.
mysqldump -u USER -pPASS DBNAME | gzip > /home/admin/web/ploshadka.net/public_html/db.sql.gz
Переносим на новый сервер:
scp db.sql.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/
Вводим пароль от нового сервера. Всё перенеслось, если в конце будет подобное:
100% 162KB 162.4KB/s 00:00
Удаляем файл со старого сервера:
rm -f /home/admin/web/ploshadka.net/public_html/db.sql.gz
На новом сервере
Импортируем базу данных. Вместо BDNAME — название нашей базы данных. Само слово root — не меняем.
zcat /home/admin/web/catavto.com/public_html/db.sql.gz | mysql -u root -pПароль_от_рутдоступа_mysql BDNAME
Обратите внимание пароль от root доступа к MySQL. Для панели Vesta его можно найти здесь.
Удаляем файл с нового сервера:
rm -f /home/admin/web/ploshadka.net/public_html/db.sql.gz
Все команды вместе:
На старом:
cd /home/admin/web/ploshadka.net/public_html/ mysqldump -u USER -pPASS DBNAME | gzip > /home/admin/web/ploshadka.net/public_html/db.sql.gz scp db.sql.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/ (ввести пароль от нового сервера) rm -f /home/admin/web/ploshadka.net/public_html/db.sql.gz
На новом:
zcat /home/admin/web/catavto.com/public_html/db.sql.gz | mysql -u root -pПароль_от_рутдоступа_mysql BDNAME rm -f /home/admin/web/ploshadka.net/public_html/db.sql.gz
0 комментариев