Что значит 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? Это программное обеспечение с открытым исходным кодом, веб-сервер, который обеспечивает работу около 46% сайтов по всему миру. Официальное название – Apache HTTP Сервер , поддерживается и развивается компанией Apache Software Foundation.

Веб-сервер позволяет владельцам сайтов обслуживать их контент в интернете, о чём понятно с самого название “веб-сервер”. Apache один из самый старых и надёжный веб-серверов с первой версией выпуска более 20 лет назад в 1995 году.

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

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

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

Работа веб-сервера – обслуживать сайт в интернете. Для этого он выполняет роль посредника между компьютером сервера и компьютером клиента. Он берёт контент с сервера на каждый запрос пользователя и доставляет его в сеть.

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

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

Как работает веб-сервер Apache?

Хоть Apache и называется веб-сервер, но в реальном положении вещей он является не сервером, а программой, которая запускается на сервере. Его задача установить соединение между сервером и браузером посетителей (Firefox, Google Chrome, Safari и др.) при доставке файлов туда и обратно между ними (клиент-серверная структура). Apache – это кроссплатформенное программное обеспечение, что значит оно хорошо работает как на Unix, так и на Windows серверах.

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

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

Apache и другие веб-сервера

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

Когда Вы хотите открыть в своем браузере какой-либо сайт, Вы набираете в адресной строке его адрес. Браузер обращается к серверу и, образно говоря, говорит ему: «Выдай-ка мне вот это сайт!». Web-сервер – это та программа, которая этот запрос принимает и выполняет, отправляя Вам запрошенный сайт.

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

Как можно управлять Apache?

Управление Apache осуществляется путем добавления в файл.htaccess специальных директив. По сути дела, инструкций, говорящих web-серверу как поступать в той или иной ситуации. Файл – это обычный текстовый файл, который можно либо создать непосредственно на сервере, используя, к примеру, текстовый редактор vi, либо создать у себя на компьютере и закачать на сервер по протоколу FTP .

Как можно поставить пароль на директорию?

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

  • AuthName ProtectedZone Вместо ProtectedZone можно написать все, что угодно. Это название защищенной области, оно будет показываться в браузере при запросе пароля, являясь по сути дела подсказкой пользователю. Если Вы хотите использовать русские буквы или же более одного слова, необходимо использовать кавычки. Пример: AuthName «Введите пароль для входа»
  • AuthType Basic Это метод шифрования пароля. Практически всегда используется именно данный вид шифрования. Пример: AuthType Basic
  • AuthUserFile /полный_путь_к_файлу/.htpasswd Это путь к файлу, в котором будут храниться логины и пароли. Он может иметь практически любое имя и располагаться в любом каталоге, главное, чтобы web-сервер мог его прочитать, что требует установки соответствующих прав доступа к этому файлу (на нашем сервере – 644). Однако, традиционно такие файлы называют.htpasswd. Пример: AuthUserFile /home/test/www/site1/public_html/.htpasswd
  • require valid-user Эта строка говорит о том, что доступ в защищенную директорию будет разрешен всем пользователям, чьи логины и пароли есть в файле.htpasswd. Если нужно дать доступ конкретным пользователям, то тогда указывается require user логины_пользователей_через_пробел. Пример: require user vasya kolya petya Пример: require valid-user

Как редактировать файл.htpasswd?

Файл паролей.htpasswd – это обычный текстовой файл. Каждый пользователь описан в нем одной строкой вида логин:шифрованый_пароль. Для шифрования паролей используется специальная программа htpasswd. Обратите внимание, в файл нельзя просто вручную записать пароль, пароль обязательно должен быть зашифрован программой htpasswd.

Если файл.htpasswd еще не существует, программа htpasswd должна быть запущена с ключом -c:
htpasswd -c /полный_путь_к_файлу/.htpasswd логин_пользователя
Пример: htpasswd -c /home/test/www/site1/public_html/.htpasswd vasya

При этом программа htpasswd создаст файл.htpasswd, запросит пароль для пользователя и создаст запись о пользователе с указанными логином и паролем в этом файле. При добавлении следующих пользователей и изменении паролей уже существующих программа вызывается подобным же образом, но без указания ключа -c. Для удаления пользователя достаточно открыть файл.htpasswd обычным текстовым редактором и удалить строчку с его логином и паролем.

Как создать файл.htpasswd если тарифный план не предусматривает доступа по SSH ?

Если тарифный план не предусматривает доступ по SSH (доступ к командной строке сервера), то для создания файла.htpasswd можно воспользоваться специальной windows-программой. Для этого, нужно скачать дистрибутив, распаковать его и запустить программу passwd.exe. После этого в окне по закладке «Single Password» с помощью кнопки «Browse» задать имя файла (обычно это.htpasswd), а в верхней части окна ввести имя пользователя, пароль и нажать кнопку «Encode and Save». После этого полученный файл необходимо закачать по протоколу FTP в нужную директорию на нашем сервере.

Ну что ж, мы поговорили достаточно о веб-сервере, пришло время его нам установить и опробовать в деле. Существует сформировавшийся перечень наиболее распространенных веб-серверов, при выборе во внимание принимаются конкретные задачи, под которые он разворачивается. Остановим наш выбор на бесплатном веб-сервере Apache. Считаю его идеальным для сайтов начального и среднего уровня. Конечно, можно пойти легким путем - установить готовый комбайн Denwer, как это делает большинство новичков, но в нашем случае помимо результата важны также и теоретические знания. А после сегодняшнего урока ваш скилл повысится однозначно:)

Идем на страницу загрузки проекта - http://httpd.apache.org/download.cgi и качаем последнюю стабильную версию под Windows в виде MSI инсталлятора (в моем случае это был apache_2.2.14-win32-x86-no_ssl.msi). Начнем установку. Первый диалог, который может ввести нас в заблуждение - это диалог ввода информации о сервере:

Конфигурировать наш сервер мы будем после установки, а сейчас давайте не будем особо париться и впишем в поля "Network Domain" и "Server Name" localhost, а в поле "Administrator"s Email Address" ваш адрес электронной почты (о том, что такое localhost, речь пойдет позже). Нижние переключатели не трогаем. Жмем "Next", соглашаемся с типичной установкой, еще раз "Next". Инсталлятор предложит выбрать директорию, в которую будет установлен веб-сервер:

На мой взгляд, путь слишком длинный, давайте сократим его до C:\Program Files\Apache . Продолжаем установку, дожидаемся ее окончания. После закрытия инсталлятора в трее появится значок Apache монитора:

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

Теперь давайте вспоминать то, о чем мы беседовали в статье . Как вы помните, у каждого компьютера, подключенного к сети, есть свой IP-адрес. Но даже если ваш компьютер не имеет ни одного сетевого подключения, у него есть как минимум один внутренний IP-адрес. Этот адрес - 127.0.0.1 . На всех компьютерах он одинаковый и указывает на сам компьютер. То есть, если сетевому клиентскому приложению указать адрес сервера 127.0.0.1, то клиент будет пытаться подключиться к серверу, расположенному на вашем же компьютере. Далее мы говорили о доменных именах, которые преобразуются в IP-адреса DNS-серверами. У внутреннего адреса 127.0.0.1 есть свое внутреннее доменное имя - localhost . При этом для преобразования этого имени в адрес компьютеру не нужно обращаться к DNS-серверу, так как это соответствие заложено в самом компьютере.

Давайте запустим веб-браузер и введем в адресную строку домен localhost:

Я надеюсь, вы понимаете, что произошло? Домен localhost преобразовался в IP-адрес 127.0.0.1, веб-браузер подключился к веб-серверу по этому адресу и 80 порту и запросил главную страницу с помощью протокола HTTP. То есть наш веб-сервер работает, он отправил браузеру страничку с надписью "It works" ("работает").

Приступим к настройке нашего веб-сервера, которая сводится к редактированию конфигурационных файлов Apache. Для начала необходимо обзавестись удобным, практичным и в то же время простым текстовым редактором. Если у вас такой уже есть - мои поздравления, если же вы несчастный пользователь Блокнота, могу предложить редактор . Перейдите в папку C:\Program Files\Apache\conf и переименуйте файл httpd.conf в httpd.conf.bak , чтобы в случае чего иметь под рукой начальную конфигурацию. Создайте новый файл httpd.conf со следующим содержимым:

ServerRoot "C:/Program Files/Apache" Listen 80 LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so LoadModule asis_module modules/mod_asis.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule cgi_module modules/mod_cgi.so LoadModule dir_module modules/mod_dir.so LoadModule env_module modules/mod_env.so LoadModule include_module modules/mod_include.so LoadModule isapi_module modules/mod_isapi.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_module modules/mod_mime.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule setenvif_module modules/mod_setenvif.so ServerName localhost AccessFileName .htaccess ServerTokens prod LogLevel error ErrorLog "logs/error.log" DefaultType text/plain AddDefaultCharset UTF-8 DirectoryIndex index.html Order allow,deny Deny from all Satisfy All TypesConfig conf/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz LogFormat "\nclient=%h\ntime=%{%d.%m.%Y %H:%M:%S}t\npage=%U%q\nreferer=%{Referer}i\nreqmethod=%m\nhost=%{Host}i\nagent=%{User-agent}i\n\n" mylog

Разбираемся. ServerRoot - путь, куда установлен наш веб-сервер. Обратите внимание на слеши. Listern - указывается номер порта, который будет "слушать" веб-сервер, а также, если необходимо, IP-адрес (если у вашего компьютера несколько подключений и нужно принимать соединения только по одному из них). Мы указали порт 80, который является стандартным для веб-серверов. LoadModule загружает модуль веб-сервера, модули позволяют получить дополнительные возможности. В нашем конфигурационном файле прописан перечень стандартных модулей. AddDefaultCharset - кодировка по умолчанию, выставили юникод (UTF-8). Остальное пока нас мало волнует.

А теперь самое главное. Не забыли, для чего устанавливаем веб-сервер? Правильно, для работы над нашими будущими сайтами. Существует понятие корневой каталог - это каталог, где расположен контент сайта, то есть файлы, из которых он состоит. По умолчанию в нашем Apache корневым каталогом является каталог . Перейдя туда вы обнаружите там единственный файл под именем index.html . Это тот самый файл, который содержит главную страницу с надписью "It works" по адресу http://localhost . Дело в том, что если в запросе (который, кстати, называется url) отсутствует имя файла, то веб-сервер ищет файл с одним из стандартных имен. Эти имена (точнее, одно имя - index.html ) прописаны у нас в конфигурационном файле:

DirectoryIndex index.html

Таким образом, при запросе http://localhost веб-сервер будет искать файл C:\Program Files\Apache\htdocs\index.html , при запросе http://localhost/docs - C:\Program Files\Apache\htdocs\docs\index.html (в том случае, если docs - папка), при запросе http://localhost/news.html - C:\Program Files\Apache\htdocs\news.html и так далее.

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

Итак, localhost соответствует адресу 127.0.0.1, давайте создадим еще три внутренних домена test-domain1, test-domain2 и test-domain3, которые будут соответствовать этому же адресу. Откройте в текстовом редакторе файл C:\WINDOWS\system32\drivers\etc\hosts . В этом файле можно задать соответствия доменных имен и IP-адресов. Здесь же мы обнаружим то самое соответствие localhost адресу 127.0.0.1. Добавьте в конец файла строки:

127.0.0.1 test-domain1 127.0.0.1 test-domain2 127.0.0.1 test-domain3

Перед обращением к DNS-серверу соответствие ищется в этом файле, и, если удачно, обращение отменяется и используется найденный адрес.

Следующим шагом необходимо каждому доменному имени создать свой корневой каталог и сказать об этом нашему веб-серверу. Удаляем в папке C:\Program Files\Apache\htdocs файл index.html и создаем там три папки: test-domain1 , test-domain2 и test-domain3 , в каждой из этих папок папку log - для логов и папку www - собственно, корневой каталог для домена. В конце файла C:\Program Files\Apache\conf\httpd.conf дописываем следующее:

NameVirtualHost *:80 ServerName test-domain1 DocumentRoot "C:/Program Files/Apache/htdocs/test-domain1/www" ErrorLog "C:/Program Files/Apache/htdocs/test-domain1/log/error.log" CustomLog "C:/Program Files/Apache/htdocs/test-domain1/log/access.log" mylog ServerName test-domain2 DocumentRoot "C:/Program Files/Apache/htdocs/test-domain2/www" ErrorLog "C:/Program Files/Apache/htdocs/test-domain2/log/error.log" CustomLog "C:/Program Files/Apache/htdocs/test-domain2/log/access.log" mylog AllowOverride All Options -Indexes ServerName test-domain3 DocumentRoot "C:/Program Files/Apache/htdocs/test-domain3/www" ErrorLog "C:/Program Files/Apache/htdocs/test-domain3/log/error.log" CustomLog "C:/Program Files/Apache/htdocs/test-domain3/log/access.log" mylog AllowOverride All Options -Indexes

Три блока VirtualHost описывают наши три виртуальных хоста. Каждому задается свой корневой каталог - DocumentRoot , путь к логу ошибок - ErrorLog и логу доступа - CustomLog .

В корневом каталоге каждого домена создайте по файлу index.html с содержимым "Hello from test-domain1", "Hello from test-domain2" и ""Hello from test-domain3". Чтобы изменения в конфигурации вступили в силу, необходимо перезапустить Apache (левой кнопкой мыши по значку Apache монитора -> Restart). Если ошибок не было допущено, должно все работать:

Поздравляю, теперь у вас есть настроенный веб-сервер с тремя локальными хостами. Раздолье для веб-мастера:) Самое время приступить к изучению основ веб-строительства.

Этот материал написан специально для людей, которые только собираются примкнуть к стройным рядам веб-разработчиков или же просто хотят разобраться в некоторых тонкостях процесса. Здесь вы узнаете о том, что же такое сервер 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. В других материалах мы обязательно коснемся всех тонкостей сайтостроения на основе этого замечательного программного комплекса.