Функции web сервера описание. Что такое веб-сервер. Веб-сервер на домашнем компьютере: установка

Если Вы напечатаете в адресной строке вашего браузера 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.

Современный сайт представляет собой не просто набор HTML-документов, но и включает в себя множество технологий, в том числе серверных, таких как: SSI (Server-Side Includes, включения на стороне сервера), PHP (PHP: Hypertext Preprocessor, PHP: препроцессор гипертекста), базы данных и многое другое. Для ознакомления и изучения этих технологий ошибкой будет использовать посещаемый рабочий сайт в Интернете, поэтому имеет смысл установить необходимый комплект программ на локальный компьютер и тестировать все на нем.

Наиболее популярной связкой таких программ является веб-сервер Apache, язык программирования PHP, система управления базами данных MySQL, оболочка для администрирования баз данных PhpMyAdmin, шаблонизатор Smarty.

Указанные программы работают преимущественно под управлением Linux подобных систем, но имеются и версии под Windows. Основной плюс этой связки программ в универсальности. Сайт, созданный и проверенный на локальном компьютере под Windows, легко может быть перенесен на сервер с FreeBSD. К тому же этот набор поддерживает подавляющее большинство хостеров.

В дальнейшем будут рассмотрены программы для домашнего компьютера с операционной системой Windows.

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

Веб-сервер

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

PHP

Популярный язык программирования, используемый при разработке сайта.

MySQL

Система управления базами данных.

PhpMyAdmin

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

Smarty

Мощная система шаблонов для PHP. Использует свой собственный язык, который сочетает HTML и специальные теги Smarty. Шаблоны нужны для разделения программного кода и представления документа или по-другому, для отделения логики от содержания.

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

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

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

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

Функции веб сервера

Главная задача веб сервера принимать HTTP-запросы от пользователей, обрабатывать их, переводить в цифровой компьютерный код. Затем выдавать HTTP-ответы, преобразуя их из миллионов нолей и единичек в изображения, медиа-потоки, буквы, HTML страницы.

Любой веб сервер, для удобства его использования пользователями, должен иметь удобный веб-браузер. Он передает веб серверу запросы, преобразованные в URL-адреса интернет — ресурсов.

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

Для чего нужен веб сервер?

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

Самые известные веб серверы

Наиболее известными и распространенными веб серверами являются Microsoft IIS и Apache. Самым популярным из них является Apache. Его программное обеспечение используется более чем на 60% всех существующих. Во многом это стало возможным благодаря тому, что Apache является бесплатным. Разработчики постоянно анализируют ошибки своего продукта и устраняют их. Недостаток программы в том, что по большому счету она предназначена для профессиональных программистов и пользователей, поэтому обслуживать и настраивать ее достаточно тяжело.

Компания Microsoft, наоборот, свой веб сервер IIS стремится сделать доступным для понимания среднестатистического пользователя. Все его настройки можно провести без специалистов. Вполне возможно, что данная программа сможет догнать своего конкурента с индейским именем по числу пользователей.

И Apache и IIS отлично работают со многими операционными системами, например с Mac OS, Linux, различными модификациями Microsoft Windows и многими другими. Эти два веб сервера стабильны в работе, имеют хорошую скорость, к ним можно подключить дополнительные модули.

Цель лекции: дать определение понятию "веб-сервер" и сформировать представление о работе этого механизма.

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

После того, как пользователь обратился к определенному ресурсу по протоколу HTTP, клиент (обычно браузер) формирует HTTP-запрос к веб-серверу. Обычно указывается символическое имя сервера (например, "http://www.microsoft.com ") – в этом случае браузер предварительно преобразует это имя в IP-адрес при помощи сервисов DNS. После этого по протоколу HTTP на веб-сервер отправляется сформированное HTTP-сообщение. В этом сообщении браузер указывает какой ресурс необходимо загрузить и всю дополнительную информацию. Задача веб-сервера – прослушивать определенный TCP-порт (обычно порт 80) и принимать все входящие HTTP-сообщения. Если входящие данные не соответствуют формату сообщения HTTP, то такой запрос игнорируется, а клиенту возвращается сообщение об ошибке.

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


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

Нередко на одном и том же веб-сервере располагается множество независимых веб-сайтов. Более того, все эти веб-сайты используют один и тот же IP-адрес. Т.е. веб-сервер, имеющий только один IP-адрес может размещать внутри себя несколько веб-сайтов и при этом каждый такой веб-сайт будет ассоциирован с собственным адресом (например, на одном веб-сервере могут располагаться веб-сайты: "microsoft.com", "gotdotnet.ru", "techdays.ru" и т.д.). Каким образом это становится возможным? Такое явление называется виртуальным хостингом . Для того чтобы понять как это работает, давайте еще раз обратимся к процессу взаимодействия клиента и сервера. Браузер отправляет HTTP-запрос на IP-адрес веб-сервера, который ассоциирован с доменным именем. Разрешение IP-адреса происходит с помощью служб DNS. Однако, несмотря на то, что запрос отправляется, используя полученный IP-адрес, клиент указывает дополнительный HTTP-заголовок "Host ", в котором определяется оригинальное имя веб-сайта. Благодаря этой информации веб-сервер может разграничить доступ к нескольким веб-сайтам и при этом использовать один и тот же IP-адрес. Это очень важный момент, поскольку если бы для каждого доменного имени приходилось бы регистрировать отдельный IP-адрес, то адресное пространство протокола IP (v.4) очень быстро бы закончилось, а стоимость размещения веб-сайта в глобальной сети Интернет была бы намного выше. Для того, чтобы было более понятно давайте рассмотрим работу виртуального хостинга на примере. Предположим, имеется веб-сервер с IP-адресом 85.51.210.22. На этом сервере размещено несколько веб-сайтов: mysite1.com, mysite2.com, mysite3.com. Сервера DNS настроены таким образом, что каждое из этих доменных имен указывает на единственный IP-адрес 85.51.219.22. Давайте посмотрим, какие HTTP-запросы браузер будет генерировать при обращении к каждому из сайтов. При обращении к сайту "mysite1.com" HTTP-запрос может выглядеть следующим образом.


При обращении к сайту "mysite2.com" HTTP-запрос будет выглядеть иначе.


При анализе HTTP-запросов хорошо видно, что HTTP-заголовок "Host " отличается в каждом из запросов. Таким образом, становится понятно, что веб-сервер анализирует этот заголовок и отправляет клиенту содержимое соответствующего сайта. Схематически этот процесс можно представить следующим образом.


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

Как уже говорилось ранее, самый простой сценарий работы веб-сервера заключается в получении HTTP-запроса, его обработки, считывания нужного файла с жесткого диска, формирование HTTP-ответа и отправки его клиенту. Подобный сценарий является самым простым, однако, в реальности встречается все реже. Дело в том, что при подобном подходе, содержимое, которое передается клиенту, является статическим (т.е. не изменяется от запроса к запросу). Однако если требуется построить веб-приложение, то содержимое HTML-страницы, которое передается клиенту должно изменяться от различных внешних условий (параметров запроса, содержимого базы данных, времени обработки запроса, типа пользователя и т.д.). В этом случае требуется запускать внешний (по отношению к веб-серверу) программный код, реализующий логику веб-приложения. Этот код должен содержаться отдельно от программного кода самого веб-сервера, поскольку код приложения будет различным от одного приложения к другому, а веб-сервер будет один и тот же. Таким образом, программный код, обрабатывающий HTTP-запросы и генерирующий HTTP-ответы можно условно разделить на две части:

  • программный код, реализующий служебные функции по взаимодействию через протокол HTTP (программный код самого веб-сервера);
  • программный код, реализующий логику конкретного веб-приложения (бизнес-логика, обращение к СУБД и т.д.).

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


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

CGI (Common Gateway Interface) – наиболее ранний способ взаимодействия веб-сервера и веб-приложения. Основная идея, которая лежит в основе CGI заключается в том, что при поступлении очередного HTTP-запроса, веб-сервер инициирует создание нового процесса и передает ему все необходимые данные HTTP-запроса. После того, как этот процесс отработает, он завершается, передав при этом результат обратно веб-серверу. Поскольку веб-сервер и приложение – это разные процессы с точки зрения операционной системы, то для обмена информации между ними используются средства межпроцессного взаимодействия (IPC) – зачастую это переменные окружения, именованные каналы и т.д. Основным преимуществом CGI является то, что процесс веб-сервера и приложения изолированы друг от друга и в случае неполадок в веб-приложении, завершится с ошибкой именно процесс приложения, при этом процесс самого веб-сервера будет продолжать функционировать.

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

ISAPI (Internet Server API) – альтернативный способ взаимодействия веб-сервера и веб-приложения. В отличии от CGI, при взаимодействии в рамках интерфейса ISAPI, при поступлении очередного запроса, веб-сервер инициирует создание нового потока в рамках основного процесса, в котором работает веб-сервер. Поскольку с точки зрения операционной системы создание потока – это менее дорогостоящая операция, чем создание процесса, то такие приложения на практике оказываются более масштабируемыми. Кроме того, упрощается взаимодействие веб-сервера и веб-приложения, поскольку в этом случае используется единое адресное пространство в рамках операционной системы (поскольку весь код работает в одном и том же процессе). Однако, в случае серьезных неполадок в веб-приложении, которое взаимодействует с веб-сервером в рамках ISAPI, веб-сервер также потенциально подвергается риску быть завершенным. Поскольку веб-сервер и веб-приложение работают в одном и том же процессе, это действительно так. Поэтому разработчикам программного кода веб-сервера, поддерживающего ISAPI следует уделить этому вопросу особое внимание.

На сегодняшний день наиболее распространенным способом взаимодействия веб-сервера и веб-приложения является интерфейс ISAPI, поскольку обеспечивает наиболее оптимальные показатели по накладным расходам и масштабируемости. Однако, при работе нескольких веб-приложений на одном и том же веб-сервере, в этом случае существует потенциальная опасность влияния одного приложения на другое. Если говорить о компаниях, размещающих веб-приложения на своих серверах, то может случиться такая ситуация, что на одном и том же веб-сервере одновременно размещаются веб-сайты компаний-конкурентов. В этом случае теоретически одна из компаний может намеренно загрузить код, который будет завершать работу веб-сервера с ошибкой и, таким образом, все веб-сайты размещенные на этом веб-сервере окажутся недоступными. Для того, чтобы избежать подобной ситуации используется совмещенный подход – для каждого приложения может создаваться пул приложения (application pool), который представляет из себя отдельный процесс, в котором функционируют потоки для обработки входящих HTTP-запросов от пользователей. В этом случае, если какое-то из приложений будет содержать код, который завершает работу процесса с ошибкой, то будет завершаться процесс только этого приложения. Более того, каждый пул приложения содержит набор заранее созданных и подготовленных потоков. Это необходимо для того, чтобы не тратить время на создание потока в момент поступления входящего запроса. Такой набор заранее созданных потоков называется пулом потоков . Как правило, веб-сервер следит за каждым пулом приложения и если оно завершает свою работу с ошибкой, то веб-сервер перезапускает его процесс.

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

На сегодняшний день существует большое количество различных реализаций веб-серверов. Одним из наиболее популярных и универсальных веб-серверов является веб-сервер с открытым исходным кодом Apache. Он был создан для работе в среде Linux, также существует реализация для работы в рамках Windows. На его основе были построены другие различные вариации, например, Apache Tomcat для запуска веб-приложений на основе Java. Другим, наиболее серьезным продуктом в этой области является веб-сервер Microsoft Internet Information Services (IIS), который работает в рамках операционной системы Windows. Как правило, в рамках этого веб-сервера работают приложения на базе ASP.NET (и родственных технологий), а также приложения PHP и статические веб-сайты. При создании веб-приложений на базе ASP.NET мы будем использовать именно IIS 7. Наконец, существуют другие, менее масштабные проекты по разработке веб-серверов, например Nginx. Этот проект был разработан одним из разработчиков Rambler с целью оптимизации производительности этой поисковой системы. Впоследствии проект оказался настолько удачным, что нашел применение и для работы в других приложений. Обычно Nginx используют когда необходимо построить высоконагруженную инфраструктуру.

Краткие итоги

Веб-сервер – это программа, которая обрабатывает входящие HTTP-запросы и генерирует HTTP-ответы. В простейшем случае веб-сервер передает клиенту содержимое файлов, которые размещены на жестком диске сервера. Когда необходимо генерировать HTTP-ответы на основе какой-то программной логики, подключается внешний программный код. Для подключения внешнего программного кода используются интерфейсы CGI и ISAPI. В настоящий момент наиболее перспективным считается использование интерфейса ISAPI в силу более высокой масштабируемости. В рамках веб-сервера создается пул приложения (для каждого веб-приложения отдельный процесс в рамках ОС, в составе которого работает несколько потоков для обработки запросов). Существует большое количество реализаций веб-серверов, для приложений ASP.NET обычно используется веб-сервер Microsoft Internet Information Services (IIS).

Контрольные вопросы

  • Что такое веб-приложение?
  • Что такое браузер?
  • Опишите цикл обработки запроса к веб-приложению от клиента.
  • Для чего необходимы технологии разработки веб-приложений (такие как ASP.NET, PHP, Ruby On Rails и др.).
  • Как работает протокол HTTP и для чего он нужен?
  • Что такое заголовки HTTP-сообщения и для чего они нужны?
  • Что такое тело HTTP-сообщения?
  • Каким образом в HTTP-сообщении заголовки отделяются от тела сообщения?
  • Что такое метод HTTP-запроса?
  • Что такое статусный код HTTP-ответа?
  • Приведите примеры HTTP-заголовков HTTP-запроса и HTTP-ответа.
  • Чем отличаются симметричные алгоритмы шифрования от асимметричных?
  • Как работает защищенный протокол HTTPS?
  • Что такое веб-сервер?
  • На основе каких интерфейсов может взаимодействовать веб-сервер и веб-приложение?
  • Чем CGI отличается от ISAPI?
  • Что такое виртуальный хостинг?
  • Что такое пул приложения?
  • Назовите наиболее популярные реализации веб-серверов.
  • В рамках какого веб-сервера работают приложения ASP.NET?

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Подписаться

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


Больше видео на нашем канале - изучайте интернет-маркетинг с SEMANTICA

Любой компьютер можно сделать сервером. Для этого нужно установить специальную оболочку.

Требования к технической части определяются количеством размещенных ресурсов и требованиями к скорости. Чем они больше, тем мощнее должен быть компьютер.
Чтобы было понятно, приведем аналогию. Вы заходите в библиотеку и просите выдать вам книгу. Библиотекарь находит нужную и передает вам. Библиотека - это сервер, в ней хранятся все данные. Библиотекарь - это оболочка, которая приняла запрос и направила ответ. Вы - клиент.
Можно отправить библиотекаря за дополнительной информацией – аналогично щелчку по ссылке. Разница в том, что один и тот же ресурс в интернете могут одновременно читать неограниченное число пользователей.
Обслуживание клиента производится по схожему принципу: приходя за книгой, мы можем задать вопрос библиотекарю (поисковая система) или заглянуть в указатель (ЯндексКаталог). Это помогает найти нужную информацию.

Что делает веб-сервер

Его главная задача – хранение информации. Страницы, файлы, изображения, текстовый контент.
Задачи:

  • Получать запросы.
  • Запускать программы на специальных языках программирования (серверных).
  • Формировать веб страницы.
  • Отправлять их назад пользователю.
  • Защищать информацию.
  • Проводить идентификацию посетителей.
  • Вести журнал обращений.
  • Обслуживать запросы других типов: mailto, и т.д.

Чтобы понять, как работает веб-сервер, надо иметь представление о принципах передачи информации в сети. В основе лежат правила, называемые протоколами: любой URL начинается с указания типа (ftp, http://, https:// и пр.).
Hyper Text Transfer Protocol – протокол передачи . Страницы сайта всегда имеют вид гипертекстового документа. Это конечный результат работы любой серверной или клиентской программы.

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

Что нужно для веб-сервера

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

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

Когда решен вопрос с сервером, надо привязать к нему статический IP-адрес.

Сайт становится доступен на веб-сервере после того, как зарегистрировано доменное имя, выполнено преобразование адресов службой DNS - связывание IP-адреса (например, 111.111.111.111) и доменного имени (www.site.com).

Самые распространенные сервера

Apache

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

  • Постоянная поддержка разработчиков.
  • Модули для работы с серверными языками программирования PHP, Perl, Python, Ruby, ASP и т.д.
  • Открытый код. Доработкой под свои нужды занимаются разные программисты. Например, русскоязычное сообщество адаптирует его к русской кодировке.
  • . Изначально был создан под Unix, но сейчас поддерживается Windows, Mac OS, BSD, Linux, OS/2 и Novell NetWare.
  • Безопасность.

При инсталляции укажите имя вашего хоста, например, localhost. В папку htdocs, которая лежит внутри папки Apachex.x (где x.x – номер версии) скопируйте любую html-страницу. Или создайте ее в блокноте, введя любой текст и сохранив с расширением html.

Когда в папке появился файл, откройте браузер и наберите адрес: localhost://ИМЯ СТРАНИЦЫ.html. На экране появится ваш текст – страница открыта с сервера. Если вы увидели ошибку «Не удается получить доступ к сайту», значит не запущен Apache. Его значок находится в трее.
Нажмите на него и выберите «Play». После этого все заработает.

NGNIX

Доля работающих на нем активных площадок составляет 21,13% (исследования Netcraft). Его в основном используют крупные компании и профессиональные разработчики: Yandex, Mail.ru, Rambler и пр. NGNIX выдерживает огромную нагрузку посетителей, надежен, безопасен и продуман.
Распространяется свободно, но появились платные версии Plus, стоимость от 2,500 $.

IIS

Его известность обеспечена громким именем разработчика. Представляет собой набор веб служб и интегрирован с Windows. Родной платформой программирования является ASP.NET, но можно внедрить и альтернативу, например, РНР.

Для полноценного хостинга требуется установка серверной операционной системы от Microsoft – Windows Server. 6-я версия вообще не была предназначена для хостинга, полноценная поддержка началась в 7-й. Приобретается он автоматически вместе с операционной системой и зависит от ее характеристик.

Установочные пакеты

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

  • OpenServer. Портативная среда разработки, включающая множество баз данных, языков программирования и их версий, а также дополнительные сервисы. Например, интерфейс работы с БД PhpMyAdmin. На сегодняшний день это самый популярный инсталляционный набор. Работает даже с флешки. Бесплатно скачивается на низкой скорости. За 100 рублей скорость увеличивается в разы.
  • Xampp. Активно поддерживаемый пакет: Apache, Php, Perl, MariaDB и пр. Имеет панель управления. Скачивается бесплатно.
  • . Очень удобный набор всех нужных инструментов, включающий Apache, PHP, MySQL, PhpMyAdmin. К сожалению, последняя версия включает устаревшие дистрибутивы. В целом для обучения подойдут и они. Судя по форуму проект больше не поддерживается.