Веб сервер и его функции. Как работают веб-сервера

26.06.2019

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

В предыдущей лекции мы разобрались с функционированием протокола 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?

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

Допустим, пользователь сидит за компьютером, просматривает WEB страницы, и тут ему звонит друг и говорит:

«Знаешь, я только что прочел классную статью! Введи этот URL и прочти сам. Это страница ».

Пользователь вводит продиктованный URL в и нажимает кнопку «Перейти». И о чудо, независимо от того, где находится этот URL, страница появляется на экране монитора.

Следующая схема на самом простом уровне дает представление о последовательности событий, в результате которых выбранная страница попадает на экран монитора:

Браузер пользователя осуществил соединение с WEB сервером, запросил нужную страницу и получил ее.

Что происходит незаметно для пользователя

  1. Браузер разделил URL на три части:
  • Протокол («http»).
  • Имя сервера («сайт»).
  • Имя файла («web server.htm»).
  • Браузер связался с сервером имен и перевел имя сервера « » в IP адрес, который используется для связи с серверной машиной.
  • Затем браузер, используя полученный IP адрес, связался с нужным сервером по порту 80 (О портах поговорим далее в этой статье).
  • В соответствии с протоколом HTTP браузер отправил на сервер запрос GET («ПОЛУЧИТЬ»), требующий отправки файла « /web server.htm». (Заметим, что браузер может отправить вместе с запросом GET куки - подробности смотрите в статье о том, как работают куки.)
  • Затем сервер отправил браузеру текст HTML для WEB страницы. (В заголовке страницы, отправляемой с сервера браузеру, могут также иметься куки).
  • Браузер считал теги HTML и отобразил страницу на экране монитора. Если вы не интересовались подробностями этого процесса раньше, то встретите в описании много новых терминов. Чтобы разобраться в деталях всего процесса, нужно знать, что такое IP адреса, порты, протоколы… Ниже будет подробно разъяснено значение этих терминов.
  • Итак, что же такое «Интернет»? - это миллионы компьютеров, соединенных в огромную компьютерную сеть. Благодаря сети, компьютеры могут поддерживать связь между собой. Домашний компьютер можно подключать к Интернету, используя модем телефонной линии, устройства, работающие по технологии DSL либо кабельный модем. Эти устройства устанавливают связь с поставщиком услуг Интернета (ISP). Компьютеры компании или университета обычно снабжаются платами сетевого интерфейса (network interface card, NIC), которые подключают их непосредственно к соответствующей локальной сети (LAN). Компания может подключить свою локальную сеть к оборудованию поставщика интернет-услуг, используя высокоскоростную телефонную линию, например, линию T1. По линии T1 можно передавать приблизительно 1.5 миллиона бит в секунду, в то время как по обычной линии с использованием модема можно передавать всего от 30 000 до 50 000 бит в секунду.

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

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

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

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

    Доменные имена и их покупка

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

    Имя сайт состоит из трех частей:

    • Имя хоста (www).
    • Имя домена (sd-company).
    • Имя домена верхнего уровня (ru).

    Регистраторы

    Доменными именами внутри домена .com занимается регистратор VeriSign. VeriSign также контролирует доменные имена .net . Другими доменами (такими как PRO, BIZ и ORG) управляют другие регистраторы (а именно RegistryPro, NeuLevel и Public Interest Registry). VeriSign создает имена верхнего уровня и обеспечивает уникальность всех имен в пределах домена верхнего уровня. Кроме того, VeriSign содержит контактную информацию каждого сайта и располагает базой данных о пользователях. Имя хоста создается компанией, предоставляющей для домена. Очень распространено имя хоста «www», однако в настоящее время во многих местах его либо не указывают, либо заменяют другим именем хоста, указывающим на определенное место на сайте. Например, в доменном имени энциклопедии Encarta компании Microsoft, encarta.msn.com, «encarta» обозначает имя хоста вместо www.

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

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

    Уникальный IP адрес

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

    Пользователь, машина которого работает под управлением ОС Windows, может получить большое количество информации об Интернет-соединении своего компьютера, включая текущий IP адрес и имя хоста, если воспользуется командой WINIPCFG.EXE (IPCONFIG.EXE для Windows 2000/XP). В машине под UNIX, чтобы узнать IP адрес машины, нужно напечатать в командной строке nslookup, а также имя этой машины, например, SD 1 - то есть, все вместе это будет выглядеть так: «nslookup sd1.su». Имя своей машины можно определить с помощью команды hostname. (Более подробные сведения о IP адресах можно получить из информации Комитета по цифровым адресам в Интернете).

    Машине, работающей в Интернете, для связи с сервером обычно нужен только IP адрес. Например, можно набрать в браузере URL 209.116.69.66 и связаться с машиной, на которой располагается WEB сервер сайта PCWork. Для связи с некоторыми серверами одного только IP адреса недостаточно, однако для большинства больших серверов этого вполне хватает - далее этот вопрос будет освещен более подробно.

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

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

    Почему нельзя?

    Вы уже, наверное знаете, чтобы поместить свой сайт в Интернет, нужно зарегистрировать доменное имя, купить хостинг, то есть дисковое пространство на каком-то компьютере с высокоскоростным подключением, на котором могут работать PHP скрипты. Чтобы сайты полноценно работали, должен быть установлен PHP и MySQL. Все это не доступно на обычном компьютере. Как могут запускаться файлы HTML и PHP на вашем компьютере?

    Обычный файл можно открыть с помощью Notepade++ или даже с блокнота. Там внутри что-то написать, сохранить и потом без особых проблем открыть данный файл на своем браузере и посмотреть, как бы этот файл выглядел на хостинге в Интернете. То есть мы уже видим рабочую HTML страницу. В ней мы можем создавать определенный дизайн, контент и наблюдать за проектом без подключения к Интернету. Все, по сути, у нас уже есть. Если мы захотим запустить PHP файл с помощью браузера, то у нас ничего не получится, так как PHP скрипты в операционной системе Windows без дополнительного программного обеспечения работать не будут.

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

    Что такое сервер?

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

    Для этого нам понадобятся специальные программы. Но какие лучше подойдут и какие трудности они могут вызывать при дальнейшей работе? Для ознакомления, ниже я привожу самые лучшие веб сервера по популярности во всем мире. Однако это не значит, что их нужно сразу устанавливать. Я потом объясню почему!

    Список лучших веб серверов

    В настоящее время на рынке присутствуют несколько решений от самых разных производителей:

    • (сайт — apache.org ) — это самый распространенный и популярный бесплатный сервер в сети. Он является более надежным и гибким. Сервер не требователен к ресурсам процессора и способен обслуживать множество сайтов. Приложение доступно для широкого спектра операционных систем, включая Unix, Linux, Solaris, Mac OS X, Microsoft Windows и другие. На данный момент использование Apache составляет 71 %. Однако, это сложная программа, с которой не каждый новичок сможет справится.

    • (сайт — www.iis.net ) — еще один надежный сервер от компании Microsoft. Он жестко укрепился на втором месте с 14 % использования в сети. После установки программы, будут поддерживаться только два языка программирования (VBScript и JScript ). Однако, можно открыть дополнительные возможности, установив для этого нужные расширения. С установкой таких модулей, функциональность данного сервера значительно повышается.

    • NGINX (сайт — nginx.org/ru/ ) — это наиболее популярный веб-сервер в российском Интернете. По сравнению с двумя первыми, он является наиболее простым и не обладает лишними функциями. Также его хвалят за надежность и высокую скорость работы. Разработчиком данного продукта является наш соотечественник — Игорь Сысоев. В 2004 году он выпустил первую версию nginx. Сейчас этот программный продукт замыкает тройку самых популярных веб серверов в мире. Его использование составляет около 6,5 %.

    • (сайт — litespeedtech.com ) — этот веб сервер не обладает широкими возможностями, но зато у него очень большая скорость работы. По быстродействию он сильнее популярного Apache в 9 раз. Немало внимания уделено и безопасности (своя защита от перегрузки системы, строгая проверка http-запросов, анти-ddos и многое другое ). LiteSpeed доступен для Solaris, Linux, FreeBSD и Mac OS X. Доля использования этой программы составляет 1,5 %.

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

    Особенности локального сервера

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

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

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

    Обзор популярных локальных серверов

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

    • (сайт — denwer.ru ) — это бесплатный отечественный сервер, который предназначен для работы с сайтами, веб-приложениями или Интернет страницами. Его разработчиками являются Дмитрий Котеров и Антон Сущев. Данный продукт содержит необходимые дистрибутивы для упрощенной работы. Например, сюда входит веб-сервер Apache с различной поддержкой, панель phpMyAdmin и MySQL для работы с базами данных и другие программы. Также можно работать со съемной флешки. К сожалению Denwer поддерживает только операционную систему Windows.

    • XAMPP (сайт — www.apachefriends.org/en/xampp.html ) — специальная сборка сервера от друзей Apache. Необходимые дистрибутивы позволяют запустить на нем полноценный веб сервер. Данная программа распространяется бесплатно и поддерживает работу в системе Windows, Solaris, Mac OS X и Linux. Также есть следующие преимущества: сервер популярен своим очень простым пользовательским интерфейсом, что делает его любимым для многих начинающих; наблюдается многократные появления обновленных версий; процесс обновления проходит очень просто и удобно для пользователя; присутствуют дополнительные модули. Скачать нужную версию вы также можете с другого официального сайта — sourceforge.net/projects/xampp/files .

    • (сайт — www.appservnetwork.com ) — отличный сервер от тайского производителя, концепцией которого является легкая установка и настройка всех дистрибутивов за 1 минуту. Первый релиз сборки состоялся в 2001 году и с тех пор количество пользователей все время растет. AppServ очень прост в установке, он работает стабильно и не хуже официальных и отдельных релизов, а его надежная производительность дает возможность создать полноценный веб сервер на вашем компьютере.
    • (сайт — vertrigo.sourceforge.net ) — еще один неплохой и простенький в установке локальный сервер. Сборка очень гибкая, имеет хорошую производительность и занимает мало места на диске. К сожалению, пока работает только на ОС Windows.
    • Zend Server Community Edition (сайт — www.zend.com ) — бесплатный сервер от компании Zend, предназначен для работы с веб-приложениями. Содержит все необходимые компоненты для быстрого развертывания локального сервера на своем компьютере.

    • (сайт — open-server.ru ) — это отечественный портативный локальный сервер, который обладает высоким функционалом по разработке и созданию сайтов и других веб проектов. Имеет мультиязычный интерфейс (в том числе и русский ) и предназначен для работы в ОС Windows. Поддерживается работа со съемного носителя. Данный сервер очень хорош и служит неплохой альтернативой Денверу.

    • (сайт — wampserver.com ) — еще одна неплохая сборка с русским интерфейсом (есть также и другие языки ). Имеется простое и понятное меню, а удобная установка и настройка сборки не вызывает особых трудностей. Настройку можно производить не затрагивая файлы конфигураций, что очень полезно начинающим веб-мастерам. Сервер распространяется бесплатно и работает только на платформе Windows. К сожалению, портативной версии пока нет.
    • (сайт — easyphp.org ) — очень простенькая сборка с поддержкой русского языка. Сборка ни чем не примечательна, не имеет огромного функционала и в основном предназначена для тестирования небольших проектов. Есть поддержка работы с портативных носителей. Данный сервер послужит неплохой заменой Денверу.

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

    (521 оценок, среднее: 5,00 из 5)

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

    Подписаться

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


    Больше видео на нашем канале - изучайте интернет-маркетинг с 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. К сожалению, последняя версия включает устаревшие дистрибутивы. В целом для обучения подойдут и они. Судя по форуму проект больше не поддерживается.

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

    Помню, давно я думал, что Интернет сосредоточен в одном месте, представлял что-то типа лаборатории, где расположено большое количество аппаратуры, поддерживающей работу всего этого. Тогда я не мог оценить масштабы Глобальной сети и сложности ее структуры. В действительности же, Интернет - это абстрактное понятие, ресурсы Интернета разбросаны по оборудованию на всем земном шаре. Для связи этого оборудования между собой на огромных расстояниях придумали специальные алгоритмы и стандарты, в частности, протокол TCP/IP , на котором в настоящее время функционирует наш Интернет. Согласно этому стандарту, каждый компьютер, находящийся в Глобальной сети, имеет свой уникальный адрес - IP-адрес . IP-адрес представляет собой последовательность четырех чисел в диапазоне от 0 до 255, разделенных между собой точками (например, 92.166.31.18). Один компьютер может связаться с другим компьютером в сети, зная его IP-адрес. Но сказать "компьютер связался с компьютером" не совсем верно, так как связываются не сами компьютеры, а сетевые службы (программы, если хотите), выполняющиеся на них. Допустим, вы отправляете электронную почту дедушке, при этом ваша почтовая программа связывается с почтовым сервером для отправки письма.

    На компьютере одновременно может работать несколько сетевых программ, поэтому помимо IP-адреса для связи протоколом TCP/IP предусмотрено дополнительно такое понятие как порт . Порт - это число в диапазоне от 1 до 65536. Таким образом, минимальным условием для связи одной сетевой программы с другой является наличие у первой IP-адреса и номера порта второй. Совокупность IP-адреса и порта принято записывать через двоеточие (например, 192.168.35.2:443).

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

    Программа, ожидающая подключение, называется сервером . Серверу при запуске указывается номер порта, часто говорят: "сервер слушает порт". На компьютере не может быть запущено более одного сервера с одинаковым номером порта (иначе невозможно определить, к какому из серверов подключаться). Программа, устанавливающая соединение с сервером, называется клиентом . На клиентов не распространяется подобное ограничение (например, можно запустить два джаббер-клиента). Также к серверу могут подключаться несколько клиентов с разных компьютеров, если это поддерживает сам сервер.

    Теперь давайте на основе этих поверхностных знаний определим, что такое веб-сервер . Во-первых, судя по названию, это сетевая программа, ожидающая и принимающая соединения (сервер). По умолчанию, веб-сервер "слушает" порт под номером 80. Веб-сервер поддерживает работу одновременно с несколькими клиентами (несколько человек одновременно могут просматривать сайт). Клиентом для веб-сервера выступает веб-браузер (Internet Explorer, Opera и так далее).

    Таким образом, сайт функционирует за счет веб-сервера, который отправляет странички этого сайта клиентам, запрашивающих их у него. Для того, чтобы запросить страницу необходимо знать IP-адрес компьютера, на котором запущен веб-сервер с нужным нам сайтом. Но запоминать IP-адреса неудобно, поэтому придумали доменные имена, представляющие собой некую текстовую сущность (например, yandex.ru). Очевидно, что доменные имена более понятны и более легки в запоминании. Однако, протокол TCP/IP не в состоянии найти требуемый компьютер по доменному имени, поэтому его необходимо преобразовать в IP-адрес. Для этого служат DNS-сервера, на которых расположены таблицы соответствий доменных имен и IP-адресов. Допустим, когда мы вводим в адресной строке браузера домен yandex.ru, в первую очередь посылается запрос в DNS-сервер для определения IP-адреса данного домена. Когда адрес определен, браузер пытается связаться с веб-сервером по этому адресу и по стандартному порту под номером 80. Если соединение с веб-сервером установлено, браузер запрашивает у веб-сервера требуемую страницу сайта.

    В принципе, веб-сервер можно настроить на работу и на другом порту, в таком случае в браузере при запросе страницы необходимо его указывать через двоеточие после доменного имени (например, site.ru:3182).

    Каким же образом происходит запрос страницы сайта у веб-сервера браузером? Понятное дело, что для взаимодействия веб-сервера и браузера необходим "общий язык", то есть некий стандарт, по которому формируются запросы и ответы. Этим стандартом служит протокол HTTP (HyperText Transfer Protocol). Этот протокол довольно прост, так как соответствует схеме "запрос-ответ". Говоря другими словами, на каждый HTTP-запрос веб-браузера веб-сервер отвечает HTTP-ответом. По своей инициативе веб-сервер HTTP-пакеты не шлет (к тому же, зачастую, после завершения операции "запрос-ответ" сервер разрывает соединение с клиентом).

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

    GET / HTTP/1.1 Host: ya.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive

    В HTTP-запросе отсутствует блок данных (так как отсутствует пустая строка, которая бы отделяла заголовки от данных). Давайте рассмотрим представляющие для нас в данный момент интерес строки этого запроса. Во-первых, самая первая строка:

    GET / HTTP/1.1

    "GET" - тип запроса. Два наиболее распространенных типа запросов - это GET и POST. О них мы поговорим в одной из следующих статей или уроков. "/" указывает на то, что запрашивается главная страница сайта. В противном случае здесь указывается путь и имя запрашиваемой страницы или файла. "HTTP/1.1" - версия протокола HTTP.

    Host: ya.ru

    Параметр Host содержит домен сайта, к которому происходит обращение.

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6

    User-Agent содержит информацию о клиенте: тип браузера, операционной системы и так далее. Остальные параметры в данный момент нас особо не интересуют.

    На данный HTTP-запрос веб-сервер ответил следующим HTTP-ответом:

    HTTP/1.1 200 OK Server: nginx Date: Thu, 25 Feb 2010 12:31:25 GMT Content-Type: text/html; charset=utf-8 Last-Modified: Tue, 12 Jan 2010 15:29:06 GMT Transfer-Encoding: chunked Connection: keep-alive Content-Encoding: gzip Яндекс ...

    Пустая строка указывает на наличие блока данных (тела пакета). Как и в случае с HTTP-запросом рассмотрим наиболее важные строки полученного ответа. В первой строке указывается версия протокола HTTP (HTTP/1.1) и код результата. Код результата 200 означает, что запрос выполнен успешно. В описании протокола HTTP расписаны все коды результатов. С некоторыми из них, например, 403 и 404, мы познакомимся в будущем.

    Server: nginx

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

    Content-Type: text/html; charset=utf-8

    Content-Type содержит тип переданных данных и, если необходимо, их кодировку (charset). Также в заголовках часто содержится параметр Content-Length, содержащий размер переданных сервером данных в байтах. В блоке тела пакета содержится код запрошенной страницы.

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