Что такое веб-сервер. Нетривиальные случаи работы с серверами На чем работают сервера

Если ежедневно используется компьютер, который подключен к сети, если на мобильном гаджете тоже подключен Интернет, то каждый пользователь время от времени сталкивается со словом – «сервер». Причем это слово может встречаться в разных сочетаниях, и не каждый пользователь понимает, о чем идет речь. Что же скрывается до словом «сервер», да и зачем он пользователям нужен?

Под понятием «сервер» может скрываться аппаратное устройство и программное обеспечение для него (аппаратный и виртуальный). Аппаратный сервер – это отдельный компьютер. Он нужен для обеспечения работы других ПК и офисной техники. Виртуальный сервер – это ПО. При этом конкретный сервер объединяет эти два вида.

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

Работу больших компаний, на которых установлено много электронного оборудования, уже трудно представить без объединения все этих устройств в одну сеть. Сервер на предприятии позволяет удаленного управлять офисной техникой и позволяет взаимодействовать ПК между собой.

Поломка сервера или сбой в его работе может закончиться катастрофой

На предприятиях серверы позволяют оптимизировать работу всех отделов. Но и в повседневной жизни мы часто сталкивается с работой серверов. В частности, операционисты в кассах и банках с помощью сервера распечатывают документы и осуществляют проплаты. Сервер поддерживает работу всех почтовиков, соцсетей и менеджеров общения.

Сервер обеспечивает выход в Сеть. Все сайты хранятся на серверах. Это обеспечивает виртуальный хостинг. Такую услугу предоставляют хостинговые компании.

Для чего нужен сервер и когда стоит покупать его для своего бизнеса?

Для начала уточним, что сервер – это оборудование, которое использует серверное программное обеспечение . Он оптимизирован для работы с другими компьютерами (клиентами). Клиентами сервера могут быть компьютеры, телефоны, факсы, принтеры и все другие устройства, которые подключаются к интернету. Чем больше информации Вы планируете хранить на серверном оборудовании, тем мощнее должен быть сервер. Для каких целей арендуют сервер? Подробнее в материале на блоге ГиперХост .

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

Но все же многие считают, что иметь собственный сервер не обязательно, можно воспользоваться обычным компьютером. Но хотим вас предупредить, что это очень недальновидное решение. Компьютер не сможет выполнять множество задач, которые выполняет сервер. Прежде всего, сервер это не только хранение информации, но и выполнение большого количества одновременных запросов, с которыми обычный ПК не справится и в критический момент просто потеряет всю необходимую информацию.

Если Ваш бизнес работает на перспективное будущее, следует задуматься о выборе сервера.

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

Почтовый сервер принимает непосредственное участие в принятии и отправлении электронной почты. Вы отправляете письмо на электронный адрес, но оно сначала попадает на почтовый сервер, где происходит его обработка. Индексируется адрес получателя и письмо отправляется. В этом процессе участвует несколько почтовых серверов, которые обмениваются необходимой информацией. О популярных почтовых серверах Exim, Postfix, Sendmail можно прочитать в статье.

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

Веб-сервер – сервер подключенный к Интернету и принимающий запросы пользователей по протоколу HTTP. Все сайты, который есть в сети, расположены на веб-серверах. Такой вид сервера – непосредственный проводник между сайтом и клиентами. Веб-сервер получает запрос, далее обрабатывает его и выдает результат (файловый или гипертекстовый). По своей сути веб-хостинг и веб-сервер понятия идентичны. Веб сервер Nginx и apache – что это и как работает данная связка? Ответ на данный вопрос .

Сервера баз данных. В большинстве все программы используют базы данных. Данный вид серверов обеспечивают доступ к данным с помощью системы клиент-сервер. Самыми популярными серверами баз данных являются SQL SERVER (Microsoft), SQL BASE SERVER, Oracle SERVER (Oracle Corporation), IBM DB2, Informix. Они работают на платформе различных ОС, таких как MSDOS, OS/2, Xenix, Unix.

Прокси-сервер – можно сказать, что это тот же веб-сервер, но он осуществляет запросы в сети вместо посетителя. Это по сути комплекс программ. Вы подключаетесь к прокси-серверу, даете ему запрос, а он ищет информацию вместо Вас, в некоторых случаях изменяя ее. Работа с прокси-сервером позволяет защитить компьютер клиента от вредоносных программ, быть анонимным в сети, ограничить доступ к определенным ресурсам или наоборот обойти запреты. Простая установка прокси сервера на свой VPS за 1 минуту, подробнее .

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

В наше время очень трудно представить работу предприятия без использования серверов. В этом трудоемком процессе участвуют сервера всех типов.

Причины, по которым можно определить, нужно ли для вашей фирмы?

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

От правильности выбора сервера зависит успешная работа компании, ведь сервера помогают организовать бесперебойное функционирование предприятия, и связывают отдельные подразделения, например, те, которые находятся в разных городах.

Специалисты компании HyperHost с удовольствием подберут наиболее оптимальный физический или , по всем параметрам, сервер и обеспечат стабильность Ваших проектов. Сравнение также поможет сделать вам верный выбор и правильно подобрать услугу в зависимости от поставленной цели.

Необходимо выбрать операционную систему для работы сервера? Данная поможет вам сделать правильный выбор и оценить все возможности каждой ОС. О панелях управления для серверов с Linux .

42787 раз(а) 17 Сегодня просмотрено раз(а)

Если Вы напечатаете в адресной строке вашего браузера http://www.сайт/how-web-server-work/ и нажмете клавишу Enter - эта страничка нашего Веб-сайта появится на экране.

На самом базовом уровне произошло следующее: Ваш браузер сформировал подключение к Веб-серверу, отправил запрос на получение Веб-страницы страницы и получил ее.

Теперь немного подробнее:

URL состоит из трех частей:

1. Протокола (http)

2. Имени сервера (www.сайт)

3. Адреса страницы (how-web-server-work)

Браузер обращается к серверу доменных имен, чтобы перевести имя сайта www.сайт в IP-адрес , который он использует, чтобы подключиться к серверной машине. Браузер затем образует соединение с Веб-сервером по указанному IP-адресу на порт 80 или любой другой, если так задумано (Мы обсудим порты позже в этой статье).

Следуя протоколу HTTP, браузер послал запрос на сервер, запрашивая файл http://www.сайт/how-web-server-work/

Обратите внимание, что файлы cookie также могут быть отправлены от браузера к серверу.

В ответ сервер сгенерировал динамическую Веб-страницу и послал обратно HTML текст для отображения этой страницы в Вашем браузере. Файлы cookie также могут быть отправлены от сервера к браузеру в заголовке страницы. Браузер читает HTML-теги и формирует вывод Веб-страницы на экране.

Интернет

Так что же такое «Интернет»? Интернет представляет собой сотни миллионов компьютеров, связанные вместе в компьютерную сеть . Сеть позволяет всем компьютерам взаимодействовать друг с другом. Домашний компьютер может быть связан с сетью Интернет при помощи самых разных способов и устройств – начиная с примитивного модема для телефонной линии, закачивая соединением по локальной сети (LAN ) с Интернет-провайдером (ISP ).

Крупные Интернет-провайдеры поддерживают волоконно-оптические линии для всей страны или региона. Магистральные сети проложены во всем мире, соединенные по волоконно-оптическим линиям, подводным кабелям или спутниковым каналам. Таким образом, каждый компьютер в сети Интернет подключен к любому другому компьютеру в сети Интернет.

Клиенты и Серверы

В общем, все компьютеры в Интернет, можно разделить на две категории: серверы и клиенты. Компьютеры, обеспечивающие сервисы (такие как Веб-серверы, серверы FTP, облачные сервисы) для других машин являются серверами . Машины, которые используются для подключения к этим услугам — клиенты . При подключении к Google , чтобы выполнить поисковый запрос или воспользоваться каким-либо его сервисом, Google предоставляет свой компьютер (возможно, целый кластер мощных компьютеров) для обслуживания Вашего запроса. Таким образом, Google предоставляет сервер. Ваша машина тоже может предоставлять услуги кому-то в Интернете. Таким образом, пользовательская машина, обычно, является клиентом, хотя может становиться и сервером, в случае необходимости.

Сервер может предоставить одну или несколько услуг в Интернете. Например, на компьютере-сервере может быть установлено программное обеспечение, позволяющее ему выступать в качестве Веб-сервера, e-mail сервера и FTP сервера. Компьютеры-клиенты, которые присоединяются к серверу, направляют свои запросы к специальному программному обеспечению, работающему на общем компьютере-сервере. Например, если вы используете Веб-браузер на вашем компьютере, он будет «общаться» с Веб-сервером на компьютере-сервере. Ваше e-mail приложение будет «говорить» с сервером электронной почты, и так далее.

IP-адреса

Чтобы соединить все эти машины в сеть, у каждого компьютера в Интернете есть уникальный адрес, называемый IP-адрес . Типичный IP-адрес выглядит так:

Четыре числа в IP-адресе называются октеты потому что они могут принимать значения между 0 и 255 или 2 8 вариантов значений.

Каждый компьютер в Интернет имеет свой уникальный IP-адрес. Сервер имеет статический IP-адрес, который меняется редко. Домашний компьютер часто имеет IP адрес, назначенный провайдером, когда машина соединяется с ним. Этот IP-адрес является уникальным для этой сессии, но может оказаться другим в следующий раз. Таким образом, ISP, нужен только один IP адрес для каждого маршрутизатора, которые он поддерживает, а не для каждого клиента.

Если вы работаете на Windows машине, вы можете просмотреть множество информации об Интернете на вашем компьютере, включая ваш текущий IP-адрес и имя хоста, с помощью команды ipconfig . На UNIX-машине, надо набрать nslookup в командной строке для отображения IP-адреса машины.

Доменные имена

Поскольку большинство людей имеют трудности с запоминанием последовательности цифр, которые составляют IP-адреса, и потому, что IP-адреса иногда нужно менять, все серверы и сайты в Интернете также имеют и удобочитаемые имена, называемые доменными именами . Например, www.. Это проще для большинства из нас — запомнить www.сайт чем запоминать 5.9.205.233

Имя www.сайт на самом деле состоит из трех частей:

1. Имя World Wide Web (www). На самом деле можно обходиться и без явного указания «www», хотя, формально, это будет другая сеть.

2. Доменное имя (qriosity)

3. В зоне домена верхнего уровня (ru)

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

Серверы доменных имен

Набор серверов, называемых серверы доменных имен (DNS) сопоставляет удобочитаемые имена в IP-адреса. Эти серверы содержат простые базы данных, содержащие имена и IP-адреса, и они распределены по всему Интернету. Большинство отдельных компаний, Интернет-провайдеров и крупных университетов поддерживают малые DNS. Существуют также центральные DNS, которые используют данные, поставляемые Регистраторами доменных имен.

При вводе URL-адреса http://www..сайт, передает его на сервер доменных имен, сервер возвращает правильный IP-адрес для www.сайт. Целый ряд серверов имен может быть вовлечен в то, чтобы получить правильный IP-адрес.

Итак, повторим прочитанное: Интернет состоит из миллионов машин, каждая с уникальным IP-адресом. Многие из этих машин – серверы. Это означает, что они предоставляют услуги другим компьютерам в Интернет. Многие из этих серверов являются серверами электронной почты, Веб-серверами, FTP-серверами, серверами облачных сервисов.

Порты

Любой сервер делает свои услуги доступными через Интернет с помощью пронумерованных портов , по одному для каждой службы, доступной на сервере. Например, есть компьютер-сервер, на котором запущен Веб-сервер и FTP-сервер. Веб-сервер, как правило, будет доступен на порту 80, а FTP-сервер будет доступен на порту 21. Клиенты подключаются к сервису на определенный IP адрес и на определенный порт.

Каждая из самых популярных услуг, доступна на заранее известном номере порта, но можно назначить и собственный номер порта любой услуге.

Если сервер принимает соединения на порту от внешнего мира, и если брандмауэр не защищает порты, вы можете подключиться к заранее обусловленному порту с любого компьютера в Интернет и воспользоваться услугой. Обратите внимание, что нет ничего, что заставляет Вас, к примеру, держать Веб-сервер на порту 80. Если вы установили свой сервер и загрузили программное обеспечение Веб-сервера на нем, вы могли бы поставить Веб-сервер на порту 999, или любом другом неиспользуемом порту. Затем, если, например, Ваша машина будет известна как xxx.yyy.com то к ней могут подключаться с URL http://xxx.yyy.com:999 - «:999» явно указывает номер порта, по которому можно добраться до вашего Веб-сервера. Если порт не указан, то браузер просто предполагает, что Веб-сервер доступен с помощью хорошо известного порта 80.

Протоколы

Как только клиент подключен к службе на данном порту, он обращается к сервису с помощью специального протокола . Протокол — это набор соглашений логического уровня, позволяющий программам обмениваться данными. Для совместной работы компьютеров в сети Интернет используется семейство протоколов TCP/IP . Веб-сервер использует протокол HTTP.

Дополнительно: Безопасность

Вы можете видеть из этого описания, что Веб-сервер это довольно простой фрагмент программного обеспечения. Он принимает имя файла, отправленного с помощью команды GET, получает файл и отправляет его в браузер. Даже если брать в расчет весь код для обработки портов, программа простейшего Веб-сервера состоит не более, чем из 500 строк кода. Полномасштабные Веб-серверы являются более сложными, но в своей основе тоже очень просты.

Большинство серверов устанавливают некоторый уровень безопасности к процессам обслуживания. Простейший вариант – запрос логина и пароля для получения доступа к серверу. Более продвинутые серверы добавляют дополнительную безопасность, путем установления зашифрованной связи между сервером и браузером, так что конфиденциальная информация (например, номера кредитных карт) может быть выслана по Интернету.

Это действительно все, что нужно Веб-серверу, который обслуживает стандартные, статические Веб-страницы . Статические страницы – это страницы, которые не изменяются, если вебмастер сам не отредактирует их.

Дополнительно: Динамические страницы

Что такое динамические Веб-страницы ? Например:

1. Любая гостевая книга позволяет ввести сообщение в HTML-форме, и выводит новые и старые записи автоматически.

2. Любой поисковик позволяет ввести ключевые слова в HTML-форме запроса, и тогда он динамически создает страницу, на основе поиска информации по этим ключевым словам.

Во всех этих случаях, Веб-сервер осуществляет не просто «поиск файла». Он обрабатывает информацию и генерирует страницы в зависимости от специфики запросов. Почти во всех случаях, Веб-сервер, использует так называемые скрипты — программный код, написанный на PHP, Perl, Java и других языках программирования, чтобы совершить этот процесс.

Страницы нашего сайта — тоже являются динамическими, созданными при помощи PHP с использованием баз данных MySQL.

Ниже мы приводим адаптированный перевод статьи The non-techie’s guide to servers Кеннена Чандрасегарана (Kannan Chandrasegaran), разработчика из компании Panopto. Просим обратить внимание, что статья рассчитана на новичков, которые мало знакомы с понятием серверной части приложения и серверов.

Из жизни офиса

Сложно быть «не-технарём» в ИТ-компании, уж поверьте! Маркетологи, менеджеры по продажам, бухгалтеры - не суть важно - время от времени они сталкиваются со своими технически подкованными коллегами. Это могут быть программисты или системные администраторы.... В любом случае, "не-технари" чувствуют себя так, будто им ампутировали важную часть мозга. Или они высадились на неизвестную планету с разумной негуманоидной жизнью. Или…

Иногда, конечно, всё заканчивается благополучно. Вот, например, девушка-« », идёт по коридору. Ничто не предвещает беды: она направляется налево, вы – направо, и как можно быстрее… Нет, в этот раз не пронесло. Вы уже сидите с ней за столом, и пытаясь побороть неловкое молчание, спрашиваете: «А...чем именно ты занимаешься?». Она начинает рассказывать что-то, но вы не сразу врубаетесь, о чём она. Вроде бы и слова знакомые: пользовательский интерфейс, приложения, и - точно, Facebook - это сайт. Ага, там есть кнопочки, меню… Вы кое-как разобрались в хитросплетениях её работы, киваете ей на прощание и ваши пути расходятся в коридорах большого офиса.

Но рано или поздно вам не так повезёт: вы встретите инженера по серверам. Или бек-энд разработчика. Не зная в какие дебри сейчас попадёте, вы наивно задаёте тот же вопрос и... получаете абракадабру в ответ. Слышите уйму иностранных слов, а в голове пробегают мысли: «Прилично ли спросить, что такое API?», «Мы всё время используем «бэдэ» (DataBase), правда, что ли?», «Кто такой, чёрт побери, этот Джейсон (JSON)??». Ваш знакомый инженер пытается рассказать вам о серверах, но не понимает, насколько вам сложно понять его наполненную профессиональными терминами речь. Вероятно, вы уже слышали слово "сервер" раньше, но его употребляют в настолько разных контекстах, что осознать его значение крайне сложно. Что ж попробуем разобраться с этим термином.

Вниз по кроличьей норе

Когда обычный человек (в смысле, не программист или админ) использует приложение, всё, что он видит - это интерфейс, картинку, которая реагирует на какие-то очевидные (чаще всего) действия. На самом деле то, что пользователи понимает под «приложением» обычно - его фронт-енд, то есть, лицевая, часть, обёртка, с которой они взаимодействуют. А вот о том, что внутри, то есть о том, что заставляет приложение работать, пользователи знают крайне мало. Скажем, вы отправляете мне сообщение, например, по Whatsapp или Viber. Это выглядит так, будто сообщение идет с вашего смартфона на мой. Давайте посмотрим на этот процесс внимательнее. Скажем, вы отправляете мне сообщение, когда мой телефон выключен, а затем вы сами выключаете свой смартфон. И вот, я включаю свой телефон, и все-таки получаю ваше сообщение, хотя наши телефоны одновременно не работали. Похоже, мы что-то упустили! Это «что-то», пропущенный нами компонент - бек-энд или сервер.

Говоря о фронт-энде и бек-энде, программисты обычно подразумевают разделение пользовательской части приложения от программной логики. Итак, фронт-энд (front-end) - это интерфейсная часть приложения, а бек-энд (back-end) - его серверная часть.

Серверы

По сути, сервер - это вычислительная машина, компьютер, который подсоединён к Интернету, и постоянно включён. Когда приложению требуется какая-либо информация, оно обращается к серверу. Когда приложению требуется связаться с другим пользователем приложения, именно сервер обеспечивает их взаимодействие. Термины сервер, бэк-энд и API (апи) часто используются как взаимозаменяемые.

Хранилища или системы хранения данных

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

Вы можете представить такую информацию в виде набора таблиц. Например, приложению необходимо хранить информацию о пользователе и его пароле, чтобы могла пройти аутентификация. Ваше приложение может быть путеводителем по ресторанам, в этом случае сервер будет хранить информацию о каждом ресторане. Помимо самой информации сервер также записывает связи между данными. Например, пользователь лайкает ресторан в приложении на смартфоне, и сервер запоминает такую связь между рестораном и пользователем.

Это позволяет ответить на многие вопросы. Например:

  • Сколько пользователей лайкнули этот ресторан?
  • Какие рестораны нравятся этому пользователю?
  • Блюда какой кухни нравятся сразу нескольким пользователям?
Информация и связи между данными хранятся в базе данных (БД). Существует множество видов баз данных, но все они:
  • могут хранить информацию
  • могут хранить связи между данными
  • могут получать запросы об информации и отвечать на них как единичными данными или набором данных, в зависимости от запроса.
Существует много видов баз данных, каждая из которых имеет свои преимущества и недостатки. Если вы слышите такие термины как SQL, MySQL, MongoDB, CouchDB, Redis, то знайте - речь идет о базах данных.

Взаимодействие

Ключевая задача сервера - взаимодействие с приложением и другими серверами.

Многие задачи приложения требуют взаимодействия с сервером. Например, если пользователь что-то ищет, поисковый запрос посылается на сервер и оттуда приходит результат. Если пользователь шлет сообщение другому пользователю, оно сначала приходит на сервер. А затем оттуда отправляется на приложение другого пользователя, чаще всего в виде отправленного уведомления. Интерфейсы, которые предоставляет сервер для того, чтобы приложения могли с ним взаимодействовать, обычно называются API . Ну а какие-то функции интерфейса можно сопоставить с конечными точками (endpoints), например, с поиском или авторизацией на сайте. Непосвященным такое взаимодействие может показаться странным. Двумя наиболее распространенными форматами взаимодействия являются JSON и XML.

XML слева, JSON справа На первый взгляд форматы выглядят трудночитаемыми. Важно понимать, что сервер - это просто компьютер, как ваш ноутбук или смартфон. Приложение на вашем телефоне принимает пользовательский ввод в голосовом или текстовом виде, с помощью распознавания голоса или касания к экрану. Приложение обрабатывает эту информацию, а затем дает ответ в виде изображения на экране. Смартфон -компьютер, который взаимодействует с человеком, поэтому ввод и вывод предоставляются в удобной для человека форме. Сервер - вычислительная машина, которая взаимодействует только с другими компьютерами. Человек воспринимает информацию благодаря таким вещам как: размер шрифта, цвет текста и форматирование. Но это ничего не значит для компьютера.

Серверное приложение

Если вы хотите создать приложение, которое будет работать на вашем телефоне, вам также понадобится приложение, которое будет работать на сервере. Серверные приложения создаются с помощью серверных языков программирования и фреймворков, популярными вариантами которых являются Java , Ruby on Rails , Node.js , PHP , ASP.NET .

Можно сказать, что API - это «двери» вашего сервера и приложение знает, что в них надо стучать. База данных хранит всю вашу информацию. А серверное приложение – это «мозг», который связывает все вместе. Оно получает и отвечает на запросы, которые поступают ему через API, добавляет и извлекает информацию из базы данных, и принимает решения. Например, когда пользовательское приложение отправляет информацию для входа, запрос поступает через API, правильная информация для входа хранится в базе данных. Задачей серверного приложения сравнить их и соответственно ответить приложению, используя API.

Аппаратное обеспечение

Когда вы слышите слово «сервер», скорее всего, вы представляете такую картинку: шкафы с мерцающими лампочками в закрытой комнате. Вероятно, для полноты картины, не хватает только Тома Круза, который спустится с потолка и что-нибудь крадёт. Многие большие компании владеют собственными серверами и целыми центрами обработки данных (те самые огромные комнаты с мерцающими шкафами). У Facebook и Google сотни серверов по всему миру. Когда вы руководите огромным сервисом с миллионами пользователей, содержание собственных серверов может быть значительно дешевле и это обеспечит более высокую производительность. Вместо того чтобы содержать свои собственные сервера многие разработчики используют облачные сервисы. Такие сервисы как Amazon Web Services, Azure и Digital Ocean предлагают возможность использования «виртуальных серверов». Эти сервисы владеют и обслуживают аппаратное обеспечение, а разработчик просто загружает на него серверное приложение. Некоторые провайдеры услуг предоставляют бекэнд как сервис, позволяя вам иметь простой бэкенд без необходимости писать серверное приложение самостоятельно.

Всем ли приложениям нужен бэкенд?

Большинство знакомых вам приложений, скорее всего, имеют бэкенд-компонент. Конечно, можно найти программы без серверной части. Например, некоторые приложения для продуктивности. Легкий способ выяснить есть ли у приложения бэк-енд выглядит так: Если ответ «нет», это означает что у приложения точно есть бекэнд-сервер.

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

В этой статье мы узнаем, что из себя представляют веб-серверы, как они работают, и почему они так важны.

Введение

Понятие « веб-сервер» может относиться как к аппаратной начинке, так и к программному обеспечению. Или даже к обеим частям, работающим совместно.

  1. С точки зрения "железа", « веб-сервер» - это компьютер, который хранит файлы сайта (HTML-документы, CSS-стили, JavaScript-файлы, картинки и другие) и доставляет их на устройство конечного пользователя (веб-браузер и т.д.). Он подключен к сети Интернет и может быть доступен через доменное имя, подобное mozilla.org .
  2. С точки зрения ПО, веб-сервер включает в себя несколько компонентов, которые контролируют доступ веб-пользователей к размещенным на сервере файлам, как минимум - это HTTP-сервер . HTTP-сервер - это часть ПО, которая понимает (веб-адреса) и HTTP (протокол, который ваш браузер использует для просмотра веб-страниц).

На самом базовом уровне, когда браузеру нужен файл, размещенный на веб-сервере, браузер запрашивает его через HTTP-протокол. Когда запрос достигает нужного веб-сервера ("железо"), сервер HTTP (ПО) принимает запрос, находит запрашиваемый документ (если нет, то сообщает об ошибке ) и отправляет обратно, также через HTTP.

Статический веб-сервер , или стек, состоит из компьютера ("железо") с сервером HTTP (ПО). Мы называем это « статикой» , потому что сервер посылает размещенные файлы в браузер « как есть» .

Динамический веб-сервер состоит из статического веб-сервера и дополнительного программного обеспечения, чаще всего сервера приложения и базы данных . Мы называем его « динамическим» , потому что сервер приложений изменяет исходные файлы перед отправкой в ваш браузер по HTTP.

Например, для получения итоговой страницы, которую вы просматриваете в браузере, сервер приложений может заполнить HTML-шаблон данными из базы данных. Такие сайты, как MDN или Википедия, состоят из тысяч веб-страниц, но они не являются реальными HTML документами - лишь несколько HTML-шаблонов и гигантские базы данных. Эта структура упрощает и ускоряет сопровождение веб-приложений и доставку контента.

Активное изучение

Активное изучение пока не доступно. .

Погружаемся глубже

Чтобы загрузить веб-страницу, как мы уже говорили, ваш браузер отправляет запрос к веб-серверу, который приступает к поиску запрашиваемого файла в своем собственном пространстве памяти. Найдя файл, сервер считывает его, обрабатывает как ему это необходимо, и отсылает в браузер. Давайте рассмотрим эти шаги более подробно.

Хостинг файлов

Прежде всего, веб-сервер должен содержать файлы веб-сайта, а именно все HTML-документы и связанные с ними ресурсы, включая изображения, CSS-стили, JavaScript-файлы, шрифты и видео.

Технически, вы можете разместить все эти файлы на своем компьютере, но гораздо удобнее хранить их на выделенном веб-сервере, который:

  • всегда запущен и работает
  • всегда подключен к Интернету
  • имеет неизменный IP адрес (не все провайдеры предоставляют статический IP-адрес для домашнего подключения)
  • обслуживается третьей, сторонней компанией

По всем этим причинам поиск хорошего хостинг-провайдера является ключевой частью создания вашего сайта. Рассмотрите многочисленные предложения компаний и выберите то, что соответствует вашим потребностям и бюджету (предложения варьируются от бесплатных до тысяч долларов в месяц). Вы можете найти подробности в

Как только вы решили проблему с хостингом, вам понадобится только загрузить свои файлы на ваш веб-сервер .

Связь по HTTP

Во-вторых, веб-сервер обеспечивает поддержку HTTP (англ. H ypert ext T ransfer P rotocol - гипертекстовый транспортный протокол ). Как следует из названия, HTTP указывает, как передавать гипертекст (т.е. связанные веб-документы) между двумя компьютерами.

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

Текстовый Все команды являются простым человекочитаемым текстом. Не сохраняет состояние Ни клиент, ни сервер не помнят о предыдущих соединениях. Например, опираясь только на HTTP, сервер не сможет вспомнить введенный вами пароль или на каком шаге транзакции вы находитесь. Для таких задач, вам потребуется сервер приложения. (Мы остановимся на этих технологиях в следующих статьях.)

HTTP задает строгие правила взаимодействия клиента и сервера. Мы рассмотрим сам протокол HTTP в технической статье немного позднее. Пока достаточно знать об этих правилах:

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

На веб-сервере HTTP-сервер отвечает за обработку входящих запросов и ответ на них.

  1. При получении запроса, HTTP-сервер сначала проверяет, существует ли ресурс по данному URL.
  2. Если это так, веб-сервер отправляет содержимое файла обратно в браузер. Если нет, сервер приложения генерирует необходимый ресурс.
  3. Если ничто из этого не возможно, веб-сервер возвращает сообщение об ошибке в браузер, чаще всего “404 Not Found”. (Это ошибка настолько распространена, что многие веб-дизайнеры тратят большое количество времени на разработку 404 страниц об ошибках .)

Статический и Динамический контент

Грубо говоря, сервер может отдавать статическое или динамическое содержимое.« Статическое» означает « отдается как есть» . Статические веб-сайты делаются проще всего, поэтому мы предлагаем вам сделать свой первый сайт статическим.

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

Возьмем для примера страницу, которую вы сейчас читаете. На веб-сервере, где она хостится, есть сервер приложения, который извлекает содержимое статьи из базы данных, форматирует его, добавляет в HTML-шаблоны и отправляет вам результат. В нашем случае, сервер приложения называется Kuma , написан он на языке программирования Python (используя фреймворк Django). Команда Mozilla создала Kuma для конкретных нужд MDN, но есть множество подобных приложений, построенных совершенно на других технологиях.

Существует так много серверов приложений, что довольно трудно предложить какой-то один. Некоторые серверы приложений заточены под определенные категории веб-сайтов, такие как блоги, вики-страницы или интернет-магазины; другие, называемые CMSs (системы управления контентом), более универсальны. Если вы создаете динамический сайт, потратьте немного времени на выбор инструмента, который соответствует вашим потребностям. Если вы не хотите изучать веб-программирование (хотя это увлекательно само по себе!), то вам не нужно создавать свой собственный сервер приложения. Это будет изобретением очередного велосипеда.

Следующие шаги

Теперь, когда вы познакомились с веб-серверами, вы можете:

  • прочитать насколько сложно делать что-либо в веб
  • узнать больше о разнообразии ПО, которое может пригодиться для создания веб-сайта
  • двигаться к практике: например, .