Apache HTTP Server
Apache HTTP-сервер — свободный веб-сервер. Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, macOS, Microsoft Windows, Novell NetWare, BeOS. Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. ИсторияСервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию «a patchy [server]» (с англ. — «в заплатках»), так как он устранял ошибки популярного тогда сервера NCSA HTTPd 1.3. В дальнейшем, с версии 2.х, сервер был переписан заново и теперь не содержит кода NCSA. На данный момент разработка ведётся в ветке 2.4, а в версиях 1.3, 2.0 и 2.2 производятся лишь исправления ошибок безопасности. На текущий момент последняя версия ветки 2.4 — 2.4.62 (17 июля 2024), для первой версии это 1.3.42. Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты, среди которых СУБД Oracle и IBM WebSphere. С апреля 1996 и до настоящего времени является самым популярным HTTP-сервером в Интернете. Статистика Netcraft показывает следующие данные об использовании Apache:
Apache имеет долю рынка в России до 17,45 %. Это самый популярный веб-сервер после nginx с долей рынка 64,89 %[11]. АрхитектураЯдроЯдро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов. Теоретически ядро apache может функционировать в чистом виде, без использования модулей. Однако функциональность такого решения крайне ограничена. Ядро Apache полностью написано на языке программирования C. Система конфигурацииСистема конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры. Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts). Помимо этого, параметры могут быть заданы через ключи командной строки. Многопроцессорные модели (MPM)Для веб-сервера Apache существует множество моделей симметричной многопроцессорности. Вот основные из них:
Система модулейApache HTTP Server поддерживает модульность. Существует более 500 модулей[12], выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками. Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла. В модулях реализуются такие вещи, как:
Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в виде модуля Apache. Механизм виртуальных хостовApache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое. Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK, позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и guid. Также существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста. Функциональные возможностиИнтеграция с другим ПО и языками программированияСуществует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки. К ним относятся:
Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, Lua, sh, Java. БезопасностьApache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:
В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache, используя различные uid и gid с соответствующими этим пользователям и группам пользователей. Также существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя. Для реализации шифрования данных, передающихся между клиентом и сервером, используется механизм SSL, реализованный через библиотеку OpenSSL. Для удостоверения подлинности веб-сервера используются сертификаты X.509. Существуют внешние средства обеспечения безопасности, например mod_security. ИнтернационализацияНачиная с версии 2.0 появилась возможность определения сервером локали пользователя. Сообщения об ошибках и событиях, посылаемые браузеру, теперь представлены на нескольких языках и используют SSI-технологию. Также, можно реализовать средствами сервера отображение различных страниц для пользователей с различными локалями. Apache поддерживает множество кодировок, в том числе Unicode, что позволяет использовать страницы, созданные в любых кодировках и на любых языках. Обработка событийАдминистратор может установить собственные страницы и обработчики для всех HTTP-ошибок и событий, таких как 404 (Not Found) или 403 (Forbidden). В том числе существует возможность запуска скриптов и отображения сообщений на разных языках. Server Side IncludesВ версиях 1.3 и старше был реализован механизм Server Side Includes, позволяющий динамически формировать HTML-документы на стороне сервера. Управлением SSI занимается модуль mod_include, включённый в базовую поставку Apache. См. также
Примечания
Литература
Ссылки
|
Portal di Ensiklopedia Dunia