Думаю, ни для кого не секрет, что… Чуть больше года назад именно с этой фразы начиналась наша статья о том, как разместить на виртуальном выделенном сервере свой сайт. Тогда мы на Linux-системе развернули стек LAMP, подняли FTP-сервер и с его помощью скопировали файлы сайта с локального компа на нашу виртуалку. Но всё-таки тема показалась нам недостаточно раскрытой. Как и тогда, данный материал рассчитан на не очень опытных пользователей, на тех, кто ещё только набирается опыта в вёрстке, кто пробует делать свой пет-проект на вебе, кто выполняет тестовое задание в качестве джуна-фронтендера. Речь пойдёт о том, как быстро и безболезненно перенести уже готовый сайт на только что созданный VPS.

Как и предыдущем случае, мы будем разворачивать веб-сайт на Линукс-сервере. Решение такой задачи может стать более комфортным, если делать это с применением графического интерфейса, такого как панель ispmanager.

Ispmanager — панель управления для хостинг-провайдеров и веб-мастеров. С её помощью можно настроить веб-сервер, установить на него одну из популярных CMS, создать почтовый сервер, защитить свой сайт при помощи сертификата от Let's Encrypt, управлять доменами, DNS-записями и базами данных. И это далеко не полный список возможностей ispmanager. Но не будем углубляться в теорию, приступим сразу к делу.

▍ Заказываем сервер с панелью


При заказе виртуального сервера панель доступна в качестве дополнительной опции для серверов, работающих на Debian 11, Ubuntu 22.04, Ubunntu 20.04 и CentOS 7. Панель представлена в версии ispmanager 6 Lite и стоит 200 рублей в месяц. Но не сейчас. До 30 июня 2024 года заказывать и использовать панель можно абсолютно бесплатно.


Для подключения к панели на странице сервера в личном кабине есть кнопка со ссылкой на вход в ispmanager.


Чтобы попасть в панель, вводим имя пользователя root, его пароль и жмём Войти.


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

▍ Переносим сайт


И что теперь? Теперь переходим в раздел Сайты и жмём Создать сайт, что подразумевает создание нового сайта. Создаём сайт на дефолтных настройках, в качестве режима работы обработчика указываем FastCGI, базу данных пока не добавляем.


Примечательно, что использование установок по умолчанию, кроме всего прочего, подразумевает выпуск нового бесплатного SSL-сертификата от Let's Encrypt.


Итак, жмём кнопку Создать, и наш сайт готов. Пару минут займёт подключение SSL-сертификата, но даже сейчас, когда на сайте ещё ничего нет, его страничка уже будет доступна. Вы же не забыли прикрутить доменное имя сайта к своей виртуалке?


Сайт доступен, как добавить содержимое? Просто! Исходим из того, что файлы вашего сайта уже существуют и ждут своего появления в папке с его доменным именем. Тогда открываем раздел Сайты, активируем строку со своим сайтом, жмём Файлы сайта и кликаем Загрузить. Здесь выбираем, откуда необходимо их скопировать на виртуальный сервер: с локального компа или с какого-то ресурса в сети.


При выборе другого сервера следует указать URL до загружаемого файла.


Кроме того, есть возможность не грузить каждый файл по отдельности, а залить все файлы разом в виде zip-архива. Загружаем его в директорию сайта, а чтобы распаковать, жмём Архив, потом — Извлечь.


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


Следует отметить, что процедура архивации работает и в обратную сторону. Если нужно забрать все или несколько файлов и каталогов, выделяем их, жмём Архив, затем — Создать архив, вводим имя для создаваемого архива и кликаем Создать. В результате там появится файл архива. Чтобы забрать его к себе на комп, выделяем его и жмём Скачать.

▍ А если без панели?


Скопировать сайт в виде архива можно и без использования панели, лишь при помощи командной строки. Делается это следующим образом: подключаемся по SSH к серверу, с которого мы хотим сайт забрать, переходим в каталог сайта и запаковываем всё его содержимое с помощью tar:

cd /var/www/your-domain.host
tar -cvf your-domain.host.tar *


Здесь нужно учитывать, что tar не является архиватором в традиционном смысле, он не использует сжатие при создании файла архива, но при этом помещаемые в архив директории и файлы сохраняют свои атрибуты, такие как принадлежность к владельцу и группе, а также обладание набором прав доступа. Если всё же необходимо за счёт сжатия архива уменьшить его объём, то можно сделать это с использованием утилиты gzip:

gzip your-domain.host.tar

Таким образом, на выходе у нас получится файл your-domain.host.tar.gz, в котором находятся все файлы нашего сайта your-domain.host. Его мы должны скопировать на целевой VPS. Это мы проделаем при помощи утилиты безопасной передачи файлов между хостами — scp. Данная утилита использует протокол SSH для шифрования передаваемых данных. Команда для копирования созданного архива в каталог сайта на целевом сервере будет выглядеть так:

scp your-domain.host.tar.gz your-user@10.10.10.10:/var/www/www-root/data/www/your-domain.host

В данном случае:

  • your-domain.host.tar.gz — копируемый файл,
  • your-user — имя пользователя, под которым подключаемся к удалённой виртуалке,
  • 10.10.10.10 — IP-адрес удалённого сервера,
  • /var/www/www-root/data/www/your-domain.host — полный путь до директории сайта на удалённом VPS, куда копируем файл your-domain.host.tar.gz.

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

cd /var/www/www-root/data/www/your-domain.host
tar -xvf your-domain.host.tar.gz


Чтобы текущий пользователь имел полные права доступа к файлам и директориям сайта, устанавливаем его владельцем и группой данного каталога:

sudo chown -R $USER:$USER /var/www/www-root/data/www/your-domain.host

▍ А если файлов сайта вообще ещё нет?


Их можно создавать прямо в панели ispmanager: в левом меню открываем Менеджер файлов и переходим в каталог сайта как в обычном проводнике. Тут можно создавать и удалять директории и файлы, формируя тем самым структуру и содержимое сайта. Есть даже простенький текстовый редактор, где можно корректировать содержимое того же index.html, например.


Здесь же, в Менеджере файлов можно изменить владельца, принадлежность к группе и права доступа. Для внесения таких изменений выделяем нужные файлы и директории, переходим в РедактированиеАтрибуты.


Вот так быстро и легко мы развернули фронтенд сайта на новом виртуальном сервере. А если мне надо перенести базы со старого сайта? Да без проблем!

▍ Переносим базы


К примеру, у нас где-то есть сервак, неважно какой, виртуальный или физический. Это наш исходный веб-сервер на Linux с LAMP-ом и phpmyadmin. Файлы сайта с него мы уже забрали и запустили на новом VPS. Теперь разберём, как перекинуть базы данных. Подключаемся к phpmyadmin и смотрим, что вообще придётся переносить.


У нас тут две базы данных, которые нам необходимо воспроизвести на новой виртуалке. Делать это будем также через панель ispmanager. Процесс состоит из двух действий: копируем базу со старого сервера, после чего вставляем её в новый. Поскольку на старом веб-сервере у нас нет панели, будем использовать phpmyadmin. Там кликаем в первую базу, которая у нас называется yourdb1, и переходим во вкладку Export. Метод экспорта Quick в сочетании с форматом SQL подразумевает создание дампа базы данных. Активируем именно эти опции и жмём Go.


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

В панели ispmanager нового сервера открываем раздел Базы данных и создаём новую базу, для чего кликаем в Создать базу данных.

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



Далее выделяем созданную базу и переходим ДампИмпорт, выбираем ранее загруженный файл дампа и жмём Загрузить.


Всё это повторяем со второй и всеми последующими базами, если они есть. То есть экспортируем дамп со старого сервера на локальный компьютер, после чего импортируем его на новый VPS при помощи панели.

▍ То же, но в командной строке


Экспорт баз данных реально провернуть и без использования графических оболочек phpmyadmin и ispmanager. На целевом сервере запускаем команду, при помощи которой мы создадим дамп базы на сервере-источнике и полученный дамп сохраним на новом VPS, например, в каталоге /tmp:

ssh your-user@10.10.10.20 "mysqldump -u'root' -p'password' yourdb1" > /tmp/yourdb1.sql

Здесь:

  • your-user — имя пользователя, под которым подключаемся к удалённому серверу,
  • 10.10.10.20 — IP-адрес удалённого сервера,
  • root — имя пользователя mysql на сервере-источнике,
  • password — пароль пользователя mysql на сервере-источнике,
  • yourdb1 — имя базы данных, для которой создаётся дамп,
  • /tmp/yourdb1.sql — имя файла дампа в каталоге /tmp на целевом VPS.

Далее запускаем командную оболочку mysql. Для подключения используем учётную запись администратора mysql. В нашем случае это пользователь root:

sudo mysql -u root -p

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

CREATE DATABASE yourdb1;

Затем при помощи команды exit отключаемся от оболочки mysql, переходим в директорию /tmp:

cd /tmp

И восстанавливаем базу yourdb1 из находящегося там дампа:

sudo mysql yourdb1 < yourdb1.sql

То же повторяем для остальных, подлежащих переносу баз. В нашем примере их было две, то есть для базы yourdb2 мы создаём дамп, затем в оболочке mysql создаём такую же базу yourdb2, после чего воссоздаём её из дампа.

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

show databases;
use yourdb1;
show tables;
use yourdb2;
show tables;



Видим, что базы данных на месте, таблицы внутри них — тоже.

▍ Заключение


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

Что касается переноса сайта на облачный хостинг в целом, то в качестве бесплатного варианта можно воспользоваться GitHub Pages. Данный сервис позволяет размещать веб-сайты прямо из репозиториев GitHub. Для публикации сайта таким способом необходимо создать репозиторий на GitHub, затем добавить в него непосредственно файлы сайта — index.html, styles.css и прочие и, наконец, опубликовать его. Это удобно и быстро, но, к сожалению, GitHub не позволяет прикрутить к сайту какой-либо бэкенд, в том числе и систему управления базами данных.

Telegram-канал со скидками, розыгрышами призов и новостями IT ?

Комментарии (10)


  1. nronnie
    28.05.2024 14:03
    +3

    Неужели детей нельзя сразу по нормальному учить:

    ssh your.domain.host tar czf - -C /bla/bla mysite | tar xzf - -C /foo/bar/
    


  1. Revertis
    28.05.2024 14:03
    +1

    панель доступна в качестве дополнительной опции для серверов, работающих на Debian 11, Ubuntu 22.04, Ubunntu 20.04 и CentOS 7

    Почему такое старьё, и почему так безграмотно?


    1. leha_gorbunov
      28.05.2024 14:03
      +4

      А вдруг еще кто-то научит заказывать сервер без панели и устанавливать Vesta бесплатно


      1. Revertis
        28.05.2024 14:03

        Ага, ужас какой!


      1. AngelNet
        28.05.2024 14:03

        Вы знаете, я только хотел написать коммент про Весту, но вы меня опередили!


  1. tempick
    28.05.2024 14:03
    +1

    Я просто использую aaPanel - бесплатная версия на 100% покрывает мои потребности чтобы быстро запустить тестовый сайт/бота/пр. Устанавливается одной командой. Может кому полезно будет.


  1. Vilgelm
    28.05.2024 14:03

    Почему не nginx+php-fpm? Быстрее же.


  1. ilekarev
    28.05.2024 14:03
    +1

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


    1. vcKomm
      28.05.2024 14:03

      Причем статья для трейни


  1. sequelone
    28.05.2024 14:03

    Из всех бесплатных панелек лучше всего юзать cloudpanel.io

    Там и постоянные обновы PHP, и Nginx можно настроить с Pagespeed. Красота.