PHPbb 2 RUS Apache Conf v 06
июля 09

Apache HTTP-сервер

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

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

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

С апреля 1996 и до настоящего времени является самым популярным HTTP-сервером в Интернете. По статистике Netcraft, в августе 2007 года он работал на 51 % всех веб-серверов[4], в мае 2009 года — на 46 %[5].

По-русски часто произносят апач, хотя даже русское слово «апачи» в ед. числе остаётся «апачи».

Архитектура

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

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

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

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

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

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

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

Система модулей
Apache HTTP Server поддерживает модульность. Существует более 400 модулей, выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками.

Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.

В модулях реализуются такие вещи, как:

Поддержка языков программирования.
Добавление функционала.
Исправление ошибок или модификация основных функций.
Усиление безопасности.
Часть web-приложений, например панели управленя ISPmanager и VDSmanager реализованы в виде модуля Apache.

Механизм виртуальных хостов
Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP адресе множество сайтов доменных имен, отображая для каждого из них собственное содержимое.

Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и gid.

Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера CPU, RAM, трафик для каждого виртуального хоста.

Функциональные возможности

Интеграция с другим ПО и языками программирования
Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки.

К ним относятся:

PHP mod_php.
Python mod_python.
Ruby apache-ruby.
Perl mod_perl.
ASP apache-asp.
Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, sh, Perl и Java.

Безопасность
Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными явлются:

Ограничение доступа к определенным директориям или файлам.
Механизм авторизации пользователей для доступа к директории по методу HTTP-Авторизации mod_auth_basic и digest-авторизации mod_auth_digest.
Ограничение доступа к опеределнным директориям или всему серверу, основанное на IP адресах пользователей.
Запрет доступа к определенным типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных.
Существуют модули, реализующие авторизацию через СУБД или PAM.
В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей.

Также, существует механизм suexec, используемый для запуска скрипов и CGI-приложений с правами и идентификационными данными пользователя.

Для реализации шифрования данных, передающихся между клиентом и сервером используется механизм SSL, реалзованный через библиотеку OpenSSL. Для удостоверения подлинности web-сервера используются сертификаты X.509.

Существуют внешние средства обеспечения безопасности, например mod_security.

Интернационализация
Начиная с версии 2.0 появилась возможность определения сервером локали пользователя. Сообщения об ошибках и событиях, посылаемые браузеру, теперь представлены на нескольких языках и используют SSI технологию.

Также, можно реализовать средствами сервера отображение различных страниц для пользователей с различными локалями. Apache поддерживает множество кодировок, в том числе Unicode, что позволяет использовать страницы, созданные в любых кодировках и на любых языках.

Обработка событий
Администратор может установить собственные страницы и обработчики для всех HTTP ошибок и событий, таких как 404 Not Found или 403 Forrbiden. В том числе существует возможность запуска скриптов и отображения сообщений на разных языках

4 комментария

Оставить комментарий

*
Для того, чтобы убедиться что Вы человек, а не спам-бот, введите пожалуйста ответ.
Анти-спам выражение.



  1.  4 avatar mike255

    спасибо!
    хорошая статья!
    а можно еще поподробнее о конфигурационных файлах?

  2.  3 avatar Hoot

    ссылка рабоча просто ведет на другой блог который сейчас недоступен. тут баевцы обещают завтра все блоги запустить

  3.  2 Дёня

    А за старания спасибо!!!!

  4.  1 Дёня

    Блин не качает поправь ссылочку!!!