Apache
Last updated
Last updated
Apache ― это программное обеспечение с открытым исходным кодом, которое позволяет создавать веб-сервер.
Веб-сервер — это программа, без которой не может работать сайт в интернете.
Cайт — это набор файлов, например, HTML, CSS и JS. В каждом файле находится информация о картинках, тексте, кнопках, шрифтах и других элементах внешнего вида сайта. Все эти файлы находятся на физическом сервере, который имеет или арендует владелец сайта. Чтобы показать пользователю сайт, браузер должен связаться с сервером и получить эти файлы. Для связи с сервером браузер просит помощи у веб-сервера. Веб-сервер получает запрос от браузера, ищет ресурсы сайта и пересылает их ему. Только после этого браузер показывает контент пользователю.
Apache — это сокращение от «a patchy server», что переводится как сервер с патчами. Такое название появилось из-за происхождения программы. Все началось с разработки веб-сервера CERN HTTPd и NCSA HTTPd в Национальном центре суперкомпьютерных приложений (NCSA). Позднее к проекту подключились другие авторы, которые стали накладывать свои патчи. Патч ― это информация, кусок кода или программный модуль, который исправляет недочёты разработчиков. Их ещё называют заплатки. В 1995 году Брайан Белендорф объединил все патчи и создал команду разработчиков, которая выпустила первую версию Apache. Релиз Apache 1.0 прошёл в декабре 1995 года, но популярной эта программа стала только через год. Далее группа разработчиков расширялась, и они создали Apache для различных операционных систем (Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS).
В 1998 году появилась версия Apache 1.3, а в 1999 году была создана некоммерческая организация Apache Software Foundation. В марте 2000 года состоялась первая конференция для разработчиков ApacheCon. На ней была представлена версия Apache 2.0. Она отличалась новой модульной структурой. Это предоставило широкие возможности для функционала программы. На данный момент последней версией является Apache 2.4.
Apache состоит из ядра и модулей. Ядро выполняет основные функции: обработка конфигурационных файлов, работа с протоколом HTTP, система загрузки модулей. Оно может работать самостоятельно без модулей, но тогда функционал программы будет крайне ограничен. Ядро создала команда компании Apache Software Foundation без вмешательства сторонних разработчиков.
Как можно расширить функционал веб-сервера? Для этого выпускаются модули.
Модуль — это код, который расширяет функционал ядра. Они бывают статические и динамические. Статические добавляются к ядру ещё до загрузки программы, то есть пользователь выбирает программу определенной сборки. Динамические можно добавить на этапе загрузки программы при помощи встроенного модуля mod_so.
Модули отвечают за определенные возможности программы. Это может быть поддержка различных языков программирования, повышение безопасности, аутентификация пользователя, исправление ошибок и другие дополнительные функции.
Таким образом, Apache — это конструктор, который можно собрать так, как нужно пользователю. Для этой программы существует более 500 модулей.
Например, Multi-Processing Module (MPM) — модуль системного уровня. С его помощью можно оптимизировать Apache в условиях конкретной операционной системы.
Apache использует технологию мультипроцессинга. Каждое соединение с сервером помещается в отдельный поток и проходит все этапы операции шаг за шагом. Поток можно сравнить с тропинкой, по которой может идти только один человек. Второй человек может пройти по той же тропинке только тогда, когда первый окажется в конечной точке. У такой схемы работы есть один существенный минус — высокий риск перегрузки. Количество потоков ограничено, поэтому, если пользователей слишком много, работоспособность программы снижается. Новое соединение не начнется, пока предыдущая операция не завершится и не освободит поток.
Система конфигурации web-сервера Apache состоит из 3-х уровней текстовых файлов.
httpd.conf — основной конфигурационный файл. В нём содержатся директивы, которые управляют работой веб-сервера. Местоположение файла зависит от операционной системы. Узнать, где он находится, можно с помощью команды:
.htaccess — дополнительный конфигурационный файл. Файл (или файлы) .htaccess задают правила работы веб-сервера в каталоге, в котором он размещен, и в его дочерних каталогах, то есть он не затрагивает глобальные изменения работы сервиса. Настройки .htaccess приоритетны перед настройками в httpd.conf. При каждом обращении к веб-серверу Apache просматривает все каталоги на наличие .htaccess.
Виртуальный хост. Он используется для запуска нескольких доменов на одном IP-адресе. Такие хосты нужны пользователям, которые запускают несколько сайтов на одном виртуальном сервере. На один сервер можно добавить неограниченное количество виртуальных хостов.
Бесплатное программное обеспечение как для личного использования, так и для коммерческого;
гибкость программы. Открытый исходный код позволяет подстроить программу под специфические нужды пользователя;
поддержка многих языков программирования (PHP, Python, Ruby, Perl, ASP, Tcl), что дает доступ к различным серверным ПО;
удобная и надежная конфигурация системы. Приложение легко настраивается через текстовые конфигурационные файлы и может быстро масштабироваться;
Apache хорошо работает со многими системами управления контентом (CMS), такими как WordPress, Joomla, Drupal;
поддерживает технологии FastCGI и CGI;
может использовать СУБД для аутентификации пользователей;
большая база инструкций. Так как продукт уже давно на рынке, разработчики и пользователи уже написали множество инструкций под разные ситуации.
При высоком трафике снижается производительность. На высокопосещаемых сайтах может значительно снижаться скорость работы программы. Это связано с особенностью работы сервиса. Каждый пользовательский запрос обрабатывается отдельным потоком. Когда потоки заканчиваются, остальные операции ждут своей очереди. Если планируется большое количество посещений сайта, то лучше использовать Nginx;
много параметров настройки. Если допустить ошибку при настройке конфигурации, это может привести к появлению уязвимостей во всей системе;
риск заражения вирусом. Создавать модули могут не только добросовестные разработчики, но и злоумышленники. В модуль может быть внедрён вредоносный код. Устанавливать модули стоит только от проверенных разработчиков.
Теперь вы знаете, что такое веб-сервер Апаче и как он работает. Далее рассмотрим установку Apache в составе стека LAMP. О том, что это такое вы можете узнать на след. странице.