УДК 04
Информационные технологии
Ершов Тимофей Андреевич, студент, Хакасский государственный университет им Н. Ф. Катанова, Россия, г. Абакан
РАЗВЕРТЫВАНИЕ WEB-САЙТА НА СЕРВЕРЕ
Аннотация: В данной статье рассматривается возможность развертывания web-сайта на сервере. Приведено описание что такое сервер, как использовать хостинг, и зачем нужны доменные имена. Так же в статье описывается с помощью каких технологий можно организовать локальный сервер, и как реализовать контейнеризацию.
Ключевые слова: Web-сайт, back-end, front-end, Docker, Laravel, сервер, контейнер, хостинг, доменное имя.
Annotation: In this article, the possibility of deploying a website on a server is discussed. It provides an explanation of what a server is, how to use hosting, and why domain names are necessary. The article also describes the technologies that can be used to set up a local server and how to implement containerization.
Keywords: Website, back-end, front-end, Docker, Laravel, server, container, hosting, domain name.
На сегодняшний день существует большое количество разнообразных web-сайтов на любую тематику, используя данные сайты мало кто задумывается на чем написан сайт и где или в каком месте запущен, но для тех, кто его разрабатывает или заказывает, это играет критическую роль, поскольку от того как и где был развернут сайт или back-end сервер зависит цена обслуживания, скорость работы сайта, отзывчивость, безопасность. Особенно подобные вещи актуальны для начинающих разработчиков, ведь в текущих реалиях тяжело выбрать что-то конкретное из-за большого обилия вариантов.
Прежде чем продолжить рассмотрение видов web-сайтов и то, какими они бывают, как производить развертывание на сервере, стоит определить, что же такое понятие сервер.
Сервером называется компьютер, выделенный из группы персональных компьютеров или рабочих станций для выполнения какой-либо сервисной задачи без непосредственного участия человека. Сервер и рабочая станция могут иметь одинаковую аппаратную конфигурацию, так как различаются лишь по участию в своей работе человека за консолью [1].
Из данного определения следует, что по факту сервером может быть почти любой компьютер, так оно и есть, развернуть свой собственный web-сайт можно даже у себя дома, будут только меняться способы взаимодействия разработчика и сервера.
Во время разработки web-сайта или любого другого web-ресурса, особенно если проект находиться на ранней стадии, разработчики производят локальное тестирование, то есть запуск сайта на своем рабочем ПК. Данная функция помогает очень быстро тестировать web-сайт, отлавливать и записывать ошибки в log файл и сразу же их смотреть и исправлять, обычно адреса на которых запускаются сайты локально, будут иметь адрес localhost:port или 127.0.0.1:port, что является одним и тем же, port определяет по какому порту сервера происходит подключение. Также часто идет практика развертывание сайта в локальной сети предприятия, где уже IP адрес будет определен маской локальной сети, к примеру один из вариантов 192.168.0.1 :port, доступен такой сайт будет не только на компьютере пользователя, но и уже по всей локальной сети, здесь в тестировании сайта могут участвовать более одного человека. Узнать всю необходимую информацию об интернет адаптерах, IP адресах для подобной работы помогут утилиты ipconfig в системе Windows и ipconfig в Unix системах.
Когда необходимо произвести развертывание web-сайта с доступом через сеть интернет, то разработчик имеет несколько вариантов, выбор которых зависит от целей разработчика. Самый простой и быстрый способ — это аренда
хостинга на таких сайтах как reg.ru. Арендуя хостинг, по факту происходит покупка вычислительных ресурсов, которые будут выделены именно разработчику и заказчику дистанционно. Можно также купить доменное имя, чтобы сайт был сразу узнаваем, и пользователи не видели голый IP адрес для перехода на сайт, домен может отображать услуги, которые предоставляет сайт [2].
После покупки хостинга остается лишь удаленно подключиться к серверу. Обычно защищенное подключение осуществляют с помощью ssh ключа вводя ip адрес хостинга, свой пароль и пользователя, а затем можно сидеть через удаленную консоль как через обычный ПК. После подключения можно просто скопировать данные web-сайта и скачать все необходимые зависимости на сервер, запустить его. Но тогда перед разработчиком встает ряд проблем.
Во-первых, после отключения от сессии запущенный сайт сразу же упадет, поскольку ассоциированный с ним пользователь вышел. Чтобы подобного не происходило используют Docker контейнеры или запускают сайт как фоновый сервис, но лучше использовать контейнеризацию. Docker является очень удобным и элегантным решением для развертывания сервера, он создает изолированную среду для сайта со всеми установленными зависимостями и запускает сервис из-под коробки как виртуальную среду. Стоит отметить, что данный способ позволяет развертывать сразу множество web-сайтов с разными зависимостями, если два сайта используют разные версии одних и тех же пакетов или интерпретаторов, контейнеры очень легко решают данную проблему. Контейнеры также позволяют легко отслеживать и выделять потребляемые ресурсы web-сайта, контролировать ошибки, производить расширение зависимостей, смотреть запуск и время работы контейнера. Если произойдет критическая ошибка, которая может нанести ущерб системе, или атака, можно просто отключить контейнер или пересобрать его, ведь даже вирусы будут изолированы от основной системы.
Многие фреймворки такие как Laravel поддерживают мгновенное
развертывание сайта, прямо во время разработки, можно писать код и сайт будет моментально перестраиваться, такой же функцией обладает React и Django.
Мгновенное развертывание возможно благодаря используемым языкам PHP, Python или JS, то есть для данных языков не нужна предварительная компиляция, они производятся построчно, если развертывать сайт на таких языках как C++, Java, C#, то придется прежде, чем увидеть изменения на сайте, перезапускать проект и ждать пока отработает компилятор. Подобные функции в различных фреймворках часто носят название hot reload.
Также стоит отметить, что существует разные понятие развертывание сервера, у многих проектов есть целые слои серверов, микросервисы, back-end сервер, сервер базы данных, web или frontend сервер, все они выполняют свою роль, но зачастую только один напрямую взаимодействует с клиентом, отправляя ему данные через протокол http, https для отображения в браузере, данный сервер носит название web или frontend сервер, этот подход можно назвать как разделяй и властвуй, что упрощает разработку и поиск ошибок, также добавляет гибкость, ведь можно просто заменить целый сервер, и переподключить его к другим системам.
Развертывание web-сайта является очень важной частью рутины разработчика, если проект разрабатывается для коммерческих целей, необходимо заранее определить с помощью каких средств будет вестись разработка, где и как будет происходить развертывание проекта, средняя предсказательная нагрузка, поскольку в данном деле ошибки имеют реальный денежный эквивалент.
Библиографический список:
1. skysmart. Сервер - что это такое. [Электронный ресурс] // URL: https://skysmart.ru/articles/programming/server-chto-eto-takoe (Дата обращения: 20.08.2023).
2. AWS. Что такое веб-хостинга. [Электронный ресурс] // URL:
https://aws.amazon.com/ru/what-is/web-hosting/ (Дата обращения: 20.08.2023).