Что Такое Apache? Подробный Обзор Веб-Сервера Apache. Apache: установка и настройка веб-сервера

17.06.2019

Что такое 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 является самый широко используемым, для него есть несколько альтернатив и конкурентов.

25.12.13 39.2K

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

Apache HTTP-сервер (сокращение от англ. a patchy server ) – одна из наиболее популярных и распространенных программ, созданных для веб-разработчиков и администраторов интернет-ресурсов. По данным независимых исследователей, Apache установлен на 50% компьютеров всех пользователей HTTP-серверов.

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

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

О том, как установить сервер Apache для операционной системы Windows 7, пойдет речь в данной статье.

Установка Apache

В первую очередь необходимо скачать последнюю версию дистрибутива Apache без поддержки SSL и запустить установку. В приветственном окне нужно кликнуть на «Next », прочесть лицензионное соглашение разработчика и подтвердить свое согласие с ним.


Затем, в окне установки необходимо заполнить поля так, как показано на картинке ниже, а в поле «Administrator’s Email Address » указать адрес своей электронной почты, кликнуть «Next » и установить переключатель в положение «Custom ».



Далее, переходим к следующему шагу процесса «установка Apache ». По умолчанию веб-сервер производит инсталляцию в папку C:Program FilesApache Software FoundationApache 2.2 .


Далее необходимо создать директорию www на диске C и указать её в качестве установочной папки для Apache, кликнуть «Next » в этом и «Install » в следующем окне. Когда установка закончится, нажмите на «Finish ».

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


Кликнув по тому же значку правой кнопкой мыши, можно перейти к различным системным службам операционной системы или открыть монитор Apache.


Для того чтобы проверить работает ли установленный сервер Apache, наберите в адресной строке вашего браузера http://localhost


Если появилась страница с воодушевляющей надписью «It works! », значит, установка Apache прошла успешно, и он функционирует правильно.

Базовая настройка веб-сервера

Хоть Apache и является весьма удобным и исключительно надёжным, не все готовы его использовать как локальный сервер по ряду причин, и основная - отсутствие даже в среде Microsoft Windows какого-либо графического конфигуратора, что довольно непривычно для большинства пользователей.

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

Что необходимо?

  • Запустить Apache под платформой Windows 7;
  • Хранить в удобной для пользователя директории файлы будущего сайта (например, C:www);
  • Не испытывать проблем с кодировкой, а в частности - с отображением кириллицы;
  • Возможность работать с несколькими сайтами одновременно.

Чтобы успешно решить эти проблемы, зайдите в папку с установленным Apache, найдите и откройте в подпапке conf файл httpd.conf . Обратите внимание, что строки, начинающиеся с «решётки », являются текстовыми комментариями, а в качестве настроек веб-сервера использованы строки, в начале которых значок «решётки » отсутствует.

Для начала нужно выполнить настройку той директории, которая будет использоваться сервером в качестве папки веб-сайта. Найдите в тексте строку, которая начинается с DocumentRoot . Данная директива определяет, какая папка будет являться корневой.

Исправьте её на DocumentRoot “C:/www ”. Следует уточнить, что слэши в этом файле должны быть наклонены вправо, а не влево, как, вероятно, уже привыкли пользователи Windows. После вышеуказанных манипуляций, проблема с месторасположением вашего сайта решена.

Options (определяет, какие серверные функции будут доступны) AllowOverride (определяет, какие директивы из.htaccess могут преобладать над такими же в httpd.conf) Order (устанавливает определенные правила доступа к серверу)

Список используемых параметров:

Options. Возможны следующие варианты:

  • Includes – использование SSI разрешено;
  • IncludesNOEXEC – использование SSI разрешено с ограничениями (не допускаются #include и #exec );
  • Indexes – разрешено использование индексных файлов, и если URL-адрес указывает на директорию сайта (например, www.domain.ru/dir/ ), в которой не существует индексного файла, будет показано содержимое данной директории, а если этой опции нет – выдается оповещение о том, что доступ запрещён;
  • ExecCGI – выполнение скриптов CGI разрешено;
  • FollowSymLinks – сервер следует по имеющимся символическим ссылкам директории (используется в Unix-системах);
  • SymLinksIfOwnerMatch – сервер следует по имеющимся символическим ссылкам директории лишь в том случае, если целевой файл имеет одного владельца со ссылкой;
  • All – все вышеописанное вместе разрешено;
  • None – все вышеописанное вместе запрещено;
  • MultiViews – возможность подбора определенного контента и его выдачи в зависимости от предпочтений браузера (даже если включено все (Options All). Указывается отдельно).

AllowOverride. Варианты:

  • AuthConfig – позволяет использовать директивы для авторизации;
  • FileInfo – разрешает использование директив для работы с различными типами документов;
  • Indexes – разрешает использование директив для работы с файлами индексации;
  • Limit – разрешает использование директив для определения доступа к хосту;
  • Options – разрешает использование директив для работы с определенными специфическими функциями директорий;
  • All – все вышеуказанное вместе;
  • None – ничего из вышеуказанного вместе.

Order. Варианты:

  • Deny, Allow – Deny определяется перед директивой Allow, доступ разрешен по умолчанию, кроме хостов, которые указаны в следующей после Deny from строке;
  • Allow,Deny – Allow определяется перед директивой Deny, доступ запрещен по умолчанию, кроме хостов, которые указаны в следующей после Allow from строке;
  • Mutual-failure – разрешен доступ только таких хостов, которые отсутствуют в Deny и присутствуют в Allow.

На основе всего вышесказанного, попробуйте настроить ваш сервер. В файле httpd.conf директива Directory по умолчанию существует сразу в двух экземплярах - и . Первый вариант трогать не следует, поэтому во втором установите параметры следующим образом:

Options Indexes FollowSymLinks AllowOverride None Order allow, deny Allow from all

Говоря другими словами, для папки C:/www и всех её подпапок выбраны следующие параметры:

  • Из возможной функциональности имеющегося сервера разрешены индексы в директориях и переходы по символическим ссылкам;
  • Возможность параметрического переопределения с помощью файлов.htaccess полностью отсутствует, однако учитывая то, что вы имеете полный доступ к серверу, она не является актуальной – все можно настроить через httpd.conf;
  • Доступ к веб-серверу разрешен со всех хостов.

Теперь, сохраните файл httpd.conf и перезапустите Apache с помощью Apache Monitor либо командой apache –k restart в командной строке. Настройка корневой папки сайта закончена.

Следует проверить, правильно ли вы всё сделали. Создайте простейшую веб-страницу в папке C:www, откройте ваш браузер и введите http://127.0.0.1/ваша_созданная_страница . Страницы должна открыться. В ином случае необходимо тщательно проверить все изменения в файле httpd.conf на правильность.

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

Если пресловутый Internet Explorer в подобных случаях определяет кодировку из самой страницы, то, к примеру, Mozilla Firefox и Opera к подобным действиям склонности совершенно не имеют, и способ выставления кодировки в браузере вручную едва ли можно назвать удобным. Следовательно, необходимо настроить Apache на выдачу по умолчанию необходимой кодировки.

Найдите в файле httpd.conf строку, которая начинается на AddDefaultCharset . Скорее всего, там указана кодировка ISO-8859-1, в которой отсутствуют кириллические символы. Поменяйте ISO-8859-1 на windows-1251 , сохраните файл и перезапустите Apache. Теперь корректное отображение русского языка на вашем сайте будет работать в любом браузере.

В сервере Apache достаточно просто настроить работу с несколькими сайтами. Адреса, которые можно использовать для них - 127.0.0.2, 127.0.0.3 и т.д. При этом по сети виден будет только тот, который является сайтом по умолчанию (127.0.0.1), однако для локальной работы это не является критичным. Раздел файла httpd.conf , в котором производится настройка всего необходимого для этого, находится в самом конце и именуется VirtualHosts .

Для того чтобы добавить дополнительный сайт, создайте директорию, использующуюся в качестве его корневой, к примеру, C:www2 . Предположив, что сайт будет откликаться на адрес 127.0.0.2 , дайте ему имя site911 и в самом конце раздела VirtualHosts добавьте следующие строки:

ServerAdmin webmaster@site911 ServerName site911 DocumentRoot "C:/www2" ScriptAlias /cgi/ "C:/www2/cgi/" ErrorLog "C:/www2/error.log" CustomLog "C:/www2/custom.log" common

Перезапустите сервер Apache. Набрав в адресной строке браузера 127.0.0.1 , вы попадёте на ваш первый локальный сайт, а набрав 127.0.0.2 – на второй локальный сайт. Следует иметь в виду, что внутри каждого контейнера VirtualHosts могут использоваться абсолютно любые директивы веб-сервера Apache, благодаря чему можно каждый сайт настраивать наидетальнейшим образом.

Итог

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

Если же вы решили вплотную заняться администрированием веб-сайтов, следующим вашим шагом должно стать изучение связки Apache PHP MySQL, ведь без системы управления базами данных, а также без поддержки одного из самых распространенных языков веб-программирования и веб-инструмента для администрирования системы MySQL не обходится ни один сервер на просторах всемирной сети. Как говорится, «тяжело в учении, но легко в бою ».

Желаем удачи в изучении этого нелёгкого, но интересного дела!

Хорошо Плохо

Если 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 – это самое популярное и распространенное веб-серверное программное обеспечение с открытым кодом, которое разработано компанией Apache Software Foundation. В мире больше 67% серверов работают на Apache. Он быстрый, надежный и безопасный. С помощью различных расширений и модулей его можно достаточно сильно подстроить под собственные нужды. Большинство WordPress хостинг провайдеров используют Apache в качестве программного обеспечения веб-сервера. Однако, WordPress может работать и на другом программном обеспечении веб-сервера.

Что такое Apache веб сервер?

Что же такое веб-сервер? Его можно сравнить с ресторанным администратором, который встречает вас на входе, проверяет всю информацию по бронированию и отводит вас за столик. Так и веб-сервер: проверяет и предоставляет страницы, которые вы запросили. Однако он не только выполняет функции «администратора», но и обслуживает вас. Захотели страницу? Получите ее. Веб-серверы наподобие Apache можно сравнить метрдотелем хорошего ресторана, который примет заказ и гарантирует, что другие сотрудники (модули) обслужат вас на высшем уровне. Он также выполнит обязанности официанта и уборщика – очистит память, кэш, модули и подготовит все для новых клиентов.

Так что веб-серверы – это программное обеспечение, которое получает запросы на доступ к веб-страницам. Он осуществляет несколько проверок безопасности для вашего HTTP запроса и переносит на необходимую веб-страницу.

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

Apache - это популярнейший свободный веб-сервер. Состоянием на 2016 год он используется на 33% всех сайтов интернета, а это приблизительно 304 миллиарда сайтов. Этот веб-сервер был разработан в далеком 1995, как замена для популярного того сервера NCSA и исправил множество его проблем. Ходят слухи что его имя походит от a patchy, заплатка, так как он исправлял ошибки NCSA. Сейчас же, это кроссплатформенная программа, поддерживающая Windows, Linux и MacOS и обеспечивающая достаточную гибкость, настраиваемость и функциональность. Программа имеет модульную структуру, что позволяет расширять ее функциональность почти до бесконечности с помощью модулей.

Установить Apache в Linux можно с помощью нескольких команд, но программа предоставляет очень большое количество настроек, которые можно изменить, а также модулей, после включения которых она будет работать лучше. В этой статье будет рассмотрена установка и настройка Apache, в качестве основной системы мы будем использовать Ubuntu, но вы можете повторить эти действия в любом другом дистрибутиве. Будет рассмотрена не только установка самой программы, но и способы ее настройки, настройка виртуальных хостов apache, а также самые полезные модули.

На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4. Как я уже говорил, в Linux программа устанавливается буквально в пару команд. Для установки в Ubuntu сначала обновим систему до самой новой версии:

sudo apt update
$ sudo apt upgrade

Затем установка apache2:

sudo apt install apache2

В других дистрибутивах пакет программы называется либо так, либо httpd и его установка у вас не вызовет трудностей.

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

sudo systemctl enable apache2

Настройка Apache

Уже прошло то время, когда конфигурация Apache хранилась в одном файле. Но оно и правильно, когда все распределено по своим директориям, в конфигурационных файлах легче ориентироваться.

Все настройки содержатся в папке /etc/apache/:

  • Файл /etc/apache2/apache2.conf отвечает за основные настройки
  • /etc/apache2/conf-available/* - дополнительные настройки веб-сервера
  • /etc/apache2/mods-available/* - настройки модулей
  • /etc/apache2/sites-available/* - настойки виртуальных хостов
  • /etc/apache2/ports.conf - порты, на которых работает apache
  • /etc/apache2/envvars

Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.

Сначала давайте рассмотрим главный файл конфигурации:

vi /eta/apache2/apache2.conf

Timeout - указывает как долго сервер будет пытаться продолжить прерванную передачу или прием данных. 160 секунд будет вполне достаточно.

KeepAlive On - очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.

MaxKeepAliveRequests 100 - максимальное количество запросов за одно соединение, чем больше, тем лучше.

KeepAliveTimeout 5 - таймаут соединения, обычно для загрузки страницы достаточно 5-10 секунд, так что больше ставить не нужно, но и рвать соединение раньше чем загрузились все данные тоже не нужно.

User, Group - пользователь и группа, от имени которых будет работать программа.

HostnameLookups - записывать в логи вместо ip адресов доменные имена, лучше отключить, чтобы ускорить работу.

LogLevel - уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error

Include - все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.

Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:


Параметр значение

Здесь доступны такие основные опции:

AllowOverride - указывает нужно ли читать.htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All - разрешать все, None - не читать эти файлы.

DocumentRoot - устанавливает из какой папки нужно брать документы для отображенияа пользователю

Options - указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All - разрешить все, FollowSymLinks - переходить по символическим ссылкам, Indexes - отображать содержимое каталога если нет файла индекса.

Require - устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied - всем запретить, Require all granted - всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.

Order - позволяет управлять доступом к директории. Принимает два значения Allow,Deny - разрешить для всех, кроме указанных или Deny,Allow - запретить для всех, кроме указанных..ru.

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

У нас остался файл /etc/apache2/ports.conf:

В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.

Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.

Настройка сервера Apache через htaccess

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

Важно заметить, что для того, чтобы сервер читал инструкции из.htaccess настройки для этой папки в основном файле или файле виртуального хоста не должны содержать AllowOverride None , чтобы могли работать все настройки нужно AllowOverride All .

А в остальном, здесь может выполняться любая настройка сервера apache, от включения модулей, до обычного изменения доступа к папке. Поскольку все параметры мы уже рассмотрели просто приведем пару примеров:

Order Deny,Allow
Deny from all

Запрещает всем доступ к этой папке, важно применить, для папок с конфигурацией. Чаще всего.htaccess используется для работы с модулем mod_rewrite, который позволяет изменять запросы на лету:

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

Но это очень обширная тема и выходит за рамки этой статьи.

Настройка модулей Apache

Как я уже говорил, Apache - модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.

Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:

Включить модуль можно командой:

sudo a2enmod имя_модуля

А отключить:

sudo a2dismod имя_модуля

После включения или отключения модулей нужно перезагрузить apache:

sudo systemctl restart apache2

Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:

vi /etc/apache2/mods-available/deflate.load

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

Настройки модулей находятся в той же папке, только в файле с расширением.conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:

vi /etc/apache2/mods-available/deflate.conf

Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:

a2enconf имя_модуля

a2disconf имя модуля

Как вы убедились, включать модули очень просто. Давайте включим несколько необходимых, но не включенных по умолчанию модулей:

sudo a2enmod expires
$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo a2enmod ssl

Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.

Настройка виртуальных хостов Apache

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

Настройки хостов Apache расположены в папке /etc/apache2/hosts-available/. Для создания нового хоста достаточно создать файл с любым именем (лучше кончено с именем хоста) и заполнить его нужными данными. Обернуть все эти параметры нужно в директиву VirtualHost. Кроме рассмотренных параметров здесь будут использоваться такие:

  • ServerName - основное имя домена
  • ServerAlias - дополнительное имя, по которому будет доступен сайт
  • ServerAdmin - электронная почта администратора
  • DocumentRoot - папка с документами для этого домена

Например:

vi /etc/apache2/sites-available/test.site.conf

Похожие статьи