Что такое Apache и где он используется
При создании сайта часто в первую очередь приобретается домен и хостинг (либо сервер). Однако кроме этого требуется веб-сервер — программное обеспечение, которое устанавливается на сервер и позволяет вашему сайту отображаться в интернете. В статье мы расскажем о популярной программе под названием Apache HTTP Server.
Что такое веб-сервер
Для начала подробнее разберем понятие веб-сервера.
Веб-сервер — это программное обеспечение или оборудование, которое выступает посредником между пользователем и хостингом (хранилищем файлов запрашиваемого сайта).
Обычно схема работы веб-сервера включает в себя три этапа:
- Получение запроса от браузера.
- Поиск и подготовка информации для ответа.
- Передача ответа браузеру для дальнейшей обработки.
Для настройки веб-сервера используется специализированное ПО, которое принято выбирать в зависимости от нужд проекта. В повседневности эти программы принято называть веб-серверами.
Чаще всего для создания веб-серверов используются:
- Nginx — популярный веб-сервер от российских разработчиков,
- Lighttpd — веб-сервер для скоростной работы с данными,
- IIS — веб-сервер от Microsoft,
- Apache HTTP Server — ниже мы расскажем о нем подробнее,
- LiteSpeed Web Server — альтернатива Apache.
Что такое 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, как и любое другое программное обеспечение, имеет свои индивидуальные характеристики. Начнем с преимуществ:
- Открытый исходный код, благодаря которому можно бесплатно скачивать Apache и менять его функционал. Открытость кода позволяет создать большое количество уникальных конфигураций этого веб-сервера.
- Масштабируемость. Apache позволяет размещать несколько сайтов на одном виртуальном хостинге или VPS.
- Кроссплатформенность. Apache можно установить на большинство популярных операционных систем: Windows, macOS, а также ОС семейства Linux.
- Легкая настройка. Вы можете скорректировать настройки веб-сервера в любой момент. Если возникают трудности, поможет официальная документация.
Что касается недостатков, их всего два:
- Требовательность к ресурсам. Apache потребляет больше ресурсов в сравнении с другими веб-серверами. Поэтому когда к серверу поступает большое количество запросов, Apache может работать медленнее обычного.
- Уязвимости в сложных конфигурациях. Если к Apache подключено слишком большое количество модулей, конфигурация усложняется и появляются слабые места по части безопасности.
Обычно, чтобы сгладить слабые стороны Apache, его устанавливают в связке с другим веб-сервером. Зачастую таким «напарником» выступает Nginx — веб-сервер, который используется для создания обратного прокси и работы со статическим контентом. Например, на виртуальном хостинге Рег.ру настроена связка Apache+Nginx — это помогает сайтам работать максимально эффективно.
Как устроен 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 |
sudo apt update |
1 |
sudo apt upgrade |
3. Установите Apache:
1 |
sudo apt install apache2 |
После запуска команды введите пароль суперпользователя и нажмите Y, чтобы продолжить установку.
4. Откройте файл конфигурации:
1 |
sudo nano /etc/apache2/apache2.conf |
5. Добавьте строку следующего вида:
1 |
ServerName domain.ru |
Вместо domain.ru укажите ваше доменное имя.
Также в этой строке можно указать IP-адрес сервера. В этом случае строка будет иметь вид:
1 |
ServerName 123.123.123.123 |
Вместо 123.123.123.123 необходимо указать IP-адрес вашего сервера.
Сохраните изменения при помощи сочетания клавиш Сtrl+O и закройте файл комбинацией Сtrl+X.
6. Проверьте синтаксис файла конфигурации:
1 |
sudo apache2ctl configtest |
Если файл настроен корректно, вы получите вывод с текстом Syntax OK.
7. Перезапустите Apache — так изменения вступят в силу:
1 |
sudo systemctl restart apache2 |
Настройка Apache
В качестве примера мы рассмотрим настройку модуля PreFork. Чтобы включить его:
1. Подключитесь к серверу по протоколу SSH.
2. Активируйте модуль, который вам нужен:
1 |
sudo a2enmod mpm_prefork |
Вместо mpm_prefork укажите название необходимого модуля.
3. Отключите другие модули. Для этого поочередно выполните команды:
1 |
sudo a2dismod mpm_worker |
1 |
sudo a2dismod mpm_event |
Вместо mpm_worker и mpm_event укажите названия модулей, которые вам не нужны.
4. Активируйте mod_rewrite:
1 |
sudo a2enmod rewrite |
5. Перезапустите Apache с помощью команды:
1 |
sudo systemctl restart apache2 |
Мы описали историю создания Apache, схему его работы, а также процедуру установки и настройки. Помимо этого мы разобрали Apache с двух сторон: рассказали о преимуществах и недостатках.
Apache — это самый популярный веб-сервер. Однако выбирать такую программу необходимо под потребности вашего сайта или проекта: например, для сайтов на CMS или любых других ресурсов с преобладанием динамического контента.