Что такое Apache и где он используется

При создании сайта часто в первую очередь приобретается домен и хостинг (либо сервер). Однако кроме этого требуется веб-сервер — программное обеспечение, которое устанавливается на сервер и позволяет вашему сайту отображаться в интернете. В статье мы расскажем о популярной программе под названием Apache HTTP Server.

Что такое веб-сервер

Для начала подробнее разберем понятие веб-сервера.

Веб-сервер — это программное обеспечение или оборудование, которое выступает посредником между пользователем и хостингом (хранилищем файлов запрашиваемого сайта).

Обычно схема работы веб-сервера включает в себя три этапа:

  1. Получение запроса от браузера.
  2. Поиск и подготовка информации для ответа.
  3. Передача ответа браузеру для дальнейшей обработки.

Для настройки веб-сервера используется специализированное ПО, которое принято выбирать в зависимости от нужд проекта. В повседневности эти программы принято называть веб-серверами.

Чаще всего для создания веб-серверов используются:

  • Nginx — популярный веб-сервер от российских разработчиков,
  • Lighttpd — веб-сервер для скоростной работы с данными,
  • IIS — веб-сервер от Microsoft,
  • Apache HTTP Server — ниже мы расскажем о нем подробнее,
  • LiteSpeed Web Server — альтернатива Apache.
Источник: Shutterstock. Apache HTTP Server — одна из самых популярных программ для настройки веб-серверов

Что такое Apache

Apache Software Foundation — это организация-фонд, которая помогает развитию программ линейки Apache. В число поддерживаемых программ входит и Apache HTTP Server.

Apache HTTP Server — это свободное программное обеспечение, которое используется для создания веб-сервера. Чаще всего оно используется для крупномасштабных проектов и считается наиболее популярным среди всех веб-серверов. В повседневной жизни Apache HTTP Server часто называют просто Apache. Для удобства, далее в статье мы будем называть этот веб-сервер так же.

Усовершенствованием и поддержкой Apache занимается сообщество разработчиков. Кроме сообщества поддержку оказывает Apache Software Foundation — организация-фонд, которая помогает развитию программ линейки Apache.

Первоначальная версия Apache была разработана в 1995 году. Изначально она была предназначена для устранения ошибок сервера Всемирной паутины NCSA HTTPd 1.3. По этой причине название Apache получило ироничную расшифровку «a patchy», которая переводится с английского как «в заплатках».

По мере развития сети Интернет появилась новая версия Apache — 2.x (символом x обозначен номер ветки). На этом этапе программа была полностью переписана, а также из нее был удален код NCSA. Последний релиз веб-сервера Apache состоялся 17 июля 2024 года: в этот день была представлена версия 2.4.62.

Особенности Apache

Apache, как и любое другое программное обеспечение, имеет свои индивидуальные характеристики. Начнем с преимуществ:

  1. Открытый исходный код, благодаря которому можно бесплатно скачивать Apache и менять его функционал. Открытость кода позволяет создать большое количество уникальных конфигураций этого веб-сервера.
  2. Масштабируемость. Apache позволяет размещать несколько сайтов на одном виртуальном хостинге или VPS.
  3. Кроссплатформенность. Apache можно установить на большинство популярных операционных систем: Windows, macOS, а также ОС семейства Linux.
  4. Легкая настройка. Вы можете скорректировать настройки веб-сервера в любой момент. Если возникают трудности, поможет официальная документация.

Что касается недостатков, их всего два:

  1. Требовательность к ресурсам. Apache потребляет больше ресурсов в сравнении с другими веб-серверами. Поэтому когда к серверу поступает большое количество запросов, Apache может работать медленнее обычного.
  2. Уязвимости в сложных конфигурациях. Если к Apache подключено слишком большое количество модулей, конфигурация усложняется и появляются слабые места по части безопасности.

Обычно, чтобы сгладить слабые стороны Apache, его устанавливают в связке с другим веб-сервером. Зачастую таким «напарником» выступает Nginx — веб-сервер, который используется для создания обратного прокси и работы со статическим контентом. Например, на виртуальном хостинге Рег.ру настроена связка Apache+Nginx — это помогает сайтам работать максимально эффективно.

Источник: Shutterstock. Открытый исходный код Apache позволяет создавать уникальные конфигурации веб-сервера

Как устроен Apache

Ядро

Ядро — это центральный компонент веб-сервера Apache. Оно написано на языке C и может работать даже без модулей. Но в этом случае функционал будет ограничен.

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

Конфигурация веб-сервера

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

  • httpd.conf — для управления параметрами веб-сервера и виртуальными хостами.
  • .htaccess — для управления настройками на уровне папки.

Многопроцессные модули

Для Apache создано большое количество MPM (Multi-Processing Module), которые реализуют модель симметричной многопроцессорности.

Разберем наиболее популярные виды модулей мультипроцессорной обработки:

  • PreFork позволяет запускать несколько изолированных процессов одновременно. При этом каждый отдельный запрос обрабатывается в пределах одного процесса.
  • Worker создает большое количество потоков для каждого отдельно созданного процесса. В этом случае один запрос обслуживается одним потоком. Этот модуль помогает обработать больше запросов, чем PreFork.
  • Event способен поддерживать несколько соединений одновременно. Это доступно благодаря тому, что модуль передает часть запросов вспомогательным модулям.

Настройка виртуальных хостов

Виртуальные хосты позволяют разместить несколько доменных имен в пределах одного IP-адреса. При этом по каждому домену будет отображаться разный контент — тот, который загружен в директорию сайта. Каждый домен, который добавлен на сервер, можно считать отдельным виртуальным хостом.

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

Установка Apache

Установка Apache не отнимает много времени — часто она занимает несколько минут. Чтобы установить веб-сервер:

  1. Подключитесь к серверу по протоколу SSH.
  2. Обновите пакеты, поочередно выполнив команды:
  1. Установите Apache:

После запуска команды введите пароль суперпользователя и нажмите Y, чтобы продолжить установку.

  1. Откройте файл конфигурации:
  1. Добавьте строку следующего вида:

Вместо domain.ru укажите ваше доменное имя.

Также в этой строке можно указать IP-адрес сервера. В этом случае строка будет иметь вид:

Вместо 123.123.123.123 необходимо указать IP-адрес вашего сервера.

Сохраните изменения при помощи сочетания клавиш Сtrl+O и закройте файл комбинацией Сtrl+X.

  1. Проверьте синтаксис файла конфигурации:

Если файл настроен корректно, вы получите вывод с текстом Syntax OK.

  1. Перезапустите Apache — так изменения вступят в силу:
Источник: Shutterstock. Для Apache создано большое количество модулей мультипроцессорной обработки

Настройка Apache

В качестве примера мы рассмотрим настройку модуля PreFork. Чтобы включить его:

  1. Подключитесь к серверу по протоколу SSH.
  2. Активируйте модуль, который вам нужен:

Вместо mpm_prefork укажите название необходимого модуля.

  1. Отключите другие модули. Для этого поочередно выполните команды:

Вместо mpm_worker и mpm_event укажите названия модулей, которые вам не нужны.

  1. Активируйте mod_rewrite:
  1. Перезапустите Apache с помощью команды:

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

Apache — это самый популярный веб-сервер. Однако выбирать такую программу необходимо под потребности вашего сайта или проекта: например, для сайтов на CMS или любых других ресурсов с преобладанием динамического контента.

Кейс Stworka: как создать ERP в облаке для 5000 строительных компаний

А также запустить маркетплейс для строителей и обрабатывать 1,5 млн артикулов ежедневно. Рассказываем, как компания Stworka развернула IT-инфраструктуру в Облаке...
Read More

Системы контроля версий: зачем они нужны и как их использовать

Мир разработки ПО издалека кажется непонятным и запутанным, но существуют инструменты, которые значительно упрощают жизнь и делают работу более эффективной....
Read More

Соглашение об уровне обслуживания (SLA)

Поговорим о документе, который может серьезно повлиять на успех проекта, будь то интернет-магазин, SaaS-платформа или любой другой онлайн-сервис. Речь пойдет...
Read More

Что такое S3 (Simple Storage Service)

Если вы только начинаете свой путь в разработке, вам обязательно нужно познакомиться с S3. Это краеугольный камень многих современных приложений...
Read More

Полный обзор NoSQL: особенности и использование

Развитие интернета диктует новые правила в разработке. Традиционные базы данных, которые называются реляционными (RDBMS), не справляются с задачами, которые требуют...
Read More

Как использовать DataSphere. Датасеты в DataSphere

Данные нужны в любой сфере: магазины анализируют продажи, в медцентры — истории болезней, ученые — результаты экспериментов. Чем больше информации,...
Read More

Основные задачи машинного обучения: классификация, регрессия, кластеризация и уменьшение размерности

Machine Learning ― это уже часть нашей повседневной жизни. От рекомендаций фильмов на Кинопоиске до спам-фильтров в почте — за...
Read More

Обзор CLI: командная строка и ее возможности

Когда были созданы первые компьютеры, операционной системой на них можно было управлять только при помощи ввода текстовых команд. Со временем...
Read More

Шардирование в базах данных: обзор концепции

В условиях стремительного роста объемов данных и увеличения нагрузок на информационные системы эффективность их масштабирования становится критически важной. Одним из...
Read More

Графический процессор (GPU): что это, для кого, разновидности

Дизайнерам, проектировщикам и разработчикам требуются мощные вычислительные ресурсы для работы. Обычный процессор (CPU) не справится с такими задачами, как обработка...
Read More