Думаю, ни для кого не секрет, что… Чуть больше года назад именно с этой фразы начиналась наша статья о том, как разместить на виртуальном выделенном сервере свой сайт. Тогда мы на 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 💻