Введение в Apache. Установка и настройка сервера Apache

Этот материал написан специально для людей, которые только собираются примкнуть к стройным рядам веб-разработчиков или же просто хотят разобраться в некоторых тонкостях процесса. Здесь вы узнаете о том, что же такое сервер Apache, для чего он может быть нужен, где его взять и как правильно использовать. В дальнейшем мы постараемся как можно более тонко описать настройки Apache и его функциональные особенности, чтобы даже профессионалы смогли найти что-то новое для себя в этих материалах.

Для того чтобы в Интернете появился сайт, он должен быть размещен на сервере хостера или вашем собственном, подключенном к Сети и имеющем выделенный IP-адрес. Сервер представляет собой компьютер, на котором установлено специальное программное обеспечение, которое тоже называют "веб-сервером".

В мире существует огромное множество веб-серверов. Они отличаются друг от друга по функциональности и по предназначению. Сегодня мы поговорим о самом популярном из них, установленном на большинстве серверов хостинг-провайдеров. Сервер Apache удовлетворяет практически всем потребностям современных веб-разработок, но в то же время он достаточно прост, чтобы его устанавливали программисты для отладки своих программ.

В 1994 году сотрудник Национального центра приложений для суперкомпьютеров в Университете Иллинойса США (NCSA) Роб Маккул выложил в общее пользование первый веб-сервер, который так и назывался — NCSA HTTP daemon. Сервер получил популярность в узких кругах, но в середине 1994 года Маккул покинул университет, и разработки прекратились.

Небольшая группа заинтересованных веб-мастеров начала совместную работу над продуктом. Общаясь в дискуссионном листе по электронной почте, они разрабатывали "заплатки" и нововведения для сервера. Именно они и создали Apache Group, разработавшую первую версию Apache-сервера. Произошло это в апреле 1995 года, когда на основу (NCSA Server 1.3) были наложены все существующие "заплатки". Так появился первый официальный публичный релиз Apache 0.6.2.

Первая публичная версия Apache появилась в апреле 1995 года, а в декабре вышел релиз 1.0

Работа над сервером не прекращалась ни на день, и очень скоро он стал одним из самых популярных. После многочисленных испытаний 1 декабря 1995 года появилась версия 1.0, устойчивая и надежная. На протяжении всех этих лет и по сей день Apache остается совершенно бесплатным. Возможно, это тоже определило успех сервера, ведь, по данным NetCraft, Apache в данный момент установлен на 67% всех серверов в мире.

Сервер Apache сейчас установлен на 67% серверов по всему миру. В данный момент развивается сразу две ветки

В данный момент параллельно развиваются две ветки Apache – версии 2.0 и 1.3. Вторая версия претерпела значительное количество изменений, которые в первую очередь коснулись ядра программы и некоторых важных модулей. Так как модули, написанные сторонними разработчиками для версии 1.3, не будут работать в версии 2.0, "старый" Apache также поддерживается. Однако если вы собираетесь впервые установить Apache, то стоит присмотреться к новой версии.

Apache — полнофункциональный, расширяемый веб-сервер с открытым кодом

Итак, что же такое Apache? Это полнофункциональный, расширяемый веб-сервер, полностью поддерживающий протокол HTTP/1.1 и распространяющийся с открытым исходным кодом. Сервер может работать практически на всемх распространенных платформах. Существуют готовые исполняемые файлы сервера для Windows NT, Windows 9x, OS/2, Netware 5.x и нескольких UNIX-систем. При этом он очень прост в установке и конфигурации. В этом вы сможете убедиться несколько позднее.

Apache настраивается с помощью текстовых конфигурационных файлов. Основные параметры уже настроены "по умолчанию" и будут работать в большинстве случаев. Если вам не хватает функциональности штатного "Апача", то стоит присмотреться к распространяемым модулям, написанным Apache Group и сторонними разработчиками. Немаловажным преимуществом является то, что создатели активно общаются с пользователями и реагируют на все сообщения об ошибках.

Самая простая функция, которую может выполнять Apache – стоять на сервере и обслуживать обычный HTML-сайт. При получении запроса на определенную страницу сервер отправляет в ее ответ браузеру. Набираете адрес, открывается страница — все просто.

С помощью сервера Apache можно производить простую аутентификацию

Функция посложнее, которая заложена в протоколе HTTP/1.1 – аутентификация пользователей. С помощью штатных средств сервера Apache вы можете разграничить доступ к определенным страницам сайта для разных пользователей. Это нужно, например, для того чтобы сделать администраторский интерфейс к сайту. Для этого используются файлы.htaccess и.htpasswd, а также модули mod_auth и mod_access. Пользователи могут быть разбиты на группы, и для каждой из них можно назначить свои права доступа.

Сервер Apache поддерживает работу с технологией SSI

Для разделения дизайна и функциональной части сайта, а также для упрощения изменения статических объектов существует технология SSI. Она позволяет вам поместить всю повторяющуюся информацию в один файл (например, top.inc), а затем вставлять в страницы ссылку на нее. Затем, если понадобится изменить несколько строк в этой информации, то придется поменять их только в одном файле. Сервер Apache поддерживает эту технологию и позволяет использовать серверные включения в полном объеме.

На сервере Apache можно создавать пользовательские директории для веб-сайтов

Если на одном сервере с установленной операционной системой семейства Unix и сервером Apache заведено несколько пользователей, то каждому из них можно создать отдельную директорию. Точнее, она будет создаваться автоматически вместе с псевдонимом. Это делается с помощью модуля mod_userdir и директивы UserDir. Так, например, можно папке public_html в домашней папке пользователя сопоставить адрес www.site.ru/~user. В общем-то, так и делается на серверах большинства сайтов, предоставляющих бесплатный хостинг. Администратор сервера может разрешить или запретить определенным пользователям создавать домашние страницы, использовать SSI и другие функции сервера. Полноценный же хостинг обычно предусматривает создание отдельного виртуального сервера для каждого пользователя.

Вы можете настроить виртуальные хосты. Благодаря им на одном физическом сервере можно содержать несколько виртуальных

Сервер Apache был одним из первых серверов, которые начали поддерживать виртуальные сервера (хосты). Эта возможность позволяет размещать на одном физическом сервере несколько полноценных сайтов. У каждого из них может быть свой домен, администратор, IP-адрес и так далее.

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

Apaсhe поддерживает работу со скриптами PHP, CGI и другими

В данный момент большинство интернет-страниц являются динамическими. Это значит, что их внешний вид и наполнение формируется с помощью программного скрипта, написанного на одном из "языков" (их нельзя в полной мере назвать языками, определение достаточно условно). В данный момент наиболее сильно распространены технологии CGI и PHP . Разумеется, в Apache существует поддержка и того, и другого, плюс возможность подключать другие языки.

Модуль mod_cgi позволяет вам размещать на сервере CGI-скрипты. Вообще, это всего-навсего исполняемые файлы, написанные на одном из допустимых языков программирования. Они могут содержаться как в откомпилированном виде (например, так делают, если пишут CGI на языке C++), так и в виде исходного текста (если на сервере установлен Perl, то программист может помещать и такие файлы. Иногда они имеют расширение.pl).

Что касается PHP, то возможность интеграции его в Apache предусмотрена разработчиками самого PHP. Apache же выполняет только функции посредника между скриптом и компилятором. Существует два способа интеграции PHP в Apache. Первый – установка специального модуля, расширяющего возможности сервера, и тогда он сам становится способным "компилировать" скрипты. И второй – установка в конфигурационных файлах связей между php-файлами и самим компилятором (он находится на диске в виде файлов.cgi или.exe).

В последней версии Apache существует модуль для работы с сильной криптозащитой SSL/TSL

На основе сервера Apache можно создавать не только простые любительские сайты, но и ресурсы, требующие серьезной криптографической защиты передаваемых данных. Специально для этого был разработан протокол SSL/TLS, а его поддержка была встроена в Apache 2.0. С помощью специального модуля можно осуществлять аутентификацию на основе именных сертификатов, что позволяет практически наверняка гарантировать подлинность пользователя.

Apache ведет подробные протоколы всего происходящего на сервере

Ну и, разумеется, сервер Apache может вести протокол всех действий, совершаемых с ним. Причем администратор может сам выбрать степень подробности протокола. Протоколы ведутся отдельно для ошибок, для успешных операций и для каждого виртуального хоста. Словом, полный набор для тщательного анализа появляющихся ошибок.

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

Apache HTTP-сервер (от англ. a patchy server , "сервер с заплатками", кроме того, здесь есть аллюзия и к индейскому племени апачей. Среди русских пользователей общепринято искажённое произношение апа́ч ) - это полнофункциональный, расширяемый веб-сервер , полностью поддерживающий протокол HTTP/1.1, с открытым кодом.

Сервер может работать практически на всех распространенных платформах. Существуют готовые исполняемые файлы сервера для Windows NT, Windows 9x, OS/2, Netware 5.x и нескольких UNIX-систем. При этом он очень прост в установке и конфигурации.

Собственно, именно гибкость конфигурации, а также его надежность, считаются основными достоинствами Apache-сервера. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.

Apache настраивается с помощью текстовых конфигурационных файлов. Основные параметры уже настроены «по умолчанию» и будут работать в большинстве случаев. Если же функциональности штатного «Апача» не хватает, то возможно использовать разнообразные модули, написанные Apache Group и сторонними разработчиками. Немаловажным преимуществом является то, что создатели активно общаются с пользователями и реагируют на все сообщения об ошибках.

Самая простая функция, которую может выполнять Apache – стоять на сервере и обслуживать обычный HTML-сайт. При получении запроса на определенную страницу сервер отправляет ее ответ браузеру. В качестве запроса выступает адрес, набранный в адресной строке браузера.

Для разделения дизайна и функциональной части сайта, а также для упрощения изменения статических объектов существует технология SSI. Она позволяет помещать всю повторяющуюся информацию в один файл (например, top.inc), а затем вставлять в страницы ссылку на нее. Затем, при необходимости изменения информации,– меняется информация только в одном файле. Сервер Apache поддерживает эту технологию и позволяет использовать серверные включения в полном объеме.

Функции Web-сервера выполняет не сам компьютер, а программа, установленная на нём: то есть, когда браузер пользователя подключается к Web-серверу и посылает заголовок GET (просьба передать файл), его запрос обрабатывает именно Apache. Apache проверяет, существует ли указанный в заголовке GET файл, и, если есть, отправляет его вместе с заголовками браузеру.

Apache – это своего рода стандарт Web-сервера в Интернете. Его основным конкурентом является IIS (Internet Information Server) от Microsoft, который работает под Windows. Apache, хотя и существуют его версии под Windows, преимущественно устанавливается на Unix-подобных операционных системах – Lin ux и FreeBSD. Нужно также заметить, что большинство хостеров используют именно Apache, a не IIS. IIS обычно устанавливается на корпоративных серверах, работающих под Windows.

Сервер Apache был одним из первых серверов, которые начали поддерживать виртуальные сервера (хосты). Это дает возможность размещения на одном физическом сервере несколько полноценных сайтов. У каждого из них может быть свой домен, администратор, IP-адрес и так далее.

В Apache существует поддержка технологии CGI и PHP, а также возможность подключения языков. Это значительно упрощает работу с динамическими интернет-страницами (которыми, по сути, сегодня являются почти все веб-страницы).

На данный момент сервер Apache сейчас установлен на 67% серверов по всему миру.

История создания

Сервер Apache разработан и поддерживается организацией Apache Project.

Первоначально он был разновидностью Web-сервера NCSA, разработанного в Национальном центре разработок суперкомпьютеров Иллинойского университета. Но в 1994 году главный разработчик NCSA ушел из проекта, оставив своих последователей самостоятельно разбираться в его сервере. Со временем начали появляться исправления и дополнения к серверу NCSA – так называемые patches (патчи, в переводе с английского – «заплатки»). А в апреле 1995 года вышла первая версия сервера Apache, который был основан на версии 1.3 сервера NCSA. Первая версия Apache просто вобрала в себя все известные исправления сервера NCSA. Да и само название Apache произошло именно от этого – «A PatCHy».

Позже Apache стал самостоятельной разработкой. Со второй версии код был переписан заново таким образом, чтобы в нем не содержалось ни намека на код NCSA. Сейчас сервер Apache поддерживается группой программистов-добровольцев Apache Group.

Сервер Apache изначально разрабатывался для ОС Linux и Unix, но со временем были выпущены его версии для ОС Windows и OS/2.

На данный момент разработка ведётся в ветке 2.2, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности. Сегодня последняя версия ветки 2.4 - это версия 2.4.3, вышедшая 21 августа 2012. Для первой версии последние исправления маркируются как 1.3.42.

Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты, среди которых СУБД Oracle и IBM WebSphere.

С апреля 1996 и до настоящего времени является самым популярным HTTP-сервером в Интернете. Наивысшие показатели были достигнуты в 2012 году – Apache работал на 67% серверов всего мира. В 2011 году его доля составляла 59%, в 2009-ом – 46%, а в 2007-ом – 51%.

Схема внутренних системных вызовов Apache

Архитектура Apache

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

Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако функциональность такого решения крайне ограничена.

Ядро Apache полностью написано на языке программирования C.

Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:

  • Конфигурация сервера (httpd.conf)
  • Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf)
  • Конфигурация уровня директории (.htaccess)

Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры. Часть модулей использует в своей работе конфигурационные файлы операционной системы (например, /etc/passwd и /etc/hosts). Помимо этого, параметры могут быть заданы через ключи командной строки.

Для веб-сервера Apache существует множество моделей симметричной мультипроцессорности. Также Apache HTTP Server поддерживает модульность. Существует более 500 модулей, выполняющих различные функции. Несмотря на то, что часть из них разрабатывается непосредственно командой Apache Software Foundation, большинство существующих модулей разработано сторонними open source-разработчиками.

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

С помощью модулей можно реализовать следующее:

  1. Расширение поддерживаемых языков программирования
  2. Добавление дополнительных функций либо модификация основных.
  3. Исправление ошибок
  4. Усиление безопасности.

Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в виде модуля Apache.

Сервер Apache оснащен встроенным механизмом виртуальных хостов. Благодаря этому возможно полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое.

Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и guid.

Также существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.

Интеграция с другим ПО и языками программирования

Для успешной интеграции сервера с различным программным обеспечением, а также с языками программирования существуют дополнительные модули:

  • PHP (mod_php)
  • Python (mod python, mod wsgi)
  • Ruby (apache-ruby)
  • Perl (mod perl)
  • ASP (apache-asp)
  • Tcl (rivet)

Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на всех языках программирования, в том числе C, C++, Lua, 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.

Языки

Возможность определения сервером местоположения пользователя появилась с версии 2.0. С этого момента все сервисные сообщения, а также сообщения об ошибках и событиях, воспроизводятся на нескольких языках с использованием SSI-технологии.

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

Обработка событий

Администратор может установить собственные страницы и обработчики для всех HTTP ошибок и событий, таких как 404 (Not Found) или 403 (Forbidden). Существует возможность запуска скриптов и отображения сообщений на разных языках.

Server Side Includes

В версиях 1.3 и старше был реализован механизм Server Side Includes, позволяющий динамически формировать HTML-документы на стороне сервера.

Управлением SSI занимается модуль mod_include, включённый в базовую поставку Apache.

Apache vs IIS

Споры о выборе Apache или IIS являются столь же давними, как и споры о выборе ОС – Linux или Windows. Поэтому, прежде чем сделать окончательный выбор, стоит адекватно оценить преимущества и недостатки обеих.

Основные преимущества Apache и серверных систем LAMP:

  1. низкие затраты, так как нет необходимости приобретать лицензии на программное обеспечение;
  2. гибкое программирование благодаря открытому исходному кода;
  3. улучшенная безопасность, так как Apache был разработан для операционной системы не-Windows (а большинство вредоносных программ написано под ОС от Microsoft), то он всегда имел репутацию более безопасной системы, чем IIS производства Microsoft.

Преимущества Internet Information Services (IIS):

  1. Windows и IIS поддерживаются корпорацией Microsoft, тогда как Apache поддерживается только пользовательским сообществом;
  2. IIS поддерживает платформу.NET Microsoft и сценарии ASPX;
  3. модули позволяют включить потоковую передачу аудио и видеоконтента.

Сравнив преимущества двух данных серверов, можно сделать несколько выводов. Во-первых, если при выборе сервера стоимость лицензий является главным критерием, то однозначно стоит выбирать комбинацию LAMP, поскольку она избавлена от затрат на лицензирование. Во-вторых, если исходить из критерия безопасности, то Apache снова лидирует – его система несколько более эффективна. В-третьих, IIS работает только на ОС Windows и любые вариации в выборе операционной системы снова приведут к Apache.

Единственный же вариант, при котором связка IIS на платформе Windows станет наилучшим выбором, это максимально удобные для пользователя средства администрирования как главный критерий. Причем, выполняемый сценарий должен полагаться исключительно на ASPX.

Впрочем, возможно разработать решение, которое будет поддерживать работу на обоих серверах.

Если Apache всегда казался вам черным ящиком? Пришло время узнать, что происходит за кулисами!

Apache - самый популярный веб-сервер.

Задача веб-сервера заключается в том, чтобы принимать запросы от клиентов и отправлять ответы на эти запросы. Веб-сервер получает URL-ссылку, переводит его в имя файла (для статических запросов) и отправляет этот файл через Интернет с локального диска или, на пример, переводит его на имя программы (для динамических запросов), выполняет ее, а затем отправляет выходные данные этой программы обратно через Интернет запрашивающей стороне. Если по какой-либо причине веб-сервер не смог обработать и завершить запрос, вместо этого он отправит сообщение об ошибке. Слово, веб-сервер, может ссылаться на сам компьютер (компьютер / оборудование) или на программное обеспечение, которое получает запросы и отправляет ответы.

Apache является самым популярным веб-сервером (после него идет Microsoft IIS). Можно назвать несколько причин его популярности:

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

Что такое Apache?

Функциональность, которая вам не нужна или важна, может быть легко удалена.

HTTP-сервер Apache - это программное обеспечение (или программа), которое работает в фоновом режиме в соответствующей операционной системе, поддерживает многозадачность и предоставляет услуги для других приложений, которые к ней подключаются, например, клиентские веб-браузеры. Apache был впервые разработан для работы с операционными системами Linux / Unix, но позже был адаптирован для работы в других системах, включая Windows и Mac. Бинарный файл Apache, работающий под UNIX, называется HTTPd (сокращенно для HTTP-daemon), а под win32 называется Apache.exe .

Установка Apache на Linux не требует много навыков программирования (хотя это не слишком легко). Его установка на платформе Windows прямолинейна, так как вы можете запускать ее через графический интерфейс пользователя.

Оригинальное ядро ​​Apache является довольно простым и содержит ограниченное количество функций. Его сила скорее связана с дополнительной функциональностью, внедренной во многие модули, которые написаны программистами и могут быть установлены для расширения возможностей сервера. Чтобы добавить новый модуль, все, что вам нужно сделать, это установить его и перезапустить сервер Apache. Функциональность, в которой вы не нуждаетесь или хотите, может быть легко удалена, что на самом деле считается хорошим моментом, так как она делает сервер маленьким и легким, он начинает работать быстрее, потребляет меньше системных ресурсов и памяти и делает сервер менее подверженным уязвимостям в плане безопасности. Сервер Apache также поддерживает сторонние модули, некоторые из которых были добавлены в Apache 2 как постоянные функции. Сервер Apache очень легко интегрируется с другими приложениями с открытым исходным кодом, такими как PHP и MySQL, что делает его еще более мощным, чем он есть.

Веб-сервер в его простейшей форме - это компьютер со специальным программным обеспечением и подключением к Интернету, которое позволяет ему взаимодействовать с другими устройствами.

Каждое устройство, подключенное к сети, имеет IP-адрес, через который другие подключаются к нему и общаются с ним. Этот IP-адрес похож на обычный адрес, который вам нужен в реальной жизни, чтобы позвонить или посетить кого-то. Если у них нет адреса, вы не знаете, как позвонить или связаться с ними. IP-адреса служат точно для такой же цели. Если у устройства не было такого устройства, другие компьютеры в той же сети не знали бы, как его достичь.

Сервер Apache предлагает ряд услуг, которые клиенты могут использовать. Эти службы предлагаются с использованием различных протоколов через разные порты и включают в себя: протокол передачи гипертекста (HTTP), обычно через порт 80, простой протокол передачи почты (SMTP), обычно через порт 25, службу доменных имен (DNS) для сопоставления доменных имен их соответствующие IP-адреса, обычно через порт 53 и протокол передачи файлов (FTP) для загрузки и скачивания файлов, обычно через порт 21.

Как работает Apache

Основная роль Apache связана с коммуникацией по сетям и использует протокол TCP / IP (протокол управления передачей / интернет-протокол, который позволяет устройствам с IP-адресами в одной сети взаимодействовать друг с другом).

Протокол TCP / IP представляет собой набор правил, которые определяют, как клиенты обрабатывают запросы и как реагируют серверы, и определяют, как данные передаются, доставляются, принимаются и подтверждаются.

Сервер Apache настроен для работы через файлы конфигурации, в которые добавляются директивы для управления его поведением. В своем состоянии ожидания Apache прослушивает IP-адреса, указанные в его файле конфигурации (HTTPd.conf). Всякий раз, когда он получает запрос, он анализирует заголовки, применяет правила, указанные для него в файле Config, и принимает меры.

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

Поскольку IP-адреса трудно запомнить, мы, как посетители определенных сайтов, обычно вводим соответствующие им имена доменов в поле URL-адреса в наших браузерах. Затем браузер подключается к DNS-серверу, который переводит имена доменов на их IP-адреса. Затем браузер берет возвращаемый IP-адрес и подключается к нему. Браузер также отправляет Host header с запросом, чтобы, если сервер размещает несколько сайтов, он будет знать, какой из них должен обслуживать.

Например, ввод текста на www.google.com в поле адреса вашего браузера может отправить следующий запрос на сервер по этому IP-адресу:

GET / HTTP/1.1 Host: www.google.com

Первая строка содержит несколько фрагментов информации. Во-первых, существует метод (в данном случае это GET), URI, который указывает, какую страницу нужно извлечь или какую программу нужно запустить (в этом случае это корневой каталог, обозначенный /), и, наконец, есть HTTP-версия (которая в данном случае является HTTP 1.1).

HTTP - это протокол без ответа.

HTTP - это протокол без ответа. Это набор правил, регулирующих связь между клиентом и сервером. Клиент (обычно, но не обязательно веб-браузер) делает запрос, сервер отправляет ответ, а связь прекращается. Сервер не ожидает дополнительной связи, как в случае с другими протоколами, которые остаются в состоянии ожидания после завершения запроса.

Если запрос выполнен успешно, сервер возвращает код состояния 200 (что означает, что страница найдена), заголовки ответов вместе с запрошенными данными. . Заголовок ответа сервера Apache может выглядеть примерно так:

HTTP/1.1 200 OK Date: Sun, 10 Jun 2012 19:19:21 GMT Server: Apache Expires: Wed, 11 Jan 1984 05:00:00 GMT Cache-Control: no-cache, must-revalidate, max-age=0 Pragma: no-cache Last-Modified: Sun, 10 Jun 2012 19:19:21 GMT Vary: Accept-Encoding,User-Agent Content-Type: text/html; charset=UTF-8 Content-Length: 7560

Первая строка в заголовке ответа - это строка состояния. Он содержит версию HTTP и код состояния. Далее следует дата, а затем некоторая информация о хост-сервере и извлеченных данных. Заголовок Content-Type позволяет клиенту узнать тип извлеченных данных, чтобы он знал, как его обрабатывать. Content-Lengthlets клиент знает размер тела ответа. Если запрос не пошел, клиент получит код ошибки и сообщение, например, следующий заголовок ответа в случае ошибки страницы, не найденной:

HTTP/1.1 404 Not Found

Протокол TCP / IP

TCP / IP - это фактически два протокола, построенные один поверх другого.

TCP / IP - это фактически два протокола, построенные один поверх другого. IP-протокол отвечает за передачу переданных данных из одной точки в другую. Он переносит данные между двумя точками, разбивает их на меньшие пакеты, присоединяет исходный и целевой адреса к каждому пакету и передает данные.

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

После получения сообщения сторона-получатель отправляет сообщение с подтверждением (ACK) отправителю, если все идет хорошо, сообщая ему о прибытии данных. Если что-то пойдет не так, как, например, возникновение ситуации с потерей данных, адресат отправляет сообщение Not Acknowledged (NAK), сообщая об этом отправляющему узлу проблемы и информируя его о необходимости повторной передачи пакета данных.

Как обсуждалось ранее, Apache предлагает множество сервисов, с которыми клиенты могут захотеть подключиться, чтобы использовать или извлекать выгоду. TCP управляет каждой службой, так что к ней осуществляется доступ через определенный порт для различения различных служб. Таким образом, он гарантирует, что любой данный интерфейс (или хост) может предлагать несколько сервисов. . Поэтому, когда клиент подключается к хосту, он передает номер порта вместе с IP-адресом. Браузеры используют протокол HTTP, который по умолчанию использует порт 80, поэтому нет необходимости в дальнейшей спецификации.

Следующее изображение представляет собой быстрый снимок моего FTP-программного обеспечения (WinScp). Как вы видите, для FTP-сервера мне не только нужно указать IP-адрес (или ввести имя домена), но мне также необходимо указать номер порта, через который мой сервер предоставляет услугу. В случае FTP номер порта равен 21. В случае SFTP (защищенный FTP) номер порта равен 22.

В UNIX список сервисов, предлагаемых вместе со своими номерами портов, можно найти в файле / etc / services. Следующая команда отобразит содержимое файла:

More /etc/services

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

Под окнами файл называется Services, и его можно найти в папке C: \ WINNT \ system32 \ drivers \ etc \

Inetd

Чтобы сохранить системные ресурсы, UNIX обрабатывает многие свои службы через internet-daemon (inetd), отличие от постоянно работающего daemon. Inetd - суперсервер, который слушает различные порты и обрабатывает запросы на соединение, получая их, инициируя новую копию соответствующего daemon (программы). Новая копия программы затем берет ее оттуда и работает с клиентом, а inted возвращается к прослушиванию портов сервера, ожидающих обработки новых клиентских запросов. После того, как запрос обработан и связь завершена, daemon завершает работу.

Общая структура

Как уже упоминалось ранее, Apache может быть установлен в различных операционных системах. Независимо от используемой платформы, размещенный веб-сайт, как правило, имеет четыре основных каталога: htdocs , conf , logs , cgi-bin .

htdocs является каталогом документов веб-сервера Apache по умолчанию, то есть это общедоступный каталог, содержимое которого обычно доступно для клиентов, подключающихся через Интернет. Он содержит все статические страницы и динамический контент, которые будут обслуживаться после получения HTTP-запроса для них. Поскольку файлы и подкаталоги в htdocs доступны для общественности, правильная обработка разрешений на файлы имеет большое значение, чтобы не поставить под угрозу безопасность и безопасность сервера.

conf - это каталог, в котором расположены все файлы конфигурации сервера. Файлы конфигурации в основном представляют собой текстовые файлы, в которых добавляются директивы для управления поведением и функциональностью веб-сервера. Каждая директива обычно помещается в отдельную строку, а хеш (#) указывает комментарий, поэтому строка, пройденная им, игнорируется.

logs - это каталог, в котором хранятся журналы сервера, журналы доступа Apache и журналы ошибок. HTTP-сервер Apache предоставляет множество различных механизмов для регистрации всего, что происходит на нем, от первоначального запроса через процесс сопоставления URL-адресов до окончательного разрешения соединения, включая любые ошибки, которые могли произойти в процессе. В дополнение к этому сторонние модули могут предоставлять возможности ведения журнала или вводить записи в существующие файлы журналов, а приложения, такие как скрипты PHP или другие обработчики, могут отправлять сообщения в журнал ошибок сервера.

cgi-bin - это каталог, в котором хранятся скрипты CGI. CGI (Common Gateway Interface) определяет способ взаимодействия веб-сервера с внешними программами создания контента, которые часто называются CGI-программами или CGI-скриптами. Это программы или сценарии оболочки, которые написаны для выполнения Apache от имени своих клиентов.

Важно отметить, что вышеупомянутые имена файлов и каталогов (а также местоположения) могут отличаться от одного сервера к другому в зависимости от установленного аромата Apache и операционной системы, в которой он работает. Роли, однако, остаются прежними.

Вывод

С более чем половиной сайтов в Интернете, работающих на нем.

Apache был самым популярным веб-сервером в Интернете с 1996 года, связанный с более чем половиной сайтов в Интернете, работающих на нем. Он сыграл ключевую роль в формировании и создании World Wide Web, чем он и является до сегодняшнего дня. Причины его успеха очевидны и, как видно, он, вероятно, останется в лидерах, по крайней мере, в течение довольно долгого времени. Наш сегодняшний туториал должен стать вводной сессией для этого мощного программного обеспечения, и я надеюсь, что мы помогли понять, насколько Apache отличный инструмент и как он работает.

Apache HTTP-сервер - это так называемый свободный веб-сервер, представляющий собой кросплатформенное программное обеспечение. Apache поддерживает следующие операционные системы: BSD, Microsoft Windows, Linux, Mac OS, BeOS, Novell NetWare.

Как правильно настроить Apache?

Обычно настройка Apache-сервера происходит через файл.htaccess (детальная инструкция). Этот файл лежит на сервере, на котором находится ваш сайт. А сам сервер считывает его содержимое и применяет настройки, которые там указаны. Ниже мы перечислим основные параметры которые изменяются в файле.htaccess и будут полезны для вебмастеров.

Автоматические перенаправления с одной страницы на другую

  • Перенаправление с http://www.site.com на http://site.com
  • Обратное перенаправление с http://site.com на http://www.site.com
  • Переезд со старого домена на новый
  • site.com/page или site.com/page/ перенаправляем на site.com/page.html
  • Обратное с site.com/page.html на site.com/page
  • Убираем слеш в конце url-а (было site.com/page/, стало site.com/page)
  • Перенаправление всех страниц одного раздела site.com/razdel-1/razdel-2/page на на страницы другого раздела site.com/razdel-1/page

Обработка ошибок

  • Если произойдет ошибка, то пользователю вместо стандартной лабуды, покажет красивую страничку, которую зададите вы.

Настройка безопасности сайта

  • Защита от инъекций
  • Защита от кражи картинок
  • Блокирование пользователей по IP
  • Защита файлов и папок
  • Работа с User-агентами

Кодировка страниц сайта

  • Работа с кодировкой страниц сайта, на уровне сервера.

Оптимизация работы сайта

Настройки PHP

  • Работа с параметрами PHP, которые задаются на уровне сервера.

Информация про Apache

Надежность и гибкость конфигурации главные достоинства Apache. Благодаря этому ПО можно осуществлять подключение внешних модулей, использующихся для предоставления данных, модифицировать сообщения об ошибках, применять СУБД для аутентификации пользователей. Apache поддерживает IPv6.

Начиная с апреля 1996 года и до настоящего времени Apache является самым распространенным и популярным HTTP-сервером в сети Интернет. Согласно статистическим данным в августе 2007 HTTP-сервером работал на 51% всех веб-серверов, в мае 2009 года этот показатель снизился до 46%, а в январе 2011 года вырос до 59%. На сегодняшний день более 59% от общего количества веб-сайтов обслуживаются веб-сервером Apache. Разработкой и поддержкой Apache занимаются специалисты открытого сообщества разработчиков под эгидой Apache Software Foundation. Apache включен в большинство программных продуктов, среди которых IBM WebSphere и СУБД Oracle.

Apache оснащен встроенным механизмом виртуальных хостов. Благодаря этому на одном IP-адресе можно обслуживать большое количество веб-проектов (доменных имен), при этом отображая для каждого из них свое содержимое. Для каждого виртуального хоста имеется возможность указать свои настройки модулей и ядра, а также установить ограничения к доступу ко всему сайту либо некоторым файлам. С помощью Apache-ITK для каждого виртуального хоста можно запускать процесс httpd с идентификаторами gid и uid. Также есть модули, которые позволяют ограничивать и учитывать ресурсы сервера (трафик, RAM, CPU) отдельно для каждого виртуально хоста.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то