Введение в Apache...
Если Apache всегда казался вам черным ящиком? Пришло времяузнать, что происходит за кулисами!
Apache - самый популярный веб-сервер.
Задачавеб-сервера заключается в том, чтобы принимать запросы от клиентов и отправлятьответы на эти запросы. Веб-сервер получает URL-ссылку, переводит его в имя файла (для статическихзапросов) и отправляет этот файл через Интернет с локального диска или, например, переводит его на имя программы (для динамических запросов), выполняетее, а затем отправляет выходные данные этой программы обратно через Интернетзапрашивающей стороне. Еслипо какой-либо причине веб-сервер не смог обработать и завершить запрос, вместоэтого он отправит сообщение об ошибке. Слово, веб-сервер, может ссылаться на сам компьютер(компьютер / оборудование) или на программное обеспечение, которое получаетзапросы и отправляет ответы.
Apacheявляется самым популярным веб-сервером (после него идет Microsoft IIS). Можно назвать несколько причин его популярности:
- Его можно бесплатно скачать и установить.
- У негооткрытый исходный код: он доступен всем и каждому, что впринципе позволяет любому человеку (кому это по силам) настроить код,оптимизировать его и исправить ошибки и недочеты в безопасности. Пользователи могут добавлять новые функции и писать новые модули.
- Онподходит для любых потребностей: Apacheможно использовать для небольших сайтов с одной или двумя страницами или длябольших веб-сайтов с сотнями и тысячами страниц, который каждый месяцобслуживает миллионы постоянных посетителей. Онможет обслуживать как статический, так и динамический контент.
Что такое Apache?
Функциональность, которая вам не нужна или важна, может бытьлегко удалена.
HTTP-серверApache - это программное обеспечение (или программа), которое работает вфоновом режиме в соответствующей операционной системе, поддерживаетмногозадачность и предоставляет услуги для других приложений, которые к нейподключаются, например, клиентские веб-браузеры. Apacheбыл впервые разработан для работы с операционными системами Linux / Unix, нопозже был адаптирован для работы в других системах, включая Windows и Mac. Бинарный файл Apache, работающий под UNIX, называется HTTPd (сокращенно для HTTP-daemon), а под win32 называется Apache.exe.
УстановкаApache на Linux не требует много навыков программирования (хотя это не слишкомлегко). Его установка на платформе Windows прямолинейна, так как выможете запускать ее через графический интерфейс пользователя.
Оригинальноеядро Apache является довольно простым и содержит ограниченное количествофункций. Егосила скорее связана с дополнительной функциональностью, внедренной во многиемодули, которые написаны программистами и могут быть установлены для расширениявозможностей сервера. Чтобыдобавить новый модуль, все, что вам нужно сделать, это установить его иперезапустить сервер Apache. Функциональность,в которой вы не нуждаетесь или хотите, может быть легко удалена, что на самомделе считается хорошим моментом, так как она делает сервер маленьким и легким, он начинает работать быстрее, потребляет меньше системных ресурсов и памяти и делает серверменее подверженным уязвимостям в плане безопасности. СерверApache также поддерживает сторонние модули, некоторые из которых были добавленыв Apache 2 как постоянные функции. СерверApache очень легко интегрируется с другими приложениями с открытым исходнымкодом, такими как PHP и MySQL, что делает его еще более мощным, чем он есть.
Веб-сервер в его простейшей форме - это компьютер соспециальным программным обеспечением и подключением к Интернету, котороепозволяет ему взаимодействовать с другими устройствами.
Каждоеустройство, подключенное к сети, имеет IP-адрес, через который другие подключаются к нему и общаются с ним. ЭтотIP-адрес похож на обычный адрес, который вам нужен в реальной жизни, чтобыпозвонить или посетить кого-то. Если уних нет адреса, вы не знаете, как позвонить или связаться с ними. IP-адресаслужат точно для такой же цели. Если уустройства не было такого устройства, другие компьютеры в той же сети не зналибы, как его достичь.
СерверApache предлагает ряд услуг, которые клиенты могут использовать. Этислужбы предлагаются с использованием различных протоколов через разные порты и включаютв себя: протокол передачи гипертекста (HTTP), обычно через порт 80, простойпротокол передачи почты (SMTP), обычно через порт 25, службу доменных имен(DNS) для сопоставления доменных имен их соответствующие IP-адреса, обычночерез порт 53 и протокол передачи файлов (FTP) для загрузки и скачиванияфайлов, обычно через порт 21.
Как работает Apache
Основнаяроль Apache связана с коммуникацией по сетям и использует протокол TCP / IP(протокол управления передачей / интернет-протокол, который позволяетустройствам с IP-адресами в одной сети взаимодействовать друг с другом).
ПротоколTCP / IP представляет собой набор правил, которые определяют, как клиентыобрабатывают запросы и как реагируют серверы, и определяют, как данныепередаются, доставляются, принимаются и подтверждаются.
СерверApache настроен для работы через файлы конфигурации, в которые добавляютсядирективы для управления его поведением. Всвоем состоянии ожидания Apache прослушивает IP-адреса, указанные в его файлеконфигурации (HTTPd.conf). Всякий раз, когда он получает запрос, он анализируетзаголовки, применяет правила, указанные для него в файле Config, и принимаетмеры.
Но наодном сервере может размещаться множество веб-сайтов, а не только один, но для внешнегомира они кажутся отделенными друг от друга. Чтобы достичь этого, каждому из этих сайтов должно быть присвоено другое имя,даже если все они будут отображаться в конечном итоге на одном и том жекомпьютере. Этодостигается за счет использования так называемых виртуальных хостов.
ПосколькуIP-адреса трудно запомнить, мы, как посетители определенных сайтов, обычновводим соответствующие им имена доменов в поле URL-адреса в наших браузерах. Затембраузер подключается к DNS-серверу, который переводит имена доменов на ихIP-адреса. Затембраузер берет возвращаемый IP-адрес и подключается к нему. Браузертакже отправляет Host header с запросом, чтобы, если сервер размещает несколько сайтов, он будет знать, какой из них должен обслуживать.
Например, ввод текста на www.google.com в поле адреса вашегобраузера может отправить следующий запрос на сервер по этому IP-адресу:
GET / HTTP/1.1Host: www.google.com
Перваястрока содержит несколько фрагментов информации. Во-первых, существует метод (в данном случае это GET), URI,который указывает, какую страницу нужно извлечь или какую программу нужнозапустить (в этом случае это корневой каталог, обозначенный /), и, наконец,есть HTTP-версия (которая в данном случае является HTTP 1.1).
HTTP - это протокол без ответа.
HTTP -это протокол без ответа. Этонабор правил, регулирующих связь между клиентом и сервером. Клиент(обычно, но не обязательно веб-браузер) делает запрос, сервер отправляет ответ,а связь прекращается. Серверне ожидает дополнительной связи, как в случае с другими протоколами, которыеостаются в состоянии ожидания после завершения запроса.
Еслизапрос выполнен успешно, сервер возвращает код состояния 200 (что означает, чтостраница найдена), заголовки ответов вместе с запрошенными данными. .Заголовок ответа сервера Apache может выглядеть примерно так:
HTTP/1.1 200 OKDate: Sun, 10 Jun 2012 19:19:21 GMTServer: ApacheExpires: Wed, 11 Jan 1984 05:00:00 GMTCache-Control: no-cache, must-revalidate, max-age=0Pragma: no-cacheLast-Modified: Sun, 10 Jun 2012 19:19:21 GMTVary: Accept-Encoding,User-AgentContent-Type: text/html; charset=UTF-8Content-Length: 7560
Перваястрока в заголовке ответа - это строка состояния. Онсодержит версию HTTP и код состояния. Далее следует дата, а затем некоторая информация о хост-сервере и извлеченныхданных. Заголовок Content-Type позволяет клиенту узнать тип извлеченных данных, чтобы он знал, как его обрабатывать. Content-Lengthlets клиент знает размер тела ответа. Еслизапрос не пошел, клиент получит код ошибки и сообщение, например, следующийзаголовок ответа в случае ошибки страницы, не найденной:
HTTP/1.1 404 Not Found
Протокол TCP / IP
TCP / IP - это фактически два протокола, построенные одинповерх другого.
TCP / IP - это фактически два протокола, построенные одинповерх другого. IP-протоколотвечает за передачу переданных данных из одной точки в другую. Онпереносит данные между двумя точками, разбивает их на меньшие пакеты,присоединяет исходный и целевой адреса к каждому пакету и передает данные.
TCP обрабатывает часть, которая включает установлениесоединения между двумя сторонами, следя за тем, чтобы данные доходили до местаназначения, заботясь о любой потере данных и управлении восстановлением данных.
После получения сообщения сторона-получатель отправляет сообщение с подтверждением (ACK) отправителю, если все идет хорошо, сообщая ему о прибытии данных. Есличто-то пойдет не так, как, например, возникновение ситуации с потерей данных,адресат отправляет сообщение Not Acknowledged (NAK), сообщая об этомотправляющему узлу проблемы и информируя его о необходимости повторной передачипакета данных.
Какобсуждалось ранее, Apache предлагает множество сервисов, с которыми клиентымогут захотеть подключиться, чтобы использовать или извлекать выгоду. TCPуправляет каждой службой, так что к ней осуществляется доступ черезопределенный порт для различения различных служб. Такимобразом, он гарантирует, что любой данный интерфейс (или хост) может предлагатьнесколько сервисов. .Поэтому, когда клиент подключается к хосту, он передает номер порта вместе сIP-адресом. Браузерыиспользуют протокол HTTP, который по умолчанию использует порт 80, поэтому нетнеобходимости в дальнейшей спецификации.
Следующееизображение представляет собой быстрый снимок моего FTP-программногообеспечения (WinScp). Как вы видите, для FTP-сервера мне не только нужно указать IP-адрес (или ввести имя домена), но мне также необходимо указать номер порта,через который мой сервер предоставляет услугу. В случае FTP номер порта равен 21. Вслучае SFTP (защищенный FTP) номер порта равен 22.


В UNIX список сервисов, предлагаемых вместе со своими номерами портов, можно найти в файле / etc / services. Следующаякоманда отобразит содержимое файла:
more /etc/services
Нижеприведен снимок экрана с частью файла. Как выможете видеть, сервисы перечислены в первом столбце, за которым следует номерпорта, к которому нужно получить доступ, и имя протокола, используемогослужбой.

Под окнами файл называется Services, и его можно найти впапке C: \ WINNT \ system32 \ drivers \ etc \
Inetd
Чтобысохранить системные ресурсы, UNIX обрабатывает многие свои службы через internet daemon.
Чтобысохранить системные ресурсы, UNIX обрабатывает многие свои службы через internet-daemon (inetd), отличие от постоянно работающего daemon. Inetd - суперсервер, который слушает различные порты и обрабатывает запросы насоединение, получая их, инициируя новую копию соответствующего daemon (программы). Новая копия программы затем берет ее оттуда и работает с клиентом, а inted возвращается к прослушиванию портов сервера, ожидающих обработки новых клиентских запросов. Послетого, как запрос обработан и связь завершена, daemon завершает работу.
Общая структура
Какуже упоминалось ранее, Apache может быть установлен в различных операционныхсистемах. Независимо от используемой платформы, размещенный веб-сайт, как правило, имеет четыре основных каталога: htdocs, conf, logs, cgi-bin.
htdocs является каталогом документов веб-сервера Apache по умолчанию, то есть это общедоступный каталог, содержимое которого обычно доступно для клиентов,подключающихся через Интернет. Онсодержит все статические страницы и динамический контент, которые будутобслуживаться после получения HTTP-запроса для них. Посколькуфайлы и подкаталоги в htdocs доступны для общественности, правильная обработкаразрешений на файлы имеет большое значение, чтобы не поставить под угрозубезопасность и безопасность сервера.
conf - это каталог, в котором расположены все файлы конфигурации сервера. Файлыконфигурации в основном представляют собой текстовые файлы, в которыхдобавляются директивы для управления поведением и функциональностьювеб-сервера. Каждаядиректива обычно помещается в отдельную строку, а хеш (#) указываеткомментарий, поэтому строка, пройденная им, игнорируется.
logs - это каталог, в котором хранятся журналы сервера, журналы доступа Apache и журналы ошибок. HTTP-серверApache предоставляет множество различных механизмов для регистрации всего, чтопроисходит на нем, от первоначального запроса через процесс сопоставленияURL-адресов до окончательного разрешения соединения, включая любые ошибки,которые могли произойти в процессе. Вдополнение к этому сторонние модули могут предоставлять возможности веденияжурнала или вводить записи в существующие файлы журналов, а приложения, такиекак скрипты PHP или другие обработчики, могут отправлять сообщения в журналошибок сервера.
cgi-bin - это каталог, в котором хранятся скрипты CGI. CGI(Common Gateway Interface) определяет способ взаимодействия веб-сервера свнешними программами создания контента, которые часто называютсяCGI-программами или CGI-скриптами. Этопрограммы или сценарии оболочки, которые написаны для выполнения Apache отимени своих клиентов.
Важноотметить, что вышеупомянутые имена файлов и каталогов (а также местоположения)могут отличаться от одного сервера к другому в зависимости от установленногоаромата Apache и операционной системы, в которой он работает. Роли, однако, остаются прежними.
Вывод
... с более чем половиной сайтов в Интернете, работающих нанем.
Apacheбыл самым популярным веб-сервером в Интернете с 1996 года, связанный с более чемполовиной сайтов в Интернете, работающих на нем. Он сыграл ключевую роль в формировании и создании World WideWeb, чем он и является до сегодняшнего дня. Причиныего успеха очевидны и, как видно, он, вероятно, останется в лидерах, по крайнеймере, в течение довольно долгого времени. Наш сегодняшний туториал должен стать вводной сессией для этого мощного программного обеспечения, ия надеюсь, что мы помогли понять, насколько Apache отличный инструмент и какон работает.




