• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

FREEHOST.WIKI

Apache – что это?

Статья также доступна на украинском (перейти к просмотру).

Apache - это кроссплатформенное ПО для серверов с открытыми исходными кодами, распространяемое в виде свободного софта (ограничения на скачивание и копирование отсутствуют). Первая версия веб-сервера была выпущена в 1995 году. С апреля 1996 года и до текущего момента официально считается самым востребованным веб-сервером в глобальной сети. Около 46% всех веб-проектов используют данное программное обеспечение.

Изначально разрабатывался как улучшенная версия NCSA HTTPd 1.3 (популярное серверное ПО до появления Apache). Проект продолжает свое развитие благодаря работе сообщества независимых разработчиков. Выбор в пользу Apache обусловлен его преимуществами: надежность, простота администрирования, модульная структура, гибкость и масштабируемость. Официальный сайт проекта httpd.apache.org

Apache также не лишен недостатков:

  • Большое число конфигурационных файлов и доступных параметров (обуславливает снижение уровня безопасности);
  • Падение производительности в случае резкого роста трафика.

Содержание

Для чего нужен Apache?

Теперь, когда известно, что такое веб-сервер Apache, рассмотрим особенности его использования. Данный тип ПО применяется для обработки запросов к контенту, содержащемуся на серверных ПК. Распространенный пример использования Apache – обработка запросов посетителей сайтов. Клиенты используют веб-браузеры (клиентское ПО) для перехода на веб-сайт и просмотра страниц. При обращении к контенту (переход по ссылке, навигация по меню веб-сервиса и прочее) браузер генерирует запрос и передает его на сервер. Apache обрабатывает каждый запрос, выполняет поиск нужного контента, формирует ответ в виде HTML-кода, который поступает на сторону клиента (в веб-браузер). Последний преобразует полученный код в удобочитаемый формат веб-страниц.

Структура веб сервера Apache

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

  • httpd.conf – настройка параметров уровня сервера;
  • extra/httpd-vhosts.conf – настройка параметров виртуального хоста;
  • .htaccess – настройка параметров уровня каталога. Данные файлы обеспечивают децентрализацию конфигурирования веб-сервера. Благодаря интерпретации на лету возникает возможность внесения изменений в настройки сервера без его перезагрузки. Кроме того, .htaccess-файлы предоставляют контроль над определенными функциями веб-приложений для некоторых категорий пользователей, не обладающих административными правами.

Внесение изменений в настройки модулей возможно следующими способами:

  • Путем модификации собственных конфигурационных файлов модулей;
  • Изменение параметров конфигурационных файлов ОС;
  • Ввод параметров с использованием командной строки.

Модули мультипроцессинга

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

  • mpm_prefork – генерирует однопотоковый процесс для каждого поступающего запроса.
  • mpm_worker – генерирует мультипотоковые процессы, каждый из которых способен обрабатывать лишь одно соединение. Характеризуется более высокой степенью масштабируемости.
  • mpm_event – аналог предыдущего модуля, адаптированный для работы с соединениями типа keep-alive.

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

Дополнительные модули

Функционал веб-сервера Apache расширяют модули, которых существует свыше 500 (часть создана разработчиками Apache, остальные – сторонними программистами). Несмотря на возможность создания сборки (веб-сервер Apache – это ядро + модули) в момент компиляции ПО, реализована система динамического подключения модулей.

Разработка модулей осуществляется для следующих целей:

  • Добавление поддержки определенных языков программирования;
  • Расширение имеющегося функционала;
  • Внесение изменений в основные функции, устранение багов;
  • Улучшение системы безопасности.

Для интеграции с различными ЯП используются модули CGI и FastCGI. Для наиболее востребованных языков программирования созданы отдельные модули (например, apache_asp, mod_php и прочие).

Управление URL и другие функции модуля mod_rewrite

Данный модуль – удобный инструмент для фильтрации и модификации URL. Его можно использовать для скрытия некоторых частей адреса сайта, например, расширения файла «.php» (актуально для сайтов, созданных на языке PHP). Для управления работой модуля вводят директивы (правила) в .htaccess-файлах.

Например, для замены расширения файлов «.aspx» на «.php» необходимо ввести следующее:

RewriteEngine On

RewriteBase /

RewriteRule ^(.*)\.php$ $1.aspx {QSA,L]

Как видно, для создания правил используются регулярные выражения (например, символ «^» характеризует начало строки, запись «(.*)» - любое количество любых символов). Представленное выше правило позволяет скрыть факт того, что сайт был создан с использованием технологии ASP.NET. Фактическая смена имени файла в файловой системе не выполняется. Apache интерпретирует запись в режиме реального времени, выполняет обратную замену «.php» на «.aspx» и вызывает нужный файл скрипта.

Прочие возможности модуля:

  • Первичная фильтрация для повышения безопасности;
  • Реализация алгоритма кэширования данных в файловой системе путем перенаправления запросов;
  • Установка ограничений на скачивание определенных файлов.

Виртуальные хосты

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

  • Независимая конфигурация модулей;
  • Ограничение доступа к определенному контенту;
  • Отдельный запуск httpd-процесса для каждого виртуального хостинга с предоставлением собственных guid и uid;
  • Установка ограничений на использование ресурсов системы, трафик.

Зачастую, при помощи модуля виртуал хостов реализуется услугу веб хостинга

Совместная работа Apache с Nginx

Apache – это не единственный популярный веб-сервер. Главным конкурентом является NginX, представленный в 2004 году в виде ПО для решения c10k-проблемы (существовавшая на тот момент сложность в обработке большого числа одновременно поступающих запросов).

Nginx – веб-сервер с событийно-ориентированной архитектурой, обрабатывающий каждый новый запрос в одном потоке. Он демонстрирует высокую производительность (значительно превосходит Apache) при работе со статическим контентом. Эта особенность обуславливает совместное использование двух видов ПО (связка NginX + Apache). Первый выполняет роль фильтра запросов, обрабатывая запросы на статический контент самостоятельно и перенаправляя запросы других типов на Apache.

Выбрать виртуальный хостинг

ДРУГИЕ СТАТЬИ ПО ТЕМЕ

Спасибо, что выбираете FREEhost.UA