Что такое Apache
Читайте нашу статью, если хотите узнать, что такое Apache, как работает эта программа и зачем вообще нужны веб-серверы.
Мы привыкли к тому, что любую информацию можно быстро найти через интернет. Пользователь вводит свой запрос в поисковую строку браузера и практически мгновенно попадает на нужный сайт. Однако мало кто догадывается, насколько сложный путь должен пройти запрос, прежде чем пользователь получит на него ответ. Одним из этапов на этом пути является обращение к веб-серверу — без него не получится найти ответ ни на один из запросов.
Что такое веб-сервер
Веб-сервер — это сервер, который выступает промежуточным звеном между браузером и физическим сервером.
Сначала поисковик принимает запрос пользователя и передает его веб-серверу. Веб-сервер анализирует запрос и ищет в сети тот сервер, на котором хранится искомое. Но зачем вообще веб-серверу искать другой сервер? Дело в том, что каждый сайт, а точнее файлы из которых он состоит (HTML, JS, CSS) хранятся на одном из серверов в сети. Чтобы пользователь мог попасть на сайт, необходимо найти и передать ему эти файлы. Поэтому веб-сервер находит нужный сервер и делает запрос на файлы. Сервер принимает запрос, находит файлы и отдает их веб-серверу. После этого веб-сервер передает ответ браузеру, а он, в свою очередь, пользователю. В реальности этот сложный процесс занимает доли секунды.
Для создания web-серверов используются специальные технологии, например, Nginx или Apache.
Что такое Apache сервер
Apache — это свободное программное обеспечение, с помощью которого можно создать веб-сервер. Несмотря на то, что Apache чаще всего называют сервером (более того, его официальное название — Apache HTTP Server) — это всё-таки программа, которую устанавливают на сервер, чтобы добиться определённых результатов. Русскоязычная аудитория нередко называет серверы с такими программами коротко — Апач.
Для чего нужен Apache сервер:
- чтобы открывать динамические PHP-страницы,
- для распределения поступающей на сервер нагрузки,
- для обеспечения отказоустойчивости сервера,
- чтобы потренироваться в настройке сервера и запуске PHP-скриптов.
Apache является кроссплатформенным ПО и поддерживает такие операционные системы, как Linux, BSD, MacOS, Microsoft, BeOS и другие.
История создания
Технология Apache является одной из самых старых, но при этом надежных. «А patchy server» (сокращенно Apache) переводится как “сервер с патчами”. Это название было дано программе неслучайно. Продукт Apache возник как доработанная версия другого HTTP-клиента от национального центра суперкомпьютерных приложений (NCSA). Дело в том, что ещё в 1990-е годы в NCSA велась разработка двух продуктов — CERN HTTPd и NCSA HTTPd. Постепенно к проекту привлекались новые специалисты, каждый из которых привносил в работу свои исправления и улучшения — патчи.
Патч (заплатка) — это кусок кода, который следит за недочетами общего кода разработчика и в автоматическом режиме исправляет их. Именно патчи легли в основу модификации клиента HTTPd 1.3. Сформировалась команда разработчиков, целью которой было объединить все патчи воедино. Так в декабре 95-го года была выпущена самая первая версия Apache, а в 98-м году вышла версия 1.3.
Позже, в 1999 году, сформировалась некоммерческая организация Apache Software Foundation, а уже в 2000 году ей была организована первая конференция разработчиков группы ApacheCon. На этой конференции впервые представили принципиально новую версию продукта — 2.0. В её основу легла структура по принципу модулей. На сегодняшний день одна из последних версий Apache — 2.4.
Архитектура Apache
Основные компоненты архитектуры сервера Апач — динамические модули, ядро и конфигурационные файлы.
Основные задачи ядра веб-сервера — модерация работы конфигурационных файлов, а также исполнение HTTP и HTTPS протоколов. Однако в чистом виде ядро имеет весьма ограниченный функционал и не справляется с такими задачами. Как можно расширить функционал веб-сервера? Для этого ядро должно работать сообща с системой модулей.
Модули — это по сути файлы, которые помогают расширять возможности той или иной системы. Базовая часть модулей для Апач устанавливается по дефолту, а дополнительные модули нужно подключать самостоятельно. При этом каждый модуль отвечает за отдельный компонент работы с запросом. Например, аутентификацию или кэширование. Для оптимизации ядра существует свыше 500 различных модулей — под любую задачу или проект.
Конфигурационный файл — это файл, который хранит настройки операционной системы и приложений, а также позволяет вносить в них изменения. Конфигурация сервера Apache основана на текстовых конфигурационных файлах. Эти файлы отвечают за каждый из трёх уровней:
- Файл уровня конфигурации сервера — httpd.conf. Он содержит директивы, которые управляют работой веб-сервера. В каждой операционной системе httpd.conf по-разному расположен. Чтобы узнать его местоположение, достаточно ввести в терминале команду: httpd -V
- Файл (или файлы) уровня конфигурации каталога — .htaccess. Файл .htaccess отвечает за настройки веб-сервера только в том каталоге, в котором он размещен, а также в его дочерних каталогах. То есть вносимые в .htaccess изменения не затрагивают глобальные настройки. Также настройки .htaccess имеют приоритет перед настройками httpd.conf.
- Файл уровня виртуального хоста — extra/httpd-vhosts.conf. Такие хосты нужны пользователям, которые запускают несколько сайтов на одном виртуальном сервере. На один сервер можно добавить неограниченное количество виртуальных хостов.
Как правило, основные конфигурационные файлы располагаются в папке conf, а дополнительные в папке extra. Изменения в эти файлы можно вносить как через командную строку, так и путем редактирования самого файла.
Принцип работы Apache
Работа Apache построена на процессной модели. В рамках процессной модели каждое соединение (обработка запроса) с сервером помещается в отдельный поток и проходит определенные этапы. Это значит, что несколько соединений невозможно обработать параллельно. Сервер обработает запрос от второго пользователя только тогда, когда будет обработан запрос от первого пользователя, а от третьего только тогда, когда будет обработан запрос от второго. Новое соединение не может начаться, пока предыдущая операция не завершится и не освободит поток.
Системные требования Apache: один процесс — один поток
Преимущества Apache
— Открытый код: любой желающий может разобраться, как пользоваться исходным кодом и адаптировать его под свои задачи и нужды. Благодаря этому ПО регулярно получает полезные дополнения, которые позволяют расширять его базовый функционал.
— Модульная структура: с помощью дополнительных модулей можно быстро расширить функционал сервера. Гибридные модули позволяют оптимизировать процессы в области кэширования, безопасности и распределения нагрузки. Также в целях оптимизации процессов модули всегда можно быстро отключить.
— Гибкие настройки: программу можно настроить под себя с помощью текстовых конфигурационных файлов.
— Масштабируемость: Apache способен не только легко, но и быстро масштабироваться.
— Универсальность: сервер можно запускать как на всех Unix-подобных системах, так и на MacOS и Windows. Отличия работы сервера только в процессе установки.
— База знаний: Apache накапливает документацию с 1996 года. В базу знаний внесли вклад как официальные разработчики, так и сторонние. Можно найти пошаговое руководство под задачу практически любой сложности.
— Поддержка ПО: поскольку веб сервер Апаче функционирует на основе таких веб-языков, как Python, PHP, Perl и многих других, он совместим с различными серверными ПО и базами данных.
— Совместимость с CMS: Apache прекрасно работает с такими популярными системами управления контентом, как WordPress, Drupal, Joomla и другими.
Недостатки Apache
— Взаимозависимость трафика и производительности: поскольку работа Апач построена на процессной модели, где каждый запрос пользователя к серверу обрабатывается отдельно, скорость работы сайтов с высоким уровнем посещаемости время от времени может снижаться.
— Уязвимость модулей: модульная структура одновременно является и плюсом и минусом структуры. Большое количество дефолтных модулей Apache усложняет администрирование сервера, а неправильная настройка повышает вероятность возникновения критических ошибок безопасности.
— Ручное редактирование на Linux: при работе с сервером на операционных системах семейства Unix предусмотрено только ручное редактирование конфигурационных файлов. Отредактировать файл иными способами невозможно потому, что на сервере отсутствует графический интерфейс. Для решения проблемы потребуется установить GUI — бесплатный инструмент для настройки напрямую из браузера.
— Избыточный функционал: если вы не являетесь разработчиком, большая часть функционала, установленного на Апаче по дефолту, может вам не потребоваться. Придется потратить время на отключение части модулей, чтобы оптимизировать процессы и снизить нагрузку.
Мы рассказали, зачем нужен Apache сервер, по каким принципам он работает и дали подробное описание плюсов и минусов его использования.
Популярные статьи
- Как указать (изменить) DNS-серверы для домена
- Я зарегистрировал домен, что дальше
- Как добавить запись типа A, AAAA, CNAME, MX, TXT, SRV для своего домена
- Что такое редирект: виды и возможности настройки
- Как создать почту со своим доменом
Что такое Apache
Браузер и сервер — это только малая часть всей интернет-системы. Рядовой пользователь даже не догадывается, какой путь проходят файлы сайта, чтобы добраться до устройства воспроизведения. Одним из таких неочевидных, но важных элементов является веб-сервер. Для его создания нужна специальная программа. В этой статье мы расскажем, что такое Apache, как он работает и какие преимущества и недостатки у него есть.
Облачные серверы нового поколения
Виртуализация KVM, почасовая оплата, резервные копии, готовые шаблоны, 10 доступных ОС на выбор!
Apache ― это программное обеспечение с открытым исходным кодом, которое позволяет создавать веб-сервер.
Что такое Apache сервер
Веб-сервер — это программа, без которой не может работать сайт в интернете. Cайт — это набор файлов, например, HTML, CSS и JS. В каждом файле находится информация о картинках, тексте, кнопках, шрифтах и других элементах внешнего вида сайта. Все эти файлы находятся на физическом сервере, который имеет или арендует владелец сайта. Чтобы показать пользователю сайт, браузер должен связаться с сервером и получить эти файлы. Для связи с сервером браузер просит помощи у веб-сервера. Веб-сервер получает запрос от браузера, ищет ресурсы сайта и пересылает их ему. Только после этого браузер показывает контент пользователю.
История создания Apache
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
Apache состоит из ядра и модулей. Ядро выполняет основные функции: обработка конфигурационных файлов, работа с протоколом HTTP, система загрузки модулей. Оно может работать самостоятельно без модулей, но тогда функционал программы будет крайне ограничен. Ядро создала команда компании Apache Software Foundation без вмешательства сторонних разработчиков.
Как можно расширить функционал веб-сервера? Для этого выпускаются модули. Модуль — это код, который расширяет функционал ядра. Они бывают статические и динамические. Статические добавляются к ядру ещё до загрузки программы, то есть пользователь выбирает программу определенной сборки. Динамические можно добавить на этапе загрузки программы при помощи встроенного модуля mod_so.
Модули отвечают за определенные возможности программы. Это может быть поддержка различных языков программирования, повышение безопасности, аутентификация пользователя, исправление ошибок и другие дополнительные функции. Таким образом, Apache — это конструктор, который можно собрать так, как нужно пользователю. Для этой программы существует более 500 модулей. Например, Multi-Processing Module (MPM) — модуль системного уровня. С его помощью можно оптимизировать Apache в условиях конкретной операционной системы.
Как работает Apache
Apache использует технологию мультипроцессинга. Каждое соединение с сервером помещается в отдельный поток и проходит все этапы операции шаг за шагом. Поток можно сравнить с тропинкой, по которой может идти только один человек. Второй человек может пройти по той же тропинке только тогда, когда первый окажется в конечной точке. У такой схемы работы есть один существенный минус — высокий риск перегрузки. Количество потоков ограничено, поэтому, если пользователей слишком много, работоспособность программы снижается. Новое соединение не начнется, пока предыдущая операция не завершится и не освободит поток.
Конфигурация Apache
Система конфигурации web-сервера Apache состоит из 3-х уровней текстовых файлов.
1) httpd.conf — основной конфигурационный файл. В нём содержатся директивы, которые управляют работой веб-сервера. Местоположение файла зависит от операционной системы. Узнать, где он находится, можно с помощью команды:
httpd -V
2) .htaccess — дополнительный конфигурационный файл. Файл (или файлы) .htaccess задают правила работы веб-сервера в каталоге, в котором он размещен, и в его дочерних каталогах, то есть он не затрагивает глобальные изменения работы сервиса. Настройки .htaccess приоритетны перед настройками в httpd.conf. При каждом обращении к веб-серверу Apache просматривает все каталоги на наличие .htaccess. 3) Виртуальный хост. Он используется для запуска нескольких доменов на одном IP-адресе. Такие хосты нужны пользователям, которые запускают несколько сайтов на одном виртуальном сервере. На один сервер можно добавить неограниченное количество виртуальных хостов. Как это сделать, читайте в статье Как настроить виртуальные хосты в Apache на Ubuntu 16.04/18.04.
Преимущества и недостатки Apache
Преимущества веб-сервера Apache
- бесплатное программное обеспечение как для личного использования, так и для коммерческого;
- гибкость программы. Открытый исходный код позволяет подстроить программу под специфические нужды пользователя;
- поддержка многих языков программирования (PHP, Python, Ruby, Perl, ASP, Tcl), что дает доступ к различным серверным ПО;
- удобная и надежная конфигурация системы. Приложение легко настраивается через текстовые конфигурационные файлы и может быстро масштабироваться;
- Apache хорошо работает со многими системами управления контентом (CMS), такими как WordPress, Joomla, Drupal;
- поддерживает технологии FastCGI и CGI;
- может использовать СУБД для аутентификации пользователей;
- большая база инструкций. Так как продукт уже давно на рынке, разработчики и пользователи уже написали множество инструкций под разные ситуации.
Недостатки веб-сервера Apache
- при высоком трафике снижается производительность. На высокопосещаемых сайтах может значительно снижаться скорость работы программы. Это связано с особенностью работы сервиса. Каждый пользовательский запрос обрабатывается отдельным потоком. Когда потоки заканчиваются, остальные операции ждут своей очереди. Если планируется большое количество посещений сайта, то лучше использовать Nginx;
- много параметров настройки. Если допустить ошибку при настройке конфигурации, это может привести к появлению уязвимостей во всей системе;
- риск заражения вирусом. Создавать модули могут не только добросовестные разработчики, но и злоумышленники. В модуль может быть внедрён вредоносный код. Устанавливать модули стоит только от проверенных разработчиков.
Теперь вы знаете, что такое веб-сервер Апаче и как он работает. Чтобы установить Apache на CentOS 7, воспользуйтесь инструкцией.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь
Apache
Apache («Апачи», Apache HTTP Server) — это открытое кросс-платформенное программное обеспечение для размещения и поддержки веб-сервера.
Освойте профессию «Веб-разработчик»
Для чего нужен Apache
Программное обеспечение позволяет:
- открывать динамические PHP-страницы;
- распределять нагрузку, поступающую на сервер;
- обеспечивать отказоустойчивость сервера;
- тренироваться в запуске PHP-скриптов и настройке сервера.
Как появился Apache
Apache — сокращенное название от “A patchy server”. В переводе с английского — «Сервер с патчами». Название появилось из-за происхождения программы. В первой половине 90-х годов прошлого века был популярен веб-сервер NCSA HTTPd. Когда его разработчик покинул проект, доработка ПО сильно замедлилась. В NCSA HTTPd было много ошибок. Другие авторы стали исправлять их и накладывать свои патчи. Патч — это кусок кода, информация или программный модуль, который устраняет недочеты разработчиков. Еще одно название — заплатки.
В 1995 году Брайан Белендорф создал команду разработчиков и объединил все патчи. Так была создана первая версия Apache. Сейчас веб-сервер обеспечивает работу примерно 32% сайтов в мире. Версии «Апачи» есть для разных операционных систем — Linux, Microsoft Windows, BSD, Mac OS, BeOSNovell, NetWare.
Профессия / 12 месяцев
Веб-разработчик с нуля
Создавайте нужные любому бизнесу сервисы
Что такое веб-сервер
Программа-сервер — это посредник между серверным компьютером и браузером пользователя. Получив от клиента запрос, он находит нужную страницу в каталоге сайта и отправляет ее в ответ. Браузер анализирует присланный файл и преобразует его в веб-страницу, которую и видит пользователь. Схема работы выглядит так:
- Сервер работает на порту (обычно 80, 8080 или 8000, но иногда бывают и другие), который открыт для сторонних программ клиента, включая браузер пользователя.
- Когда на один из портов поступает запрос, программа сопоставляет его с внутренними инструкциями и правилами и решает, исполнять или нет.
- Если в правилах веб-сервера на запрос есть запрет, пользователь увидит код ошибки (404) или отказ в доступе к данным.
- После того как серверная программа исполнила запрос (успешно или с ошибкой), она переходит в режим ожидания.
Обмен данными между веб-сервером и браузером выполняется по протоколу HTTP (HyperText Transfer Protocol). Позже с его помощью стало можно передавать файлы всех видов. Сегодня используется усовершенствованная версия HTTPS с шифрованием трафика между клиентом и сервером.
Как работает Apache
Apache работает по принципу модулей. Сначала устанавливается ядро, а потом с учетом задач подключаются необходимые модули.
Ядро
Ядро веб-сервера Apache включает основные функциональные возможности — обработку конфигурационных файлов, протокол HTTP и систему загрузки модулей. Оно полностью написано ASF на языке программирования C. Ядро Apache может работать и без использования модулей, но функциональность решения будет ограничена.
Система модулей
Модули — это отдельные программные блоки. Они подключаются к ядру веб-сервера и расширяют его функционал. С помощью модулей решаются узкоспециализированные задачи, например поддержка языков программирования, исправление ошибок, усиление безопасности, аутентификация и т.д. В настоящее время для веб-сервера Apache есть больше 500 модулей. Они могут входить в состав ПО при установке или подгружаться позже с помощью конфигурационного файла.
Станьте веб-разработчиком и найдите стабильную работу на удаленке
Система конфигурации
Это совокупность текстовых команд для изменения параметров ядра или добавления новых модулей. Благодаря им «Апачи» способен работать на нескольких уровнях:
- всего сервера. На этом уровне реализуется работа веб-сервера в целом и обработка любых поступающих к нему запросов. Такие команды прописываются в файле httpd.conf;
- виртуального хоста. На компьютере может размещаться несколько сайтов, управляемых с помощью одного веб-сервера. При этом каждому сайту выделяется отдельный виртуальный хост. Когда от пользователя поступает запрос, система определяет, на какой хост его отправить, откуда извлечь данные, как их обработать и т.д. Эти команды прописываются в конфигурационных файлах extra/httpd-vhosts.conf;
- каталога. Конфигурационный файл этого уровня (.htaccess) контролирует доступ пользователя к данным в каталоге. Например, он позволяет предотвратить незаконную выгрузку списка товаров или финансовой отчетности с сайта интернет-магазина.
Сервер Apache обращается к этим правилам при каждом запросе, поэтому новые директивы начинают исполняться сразу после изменений. Редактировать конфигурации можно в текстовых файлах настройки или с помощью командной строки.
Преимущества «Апачи»
Гибкость. Несколько файлов конфигурации, контролирующих работу веб-сервера на разных уровнях, а также модули позволяют настраивать Apache под решение специализированных задач.
Кросс-платформенность. «Апачи» может работать на компьютерах под управлением Microsoft Windows, MacOS, Linux, специализированных сетевых BSD, Nevell NetWare. Функционал и администрирование веб-сервера на разных ОС остается таким же, различаются только процесс установки и расположение директорий с файлами.
Доступность. «Апачи» — ПО с открытым исходным кодом. Это значит, что каждый желающий может изучать, модифицировать и использовать веб-сервер для решения своих задач.
Функциональность. Возможности ядра можно расширить с помощью модулей для Apache. Одни поставляются вместе с инсталляционным пакетом, другие можно скачать дополнительно.
Поддержка пользователей. «Апачи» известен на рынке уже более 25 лет. За это время было выпущено большое количество справочной документации, модульных комплектов, сценариев, примеров практического использования от официального разработчика и сторонних экспертов. Практически для любой проблемы, с которой может столкнуться пользователь при эксплуатации ПО, имеется готовое решение в Сети.
Масштабируемость. На Apache может работать как легкий одностраничный лендинг, так и масштабный интернет-магазин или информационный портал. При увеличении нагрузки на физический сервер можно установить второй «Апачи» на другом компьютере, подключить к нему тот же сайт и распределить трафик между двумя веб-серверами.
Поддержка языков программирования. Apache написан на C++, при этом есть множество модулей, которые добавляют поддержку разных языков программирования и систем разработки. Среди них Python, PHP, Ruby (apache-ruby), Tcl, Perl, ASP (apache-asp). Apache поддерживает механизмы FastCGI и CGI, что позволяет исполнять программы почти на всех языках программирования, включая C, C++, sh, Lua, JavaScript.
Недостатки Apache
Производительность. Из-за того что система при каждом запросе обращается к конфигурационным файлам, увеличивается время обработки. Это становится заметно при большой нагрузке на сервер — сайт на «Апачи» работает с каждым соединением по очереди и в такие моменты начинает ощутимо «тормозить». Однако этот недостаток можно частично устранить, отключив неиспользуемые модули.
Уязвимость. Базовое ядро системы прошло многочисленные проверки на безопасность, в отличие от модулей от сторонних разработчиков. Кроме того, чем больше функциональных блоков подключено, тем сложнее настройка и выше шанс допустить критическую ошибку.
Синтаксис конфигурационных файлов. В работе с ними пользователь постоянно имеет дело с большим количеством переменных. Это усложняет новичкам управление и настройку. Чтобы нивелировать недостаток, можно использовать специальный бесплатный инструмент Apache GUI.
Как работать на «Апачи»
Один из наиболее простых и распространенных способов организовать веб-сервер с помощью Apache — использовать программный пакет MAMP. Он включает сам Apache, менеджер баз данных, движок PHP и другие компоненты. Работа происходит следующим образом:
- Пользователь загружает версию пакета MAMP для своей ОС с официального сайта и устанавливает веб-сервер на компьютере.
- После установки он запускает программу и вводит команду Start.
- Система проинформирует пользователя о том, что сервер запущен, покажет его адрес и директорию, в которой размещены файлы (все это можно оставить по умолчанию или настроить самостоятельно).
- На странице http://localhost/MAMP пользователь может посмотреть всю информацию о веб-сервере, включая ключи и инструменты администрирования баз данных.
MAMP позволяет легко установить локальный веб-сервер, однако он не будет виден из интернета, если не подключена услуга выделенного публичного IP-адреса у провайдера. Настройка сайта, видимого из внешней сети, более сложная и требует больше времени.
Веб-разработчик с нуля
Веб-разработчик — мастер на все руки. Он создает программы и приложения для любых сфер и компаний: от небольшой кофейни до международных банков. Станьте специалистом, который создает востребованный продукт
Что такое Apache
Интернет невозможно представить без всевозможных сайтов. Все они работают за счёт веб-серверов – программ, отвечающих за передачу данных от физических хранилищ до браузеров пользователей.
Веб-сервер работает в качестве «посредника» между пользователем и физическим сервером. При получении запроса от посетителя он ищет необходимую страницу в каталоге с сайтом и отправляет её в ответ. Браузер принимает полученный файл, обрабатывает его и отображает на экране посетителя.
Передача информации веб-сервера выполняется по протоколу HTTP (HyperText Transfer Protocol), изначально созданного для работы с HTML-страницами. Уже позже стало возможным отправлять через HTTP файлы любых типов. В последнее время преобладают сайты, работающие через HTTPS. Это улучшенная версия HTTP, которая отличается от предшественника тем, что поддерживает шифрование трафика TLS/SSL между пользователем и сервером.
Звание самого популярного веб-сервера в мире уже более 25 лет удерживает за собой Apache HTTP Server, который принято называть сокращенно Apache или «Апач». Сегодня программа обслуживает более 40% всех существующих серверов, включая проекты IBM, eBay, PayPal и Facebook.
Рассмотрим причины популярности Apache подробнее. Это не только пополнит копилку знаний об интернет-технологиях, но и поможет сделать правильный выбор веб-сервера для размещения сайта в будущем.
Что это такое
Apache – это свободное программное обеспечение для размещения веб-сервера. Он хорошо показывает себя в работе с масштабными проектами, поэтому заслуженно считается одним из самых популярных веб-серверов. Кроме того, Apache очень гибок в плане настройки, что даёт возможность реализовать все особенности размещаемого веб-ресурса.
История создания
Apache HTTP Server был выпущен в 1995 году разработчиком Робертом Маккулом из Университета штата Иллинойс (UIUC). Продукт возник как доработанная версия другого HTTP-клиента – NCSA HTTPd 1.3, созданного Робертом ранее.
Основой для модификации стали многочисленные «патчи» или программные «заплатки» для NCSA. Именно отсюда (а не от индейского племени апачей) изначально и происходит название Apache. Оно расшифровывается как «a patchy server» или «сервер с патчами».
Разработкой и поддержкой продукта с 1999 года занимается организация Apache Software Foundation (ASF) – сообщество экспертов-энтузиастов со всего мира. Этим же некоммерческим фондом была создана официальная лицензия ПО – Apache License.
В 2000 году ASF представило новую версию Apache 2.0 с полностью переработанной архитектурой, свободной от кода NCSA. С этого момента веб-сервер развивается по двум основным веткам – 1.х и 2.х.
Как устроен Apache
Архитектура
Apache состоит из ядра и динамической модульной системы. Параметры системы изменяются с помощью конфигурационных файлов.
Ядро
Ядро Apache разработано Apache Software Foundation на языке C. Основные функции — обработка конфигурационных файлов, протокол HTTP/HTTPS и загрузка модулей. Ядро может работать без модулей, но будет иметь ограниченный функционал.
Модульная система
Модуль – отдельный файл, подключение которого расширяет изначальный функционал ядра. Они могут включаться в состав ПО при первоначальной установке или подгружаться позже через изменение конфигурационного файла.
Большинство из них отвечает за определенный аспект обработки клиентского запроса – поддержку различных языков программирования, безопасность, кэширование, аутентификацию и т.д. Таким образом, большая задача разбивается на несколько фаз, каждую из которых решает отдельный, узкоспециализированный модуль.
Для Apache существует больше 500 модулей. Многие популярные веб-приложения сразу выпускаются в виде модуля к Apache. Например, ISPmanager и VDSmanager.
Конфигурация
Система конфигурации Apache работает на текстовых файлах с прописанными настройками. Она подразделяется на три условных уровня, для каждого из которых имеется свой конфигурационный файл:
- Уровень конфигурации сервера (файл httpd.conf) – основной конфигурационный файл. Действие распространяется на весь механизм веб-сервера.
- Уровень каталога (файл .htaccess) – дополнительный конфигурационный файл. Его директивы охватывают только каталог, где расположен файл, а также вложенные подкаталоги.
- Уровень виртуального хоста (файл httpd.conf> или extra/httpd-vhosts.conf).
Обычно конфигурационные файлы Apache находятся в папке «conf», а дополнительные конфигурационные файлы во вложенной в нее папке «extra». Внести изменения можно как через редактирование самого файла, так и через командную строку.
Виртуальные хосты
Веб-хост – это компонент сервера, отвечающий за обслуживание одного размещенного на нем объекта (сайта, виртуального сервера). Система виртуальных хостов Apache позволяет одновременно запускать несколько проектов с одного IP-адреса.
В Apache можно установить настройки модуля и ядра, а также вводить лимиты на потребление серверных ресурсов (трафик, RAM, CPU) для каждого виртуального хоста в отдельности. Это технологическая основа всего механизма веб-хостинга.
Достоинства и недостатки Apache
Плюсы
- Доступность. Это программное обеспечение с открытым исходным кодом. Значит, его может бесплатно использовать или модифицировать любой желающий. Разработчики по всему миру создают конфигурации и модули веб-сервера для своих специфических нужд. По этой же причине Apache регулярно получает полезные дополнения, расширяющие его базовый функционал.
- Гибкость настройки. Apache использует несколько конфигурационных файлов для управления веб-сервером. Это позволяет настроить ПО под узконаправленные задачи.
- Функциональность. У Apache динамическая модульная структура. Можно быстро подключать дополнительный функционал в виде скачиваемых модулей, даже без обращения к внешним источникам. Это позволяет решать целый комплекс важнейших задач в области безопасности, кэширования, редактирования URL, распределения нагрузки. Благодаря гибридным модулям MPM, Apache может одинаково успешно обслуживать статический и динамический контент. Есть возможность оперативно отключать ненужные модули и ускорять работу веб-сервера
- Кроссплатформенность. Apache работает как на Windows, так и на всех Unix-подобных системах. Администрирование веб-сервером не имеет серьёзных отличий на разных ОС. Индивидуален только процесс установки и расположение директорий с файлами программы.
- Совместимость. Apache работает на базе скриптовых или веб-ориентированных языков (PHP, Python, Tcl, Ruby, Perl, ASP), что делает его совместимым с самым широким спектром баз данных и серверного ПО. Многие веб-приложения и инструменты сразу выходят со средствами запуска из-под Apache в виде PHP-модуля. Веб-сервер, поддерживает технологии FastCGI и CGI, позволяющие пользоваться программными продуктами на объектно-ориентированных языках Java, sh, C, C++.
- Масштабируемость. Подходит для веб-ресурсов любого масштаба. Apache хорошо работает как на одностраничном сайте (лендинге), так и на многостраничном сайте с ежедневной аудиторией в десятки тысяч посетителей.
- Поддержка пользователей. Apache удерживает первенство популярности среди веб-серверов с 1996 года. За прошедшее время для него создана обширнейшая база документации – как официальной, так и созданной сторонними разработчиками. Готовые, подробно описанные руководства можно найти практически на любой сценарий.
Минусы
- Производительность. Скорость обработки запросов Apache несколько ниже, по сравнению со своими конкурентами. Гибкость веб-сервера в некоторых случаях вредит производительности. Например, Apache приходится каждый раз считывать несколько конфигурационных файлов на сервере, затрачивая системные ресурсы и время. Но этот и многие другие факторы можно исправить, отключив ненужные опции. Правда в таком случае функциональность Apache не будет сильно отличаться от других веб-серверов.
- Сложная конфигурация повышает уязвимость. Возможность подключать модули в Apache это не всегда преимущество. Чем больше модулей, тем сложнее становятся настройки. Соответственно, больше шансов допустить критические пробелы в контуре безопасности.
- Синтаксис конфигов.. В файлах с параметрами программы используются разнообразные переменные, поэтому настройка и управление веб-сервером может показаться сложной новичкам. Упростить администрирование Apache можно с помощью бесплатного инструмента Apache GUI.
- Излишний функционал. Даже без дополнительных модулей Apache предоставляет пользователям массу возможностей. Правда, большинство использует лишь небольшую часть базового функционала приложения. Поэтому часто после установки приходится тратить время на отключение «лишних» модулей.
Альтернативы Apache
NGINX
Nginx (Engine-X, «энжинкс») — второе по популярности веб-серверное приложение и главный конкурент Apache. Было выпущено в 2004 году под открытой лицензией BSD. Изначально приложение создавалось для решения проблемы масштабирования, известной как «10 тысяч соединений» (С10к). Это значит, что до Nginx веб-сервер не был способен одновременно обрабатывать пользовательские запросы более чем с 10 000 подключений.
У этого веб-сервера асинхронная событийно-ориентированная архитектура (event-driven), которая позволяет добиваться быстрого масштабирования даже при минимальных ресурсах. Вместо того, чтобы создавать новый процесс для каждого пользовательского запроса, Nginx обрабатывает множество соединений в едином потоке.
Nginx отлично подходит для веб-проектов с высокой посещаемостью. Однако веб-сервер не может самостоятельно работать с динамическим контентом. Поэтому его чаще используют для статических веб-сайтов или например, в связке с PHP-FPM или Apache HTTP Server как прокси-сервер.
Lighttpd
Веб-сервер Lighttpd (произносится «лайти») — кроссплатформенное программное обеспечение на языке С. Выпущено в 2003 году под лицензией BSD. «Лайти» работает на операционных системах Windows и семейства Unix/Linux. Приложение поддерживает технологии FastCGI, SCGI, HTTP proxy, Auth, перезаписи URL и AJP (с версии 1.5).
Как и Nginx, изначально «Лайти» создавалось для решения проблемы «С10к». Неудивительно, что его специализация — веб-проекты с большой посещаемостью. В числе компаний, использующих Lighttpd, такие гиганты, как Google, Википедия, Яндекс и Ubuntu.
Microsoft IIS
Internet Information Services (IIS) — набор сервисов для создания веб-сервера от компании Microsoft. Распространяется в комплекте с операционными системами Windows NT как дополнительно устанавливаемый компонент. Веб-сервер поддерживает технологии CGI, FastCGI, ISAPI и SSI.
Главная сила IIS – в глубокой интеграции и поддержке продуктов Microsoft. Его часто выбирают те, чьи ресурсы работают на движке ASP.NET и используют скриптовый язык ASPX. Главный недостаток – жесткая привязка к операционной системе Windows и отсутствие версий для Unix/Linux.
Tomcat
Apache Tomcat — это контейнер сервлетов, который обрабатывает спецификации Java. Например, Java Servlet, Java Server Pages (JSP), Java EL и WebSocket. Продукт был разработан фондом Apache Software Foundation на основе открытой лицензии Apache License 2.0. Tomcat используется как в качестве самостоятельного веб-сервера, так и в связке с Apache HTTP Server.
Приложение написано на языке Java и способно автоматически загружать Java-библиотеки. Его основная специализация — веб-проекты с динамическим содержимым. Но у Apache Tomcat хуже возможности для настройки, что сужает его сферу применения. Например, для запуска WordPress эффективнее использовать обычный HTTP-сервер Apache.
Заключение
Сервер Apache – универсальный инструмент для быстрого и безопасного запуска интернет-проектов разного масштаба. Веб-сервер совместим с большинством существующих операционных систем, программных продуктов и языков разработки.
Система конфигурационных файлов дает «Апач» гибкие возможности для настройки, а динамически подгружаемые модули расширяют функционал до максимума. Особенно эффективно использовать веб-сервер Apache в связке с ближайшим аналогом – Nginx.
Для работы с «Апач» пользователю нужен определенный уровень IT грамотности. Желательно знать основы программирования и веб-администрирования. Но процесс сильно упрощает активное сообщество поддержки и отлично развитая база официальной документации.
Раскройте все возможности и преимущества веб-сервера Apache с надёжным хостингом от Eternalhost!