Что такое 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 основана на текстовых конфигурационных файлах. Эти файлы отвечают за каждый из трёх уровней:
Файл уровня виртуального хоста — 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 сервер, по каким принципам он работает и дали подробное описание плюсов и минусов его использования.
Установка и настройка сервера Apache
Установить Apache в Linux можно с помощью нескольких команд, но программа предоставляет очень большое количество настроек, которые можно изменить, а также модулей, после включения которых она будет работать лучше. В этой статье будет рассмотрена установка и настройка Apache, в качестве основной системы мы будем использовать Ubuntu, но вы можете повторить эти действия в любом другом дистрибутиве. Будет рассмотрена не только установка самой программы, но и способы ее настройки, настройка виртуальных хостов apache, а также самые полезные модули.
Установка Apache
На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4. Как я уже говорил, в Linux программа устанавливается буквально в пару команд. Для установки в Ubuntu сначала обновим систему до самой новой версии:
sudo apt update
sudo apt upgrade
Затем установка apache2:
sudo apt install apache2
В других дистрибутивах пакет программы называется либо так, либо httpd и его установка у вас не вызовет трудностей.
После завершения установки нужно добавить веб-сервер в автозагрузку, чтобы не запускать его вручную после включения компьютера:
sudo systemctl enable apache2
Настройка Apache
Уже прошло то время, когда конфигурация Apache хранилась в одном файле. Но оно и правильно, когда все распределено по своим директориям, в конфигурационных файлах легче ориентироваться.
Все настройки содержатся в папке /etc/apache/:
Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.
Сначала давайте рассмотрим главный файл конфигурации:
Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:
Здесь доступны такие основные опции:
У нас остался файл /etc/apache2/ports.conf:
В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.
Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.
Дальше поговорим немного о htacess. Совсем немного.
Настройка сервера Apache через htaccess
А в остальном, здесь может выполняться любая настройка сервера apache, от включения модулей, до обычного изменения доступа к папке. Поскольку все параметры мы уже рассмотрели просто приведем пару примеров:
Order Deny,Allow
Deny from all
RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]
Но это очень обширная тема и выходит за рамки этой статьи.
Настройка модулей Apache
Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:
Включить модуль можно командой:
sudo a2enmod имя_модуля
sudo a2dismod имя_модуля
После включения или отключения модулей нужно перезагрузить apache:
sudo systemctl restart apache2
Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:
Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.
Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:
a2disconf имя модуля
Как вы убедились, включать модули очень просто. Давайте включим несколько необходимых, но не включенных по умолчанию модулей:
sudo a2enmod expires
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2enmod ssl
Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.
Настройка виртуальных хостов Apache
Было бы не совсем удобно, если на одной физической машине можно было размещать только один сайт. Apache может поддерживать сотни сайтов на одном компьютере и выдавать для каждого из них правильное содержимое. Для этого используются виртуальные хосты. Сервер определяет к какому домену приходит запрос и отдает нужное содержимое из папки этого домена.
Настройки хостов Apache расположены в папке /etc/apache2/sites-available/. Для создания нового хоста достаточно создать файл с любым именем (лучше кончено с именем хоста) и заполнить его нужными данными. Обернуть все эти параметры нужно в директиву VirtualHost. Кроме рассмотренных параметров здесь будут использоваться такие:
Виртуальные хосты, как и модули нужно активировать. Для этого есть специальные утилиты. Чтобы активировать наберите:
sudo a2ensite test.site
sudo a2dissite test.site
Настройка виртуальных хостов Apache завершена и на публичном сервере это все бы уже работало, но если вам нужна настройка Apache на домашней машине, то вы ваш новый сайт не откроется в браузере. Браузер не знает такого сайта. И откуда ему знать? DNS службы не могут ничего сообщить об этом доменном имени. Но в системе Linux мы можем сами указать ip адреса для доменных имен в файле /etc/hosts. Поэтому добавляем в конец файла такие строки:
127.0.0.1 test.site
127.0.0.1 www.test.site
Вот, ну теперь будет работать, открывайте браузер, проверяйте.
Выводы
Вот и все. Установка и настройка Apache linux завершена, вы можете использовать программу для размещения ваших сайтов. Более того, вы не просто настроили ее, вы разобрались со всеми подробностями и теперь знаете чуточку больше. Если у вас остались еще вопросы, пишите в комментариях!
Что такое 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 работает на текстовых файлах с прописанными настройками. Она подразделяется на три условных уровня, для каждого из которых имеется свой конфигурационный файл:
Обычно конфигурационные файлы Apache находятся в папке «conf», а дополнительные конфигурационные файлы во вложенной в нее папке «extra». Внести изменения можно как через редактирование самого файла, так и через командную строку.
Виртуальные хосты
Веб-хост – это компонент сервера, отвечающий за обслуживание одного размещенного на нем объекта (сайта, виртуального сервера). Система виртуальных хостов Apache позволяет одновременно запускать несколько проектов с одного IP-адреса.
В Apache можно установить настройки модуля и ядра, а также вводить лимиты на потребление серверных ресурсов (трафик, RAM, CPU) для каждого виртуального хоста в отдельности. Это технологическая основа всего механизма веб-хостинга.
Достоинства и недостатки 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!


















