Apache

Apache
Apache HTTP Server
ASF-logo.svg
Логотип Apache
Тип

Веб-сервер

Разработчик

Apache Software Foundation

Написана на

C[1]

Операционная система

Кроссплатформенное программное обеспечение

Языки интерфейса

Английский

Последняя версия

2.4.3 (21 августа 2012)

Лицензия

Apache Software License;
отдельные части — GNU GPL

Сайт

httpd.apache.org

Apache HTTP-сервер (произносится /ə.ˈpæ.ʧi/, назван именем группы племён североамериканских индейцев апачей; кроме того, является сокращением от англ. a patchy server; среди русских пользователей общепринято искажённое апа́ч) — свободный веб-сервер.

Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

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

Содержание

История

Сервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию «a patchy» (англ. «заплаточка»), так как он устранял ошибки популярного тогда сервера Всемирной паутины NCSA HTTPd 1.3. В дальнейшем, с версии 2.х сервер был переписан заново и теперь не содержит кода NCSA, но имя осталось. На данный момент разработка ведётся в ветке 2.2, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности. На текущий момент последняя версия ветки 2.4 — 2.4.3 (21 августа 2012), для первой версии это 1.3.42.

Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты, среди которых СУБД Oracle и IBM WebSphere.

С апреля 1996 и до настоящего времени является самым популярным HTTP-сервером в Интернете. Статистика Netcraft показывает следующие данные об использовании Apache:

Архитектура

Ядро

Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов.

Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена.

Ядро Apache полностью написано на языке программирования C.

Система конфигурации

Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:

  • Конфигурация сервера (httpd.conf).
  • Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
  • Конфигурация уровня директории (.htaccess).

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

Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).

Помимо этого, параметры могут быть заданы через ключи командной строки.

Мультипроцессорные модели (MPM)

Для веб-сервера Apache существует множество моделей симметричной мультипроцессорности. Вот основные из них:

Название Разработчик Поддерживаемые OS Описание Назначение Статус
worker Apache Software Foundation Linux, FreeBSD Гибридная мультипроцессорно-мультипоточная модель. Сохраняя стабильность мультипроцессорных решений, она позволяет обслуживать большое число клиентов с минимальным использованием ресурсов. Среднезагруженные веб-серверы. Стабильный.
pre-fork Apache Software Foundation Linux, FreeBSD MPM, основанная на предварительном создании отдельных процессов, не использующая механизм threads. Большая безопасность и стабильность за счёт изоляции процессов друг от друга, сохранение совместимости со старыми библиотеками, не поддерживающими threads. Стабильный.
perchild Apache Software Foundation Linux Гибридная модель, с фиксированным количеством процессов. Высоконагруженные серверы, возможность запуска дочерних процессов используя другое имя пользователя для повышения безопасности. В разработке, нестабильный.
netware Apache Software Foundation Novell NetWare Мультипоточная модель, оптимизированная для работы в среде NetWare. Серверы Novell NetWare Стабильный.
winnt Apache Software Foundation Microsoft Windows Мультипоточная модель, созданная для операционной системы Microsoft Windows. Серверы под управлением Windows Server. Стабильный.
Apache-ITK Steinar H. Gunderson Linux, FreeBSD MPM, основанная на модели prefork. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. Хостинговые серверы, серверы, критичные к изоляции пользователей и учёту ресурсов. Стабильный.
peruser Sean Gabriel Heacock Linux, FreeBSD Модель, созданная на базе MPM perchild. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. Не использует потоки. Обеспечение повышенной безопасности, работа с библиотеками, не поддерживающими threads. Стабильная версия от 4 октября 2007 года, экспериментальная — от 10 сентября 2009 года.

Система модулей

Apache HTTP Server поддерживает модульность. Существует более 500 модулей[5], выполняющих различные функции. Часть из них разрабатывается командой 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 имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:

  • Ограничение доступа к определённым директориям или файлам.
  • Механизм авторизации пользователей для доступа к директории на основе HTTP-аутентификации (mod_auth_basic) и digest-аутентификации (mod_auth_digest).
  • Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей.
  • Запрет доступа к определённым типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных.
  • Существуют модули, реализующие авторизацию через СУБД или PAM.

В некоторых 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.


См. также

Примечания

  1. Programming Language Index  (англ.). Apache Software Foundation. Архивировано из первоисточника 30 мая 2012. Проверено 21 июня 2009.
  2. Web Server Survey — August 2007  (англ.). Netcraft (август 2007). Архивировано из первоисточника 30 мая 2012. Проверено 21 июня 2009.
  3. Web Server Survey — May 2009  (англ.). Netcraft (май 2009). Архивировано из первоисточника 30 мая 2012. Проверено 21 июня 2009.
  4. January 2011 Web Server Survey  (англ.). Архивировано из первоисточника 25 августа 2011. Проверено 14 января 2011.
  5. Apache Module Registry (англ.)
  6. Apache::ASP (англ.)
  7. Rivet — Webscripting for Tcl’ers

Литература

  • Скотт Хокинс. Администрирование веб-сервера Apache и руководство по электронной коммерции = Apache Web Server Administration and e-Commerce Handbook. — М.: Вильямс, 2001. — 336 с. — ISBN 0-13-089873-2

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Apache" в других словарях:

  • APACHE — Fermiers et pillards du sud ouest de l’Amérique du Nord, qui jouèrent un rôle important dans l’histoire de cette région pendant la seconde moitié du XIXe siècle. Menés par des chefs tels que Cochise, Mangas Coloradas, Geronimo et Victorio, les… …   Encyclopédie Universelle

  • Apache — (dt.: /aˈpaʧə, aˈpaxə/; engl.: /əˈpætʃi/) bezeichnet: Indianer Apachen, mehrere nordamerikanische Indianerstämme Apache Sprachen Apache Kid (Haskay bay nay natyl) (*1860 – †n.n.), einen Indianerscout unter General George Crook Orte Apache County …   Deutsch Wikipedia

  • APACHE II — ( Acute Physiology and Chronic Health Evaluation II ) is a severity of disease classification system (Knaus et al., 1985), one of several ICU scoring systems. After admission of a patient to an intensive care unit, an integer score from 0 to 71… …   Wikipedia

  • APACHE — (arme) Pour les articles homonymes, voir Apache (homonymie). Apache [[Image:|275px|center|]] Fonction Missile de croisière anti piste Constructeur …   Wikipédia en Français

  • Apache — Apache, OK U.S. town in Oklahoma Population (2000): 1616 Housing Units (2000): 712 Land area (2000): 2.022487 sq. miles (5.238218 sq. km) Water area (2000): 0.012180 sq. miles (0.031546 sq. km) Total area (2000): 2.034667 sq. miles (5.269764 sq.… …   StarDict's U.S. Gazetteer Places

  • Apache, OK — U.S. town in Oklahoma Population (2000): 1616 Housing Units (2000): 712 Land area (2000): 2.022487 sq. miles (5.238218 sq. km) Water area (2000): 0.012180 sq. miles (0.031546 sq. km) Total area (2000): 2.034667 sq. miles (5.269764 sq. km) FIPS… …   StarDict's U.S. Gazetteer Places

  • apache — [ə pash, əpäsh′; ] Fr [ ȧ pȧsh′] n. pl. apaches [ə pash′iz, ə päsh′iz; ] Fr [ ȧ pȧsh′] [Fr, lit., Apache: first used of Parisian thieves (1902) by Victor Moris, Fr journalist] a gangster or thug of Paris adj. designating a dance, performed… …   English World dictionary

  • Apache — 1745, from Amer.Sp. (1598), probably from Yavapai (a Yuman language) epache people. Sometimes derived from Zuni apachu enemy (Cf. F.W. Hodge, American Indians, 1907), but this seems to have been the Zuni name for the Navajo. French journalistic… …   Etymology dictionary

  • apache — adjetivo,sustantivo masculino y femenino 1. De un pueblo amerindio que vivía en las llanuras de Nuevo México y que actualmente habita en reservas: un caballo apache. Los apaches atacaron al ejército …   Diccionario Salamanca de la Lengua Española

  • Apache — [ə pach′ē] n. [AmSp, prob. < Yavapai (a Yuman language) ʾəpá·c̆ə, people ] 1. pl. Apaches or Apache a member of a group of North American Indian peoples of the SW U.S. and N Mexico 2. any of several Athabaskan languages and dialects spoken by… …   English World dictionary


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»