Apache — это кросплатформенный свободный веб-сервер. Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках, поддерживает IPv6 и т.д.
- 1 История
- 2 Архитектура
- 2.1 Ядро
- 2.2 Система конфигурации
- 2.3 Мультипроцессорные модели (MPM)
- 2.4 Система модулей
- 2.5 Механизм виртуальных хостов
- 2.6 Интеграция с другим ПО и языками программирования
- 2.7 Безопасность
- 2.8 Server Side Includes
- 3.1 Изменяем ssl-сертификат
История
Сервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию «a patchy» (англ. «заплаточка»), так как он устранял ошибки популярного тогда сервера Всемирной паутины NCSA HTTPd 1.3. В дальнейшем, с версии 2.х сервер был переписан заново и теперь не содержит кода NCSA, но имя осталось. На данный момент разработка ведётся в ветке 2.2, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности.
APACHE VS NGINX. Что выбрать? Сравнение двух популярных HTTP серверов.
Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты, среди которых СУБД Oracle и IBM WebSphere.
Архитектура
Ядро
Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов.
Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена.
Ядро Apache полностью написано на языке программирования C.
Система конфигурации
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
- Конфигурация сервера (httpd.conf).
- Конфигурация виртуального хоста (vhosts.d/).
- Конфигурация уровня директории (.htaccess).
Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.
Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).
Помимо этого, параметры могут быть заданы через ключи командной строки.
Мультипроцессорные модели (MPM)
Для веб-сервера Apache существует множество моделей симметричной мультипроцессорности. Вот основные из них:
worker | Apache Software Foundation | Linux, FreeBSD | Гибридная мультипроцессорно-мультипоточная модель. Сохраняя стабильность мультипроцессорных решений, она позволяет обслуживать большое число клиентов с минимальным использованием ресурсов. | Среднезагруженные веб-серверы. | Стабильный. |
pre-fork | Apache Software Foundation | Linux, FreeBSD | MPM, основанная на предварительном создании отдельных процессов, не использующая механизм threads. | Большая безопасность и стабильность за счёт изоляции процессов друг от друга, сохранение совместимости со старыми библиотеками, не поддерживающими threads. | Стабильный. |
perchild | Apache Software Foundation | Linux | Гибридная модель, с фиксированным количеством процессов. | Высоконагруженные серверы, возможность запуска дочерних процессов используя другое имя пользователя для повышения безопасности. | В разработке, нестабильный. |
netware | Apache Software Foundation | Novell NetWare | Мультипоточная модель, оптимизированная для работы в среде NetWare. | Серверы Novell NetWare | Стабильный. |
winnt | Apache Software Foundation | Windows | Мультипоточная модель, созданная для операционной системы Microsoft Windows. | Серверы под управлением Windows Server. | Стабильный. |
Apache-ITK | Steinar H. Gunderson | Linux, FreeBSD | MPM, основанная на модели prefork. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. | Хостинговые серверы, серверы, критичные к изоляции пользователей и учёту ресурсов. | Стабильный. |
peruser | Sean Gabriel Heacock | Linux, FreeBSD | Модель, созданная на базе MPM perchild. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. Не использует потоки. | Обеспечение повышенной безопасности, работа с библиотеками, не поддерживающими threads. | Стабильная версия от 4 октября 2007 года, экспериментальная — от 10 сентября 2009 года. |
Что такое Apache Kafka и зачем это нужно
Система модулей
Apache HTTP Server поддерживает модульность. Существует более 500 модулей[6], выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками. Модули могут быть, как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.
В модулях реализуются такие вещи, как:
- Поддержка языков программирования.
- Добавление функционала.
- Исправление ошибок или модификация основных функций.
- Усиление безопасности.
Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в виде модуля Apache.
Механизм виртуальных хостов
Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое.
Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и gid.
Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.
Интеграция с другим ПО и языками программирования
Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки.
К ним относятся:
- PHP (mod_php).
- Python (mod python, mod wsgi).
- Ruby (apache-ruby).
- Perl (mod perl).
- ASP (apache-asp).
Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, sh, Java.
Безопасность
Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:
- Ограничение доступа к определённым директориям или файлам.
- Механизм авторизации пользователей для доступа к директории по методу HTTP-Авторизации (mod_auth_basic) и digest-авторизации (mod_auth_digest).
- Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей.
- Запрет доступа к определённым типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных.
- Существуют модули, реализующие авторизацию через СУБД или PAM.
В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей.
Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя.
Для реализации шифрования данных, передающихся между клиентом и сервером используется механизм SSL, реализованный через библиотеку OpenSSL. Для удостоверения подлинности веб-сервера используются сертификаты X.509.
Существуют внешние средства обеспечения безопасности, например mod_security.
Server Side Includes
В версиях 1.3 и старше был реализован механизм Server Side Includes, позволяющий динамически формировать HTML-документы на стороне сервера.
Управлением SSI занимается модуль mod_include, включённый в базовую поставку Apache.
Настройки
Изменяем ssl-сертификат
cd /etc/ssl/apache2/ openssl req -new -newkey rsa:1024 -nodes -keyout server.key -x509 -days 5000 -out server.crt
Далее отвечаете на вопросы и перезапускаете Apache.
- Страницы, использующие устаревший тег source
- Руководства
- Apache
- Net
- Незавершённые статьи
Источник: aidalinux.ru
Веб сервер Apache (Web Апач) ➡ что это, как работает и какие у него преимущества
Apache HTTP-сервер – это так называемый свободный веб-сервер, представляющий собой кросплатформенное программное обеспечение. Apache поддерживает следующие операционные системы: BSD, Microsoft Windows, Linux, Mac OS, BeOS, Novell NetWare.
Как работает веб-сервер Apache?
Хоть Apache и называется веб-сервер, но в реальном положении вещей он является не сервером, а программой, которая запускается на сервере. Его задача установить соединение между сервером и браузером посетителей (Firefox, Google Chrome, Safari и др.) при доставке файлов туда и обратно между ними (клиент-серверная структура). Apache – это кроссплатформенное программное обеспечение, что значит оно хорошо работает как на Unix, так и на Windows серверах.
Когда посетитель хочет загрузить страницу вашего сайта, например, домашнюю страницу или страницу «О нас», его браузер отправляет запрос на ваш сервер и Apache возвращает ответ со всеми запрошенными файлами (текст, изображение и так далее). Сервер и клиент взаимодействуют по протоколу HTTP и Apache ответственен за гладкое и безопасное соединение между двумя машинами.
Apache хорошо и удобно настраиваемый поскольку имеет модульную структуру. Модули позволяют администраторам сервера включать или выключать дополнительную функциональность. У Apache есть модули безопасности, кэширования, редактирования URL, аутентификации по средством пароля и другие. Вы можете установить свою собственную конфигурацию через файл .htaccess, который является файлом настроек для Apache и поддерживается всеми тарифными планами Hostinger.
Ядро веб-сервера Апач
Ядро этого ПО, разрабатывается фондом Apache Software Foundation, который поддерживает огромное количество разработчиков по всему миру. Его основными функциями являются:
- Передача данных по HTTP;
- Обработка файлов;
- Загрузка и поддержка модулей.
Разумеется, сервер может функционировать без дополнительных модулей, однако в этом случае, его возможности крайне ограниченны.
Обслуживание серверов
Подбор, сборка и настройка серверов для решения любых задач. Абонентское обслуживание с круглосуточным мониторингом устройств. Настройка удаленного доступа и ограничение доступа к информации сотрудникам. Полное погружение в Вашу сферу.
- обслуживание и круглосуточный мониторинг устройств
- настройка системы архивации в подарок
- бесплатная консультация специалиста
- удаленная настройка сервера
Web-сервер Apache для систем Linux
Проект web-сервера Apache берет свое начало от сервера httpd. Пакет httpd был разработан Робом Макколом в Национальном центре по применению суперкомпьютеров (National Center for supercomputing, NCSA) в США. К 1995 году сервер httpd представлял собой один из самых популярных проектов по разработке web-серверов. Однако в том же году разработчик покинул NCSA и дальнейшее развитие проекта заморозилось.
Тогда небольшая группа высококвалифицированных web-администраторов занялась последующей поддержкой, модернизацией и развитием данного проекта. В дальнейшем эта группа администраторов собрала вокруг себя единомышленников и стала ядром команды, которая впоследствии получила название Apache Group Incorporated. В 1995 году она разработала обновления для пакета httpd 1.3 и в конечном счете выпустила очередную версию сервера под названием Apache 0.6.2. С тех пор эта группа всецело посвятила себя модернизации и совершенствованию данного сервера. С 1996 года этот проект является одним из самых популярных в мире.
В настоящее время существует три версии этого web-сервера, которые развиваются независимо друг от друга.
Версия 1.3.х
Серверы, которые маркируются этой версией, отличаются стабильной работой, многочисленными «заплатками» в системе безопасности и имеют в своей основе первоначальный движок, разработанный еще в те далекие времена. Основным их отличием от других параллельных разработок является отсутствие многочисленных дополнительных модулей, а также поддержки в их разработке.
То есть это web-сервер, лишенный всяческих излишеств, — при поддержке большинства технологий он остается компактным и быстрым в работе. Единственный его недостаток — это отсутствие поддержки IPv6 и многопроцессорности (потоков стандарта POSIX). В большинстве случаев эта версия сервера Apache используется только на UNIX-подобных системах, так как правильной оптимизации для других систем в данном пакете не предусмотрено. На текущий момент самой последней версией из этой линейки является Apache 1.3.39.
Версия 2.0.х
Пакеты Apache этой версии поддерживают практически все новейшие технологии. Движок web-сервера был полностью переписан, и практически все модули к нему также подверглись кардинальным изменениям. Эта ветвь Apache хотя и развивается отдельно от версии 2.2.х, но почти не отличается от нее, за исключением того, что в ней отсутствует большинство дополнительных модулей. Ядро пакета не только предполагает использование web-сервера в операционных системах UNIX, но и обеспечивает его быструю и эффективную работу с операционными системами BeOS, Windows и др. Все последние обновления по безопасности к этому web-серверу совмещены в версии 2.0.61.
Версия 2.2.х
Данная версия является самой продвинутой по сравнению с остальными. Пакеты этого типа сочетают в себе достоинства нового ядра 2.0 и дополнительных модулей, которые существенно расширяют возможности web-сервера. Отдельно стоит отметить полноценную поддержку протокола IPv6, мультипотоков, наличие большого количества модулей и простоту их разработки. В настоящий момент большинство дистрибутивов операционных систем на базе UNIX, содержат в себе пакет Apache именно этой версии. Последний релиз данного пакета — Apache 2.2.6.
Все вышеперечисленные версии доступны для загрузки на сайте разработчиков httpd.apache.org. Там же можно найти необходимые и дополнительные модули для web-сервера, в создании которых принимали участие не только главные разработчики, но и сторонние люди. Стоит отметить, что модули, написанные для версии 1.3.х, не будут работать для версий 2.0.х и 2.2.х, и наоборот, то есть каждая из версий предполагает использование только написанных для нее плагинов.
Установка
Как и большинство программ для Linux, пакет Apache распространяется по лицензии GPL, то есть бесплатно. Загрузить его можно с нескольких серверов, ссылки на которые расположены на сайте разработчиков. Web-сервер Apache представлен в виде tar.gz- или tar.bz2-архива для платформы Linux. В архиве находится исходный код, который необходимо скомпилировать для получения рабочей программы. Компиляция проходит обычным путем.
Прежде чем начать компиляцию, необходимо запустить файл для автоматической конфигурации пакета перед сборкой. Сделать это можно, разархивировав исходный код в отдельную папку и, находясь в ней, запустив файл ./configure. Данный скрипт автоматически определит настройки системы и сообщит о необходимых библиотеках, если таковые требуются для установки.
Также при запуске этого скрипта можно указать специальные настройки: исключить/добавить модули, указать папку для установки или имя пользователя, для которого этот сервис будет установлен. Более подробную информацию о возможных командах для скрипта можно почерпнуть на сайте разработчиков или в файле install, который находится в корне архива с исходным кодом.
После конфигурирования пакета необходимо его скомпилировать командой make и установить make install. По умолчанию в системах Linux web-сервер устанавливается в папку /usr/. Исполняемый файл находится в папке /usr/sbin, а кроме того, он может быть запущен обычной командой httpd из командной строки.
После установки все необходимые конфигурационные файлы будут перенесены в папку /etc/httpd/conf и /etc/httpd/conf.d, основным конфигурационным файлом сервера является файл httpd.conf, который содержит в себе все главные настройки. Поскольку httpd является, по сути, основным web-сервером для платформ Linux, он максимально интегрируется в систему при установке. По умолчанию он автоматически добавляется в системные сервисы, позволяя таким образом управлять ими через стандартную программную оболочку сервисов; подробнее о доступных командах можно узнать, набрав в командной строке service httpd.
Настройка
Установленный web-сервер готов к работе, и при наборе IP-адреса сервера должна отображаться стандартная страница приветствия. Она появляется в том случае, если в каталоге со страницами (папка по умолчанию /var/www/html) нет файлов index.htm, index.html или index.php. Следует понимать, что установка одного web-сервера не предполагает одновременной установки базы данных или отличных от CGI языков web-программирования. Такие пакеты, как PHP, MySQL и Perl (для работы скриптов CGI), устанавливаются отдельно и затем подключаются через конфигурационный файл httpd.conf и дополнительные модули. В версию 2.2.6 уже включены все библиотеки, необходимые для работы с этими сторонними приложениями.
Поскольку рассмотрение всех возможных настроек, которые могут быть описаны в конфигурационном файле, займет не одну страницу, остановимся лишь на основных возможных проблемах, задачах и их решениях. Каждая из настроек подробно описана закомментированными строками в самом конфигурационном файле.
В конфигурационном файле httpd.conf по умолчанию определены настройки web-сервера на максимальную производительность, при запуске сервиса автоматически запускаются до шести псевдопроцессов, которые отвечают за обработку данных. Такая конфигурация рассчитана на высокую нагрузку и большое количество клиентов сервера. Если web-сервер предназначен для небольшого сайта, состоящего из статических страниц html, а также не использует базу данных и большие объемы данных, подобные настройки не нужны. Для того чтобы уменьшить нагрузку на сервер (компьютер на котором установлен Apache), необходимо в конфигурационном файле httpd.conf отредактировать настройки MPM:
Источник: compress.ru