Энциклопедия мобильной связи

Почему вдруг слетели настройки конфигурационных файлов apache. Обзор конфигурации Apache в Ubuntu

Для конфигурации Apache есть 4 основных подхода:

  1. Компиляция / инсталляция: сборка из исходников позволяет выбрать необходимые модули, установить нужные флаги, пути и т. д.
  2. Параметры командной строки: позволяют конфигурировать Apache при запуске.
  3. Глобальные конфигурационные файлы: главный файл по умолчанию называется httpd.conf.
  4. Локальные конфигурационные файлы: использование.htaccess.

Конфигурационные директивы в файле httpd.conf можно разбить на 3 категории:

  1. Директивы, контролирующие общий процесс работы.
  2. Директивы виртуальных хостов.
  3. Настройки виртуальных хостов.

К директивам первой группы относятся , , , , , .

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

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

Содержимое основного конфига httpd.conf можно разделить на 5 секций:

  1. Глобальные директивы.
  2. - применимы к выиртуальным серверам.
  3. , - применимы к каталогам.
  4. , - применимы к файлам.
  5. , - применимы к URL.

Директива может иметь несколько параметров, тип параметров может различаться.

Каждая директива обрабатывается определенным модулем.

Например, директива

Следующая директива будет обработана модулем mod_env, будет установлена переменная окружения:



Содержимое локального файла.htaccess можно разделить также на 5 секций:

  1. AuthConfig - контроль авторизации.
  2. Limits - контроль доступа.
  3. Options - конкретные настройки каталогов.
  4. FileInfo - установка атрибутов для документов.
  5. Indexes - индексация каталогов.

В Ubuntu apache находится по адресу /etc/apache2 и, помимо конфигурационных файлов, содержит директории "sites-available" и "sites-enabled". В первой директории находится список сайтов, которые доступны на сервере, а во второй - те, которые обслуживаются сервером. Это дает возможность быстро добавлять и удалять сайты, которые будут обслуживаться сервером, без необходимости физически удалять их из DocumentRoot. В дополнение к этому другие файлы настроек могут быть добавлены с использованием инструкции Include, а символы группировок могут использоваться для включения множества файлов настроек. Любая инструкция может быть добавлена в любой из этих файлов настроек. Сервер также читает файлы, содержащие типы mime документов; имя файла задается инструкцией TypesConfig, обычно через /etc/apache2/mods-available/mime.conf, который также может включать дополнения и переопределения, а по умолчанию используется /etc/mime.types.

Apache - это целое семейство различных проектов, первым из которых был Web-сервер. Web-сервер представлен демоном httpd, поэтому проект Apache по разработке Web-сервера называется httpd.

Конфигурационные файлы Web-сервера httpd в GNU/Linux в различных дист- рибутивах размещаются в разных каталогах: /etc/httpd/conf/, или /etc/apache2, или ином. Главный конфигурационный файл называется httpd.conf, причем часто выделенные для каких-либо групп настроек индивидуальные конфигура- ционные файлы подключаются к httpd.conf с помощью директивы include.

В целом, настройки httpd можно разделить на три основные категории:

r секция глобальных настроек;

r настройки для главного сервера;

r настройки для виртуальных узлов.

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

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

r ServerRoot - базовый каталог установки, относительно которого в фай- ловой системе GNU/Linux размещаются конфигурационные файлы Apache, а также некоторые файлы, необходимые в его работе;


r PidFile - файл, в который при запуске сервера Apache заносится PID

главного процесса сервера;

r LoadModule - команда загрузить модуль расширения Apache, скомпили- рованный в виде разделяемой библиотеки;

r Timeout - количество секунд перед посылкой сигнала о потере соединения;

r KeepAlive - разрешение или запрет поддержки долгоживущих соедине- ний, доступных в рамках протокола HTTP/1.1, позволяющих оставлять со- единение в неразорванном состоянии после отправки сервером требуемой информации;

r KeepAliveTimeOut - количество секунд ожидания следующего запроса, по прошествии которого долгоживущее соединение будет разорвано;

r MaxKeepAliveRequests - максимально возможное количество запросов, разрешенное для долгоживущих соединений;

r StartServers - количество дочерних процессов httpd, которые стартуют при запуске сервера Apache;

r MinSpareServers - минимальное количество ждущих соединения дочер- них процессов httpd (при появлении соединений запускается столько ко- пий httpd, чтобы количество ожидающих соединения дочерних процессов было не меньше этой величины);

r MaxSpareServers - максимальное количество ждущих соединения до- черних процессов httpd (лишние процессы останавливаются);

r MaxClients - ограничение на максимальное количество дочерних про- цессов httpd, определяющее возможное количество соединений;

r MaxRequestsPerChild - максимальное количество запросов, которое раз- решено обслуживать одному дочернему процессу httpd, при достижении которого он гарантированно останавливается для исключения возможных утечек памяти.

ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 120

KeepAlive Off MaxKeepAliveRequests 100


KeepAliveTimeout 15

StartServers
MinSpareServers
MaxSpareServers
ServerLimit
MaxClients

MaxRequestsPerChild 4000

Listen 80

LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_alias.so LoadModule authn_anon_module modules/mod_authn_anon.so

User apache Group apache

Следует отметить, что модули могут быть не только подключены с помощью директивы LoadModule, но и установлены непосредственно в код Apache на стадии его компиляции и сборки. Для определения, какие модули были уста- новлены в код на стадии компиляции, выполните команду httpd –l (при- мер 28.2).

$ /usr/sbin/httpd -l Compiled in modules:

core.c prefork.c http_core.c mod_so.c

Обратите внимание на модуль prefork.c - это один из нескольких различ- ных модулей MPM (Multi-Processing Modules), имеющихся для Apache v2. Эти модули ориентированы на разные операционные системы или на раз- личные модели многозадачной обработки. Например, модуль prefork.c ори- ентирован на традиционную для UNIX модель порождения дочерних про- цессов, а worker.c - на работу с потоками.


Среди настроек главного сервера наиболее важны следующие:

r Listen - заставляет Apache слушать только указанный порт;

r User - пользователь, от имени которого будут запущены процессы httpd;

r Group - группа, от имени которой будут запущены дочерние процессы

r DocumentRoot - каталог размещения файлов Web-сайта;

r UserDir - имя каталога для размещения личных Web-страниц пользова- телей;

r DirectoryIndex - список имен файлов, который будет просмотрен при попытке доступа к корневому документу каталога;

r AccessFileName - имя файла, содержащего директивы управлением до- ступом к каталогу;

r TypesConfig - задает местонахождение файла конфигурации MIME;

r DefaultType - задает MIME-тип документа по умолчанию;

r MimeMagicFile - задает местонахождение файла магических чисел для определения MIME-типа документа;

r HostnameLookups - задает тип занесения информации о запросах клиен- тов либо по IP-адресу, либо по имени узла;

r ErrorLog - файл журнала, в который будут записываться любые ошибки

(сообщения), встретившиеся в процессе работы Apache;

r LogLevel - уровень информативности журналирования;

r LogFormat - директива, определяющая формат вывода информации в жур- нал;

r CustomLog - указывает местонахождение файла журнала;

r ServerSignature - разрешает выводить в страницах, сгенерированных сервером Apache, информацию о версии, виртуальном узле и т. п.;

r Alias - устанавливает псевдонимы для путей доступа к каталогам серве- ра (длина строки псевдонима меньше, чем длина строки пути доступа);

r ScriptAlias - делает то же, что и Alias, но для каталогов с CGI-

сценариями;

r IndexOptions - определяет тип индексирования каталогов;

r AddIcon - указывает файл значка для отображения в конкретных ситуа- циях, например, при выводе страницы с содержимым каталога разным ти- пам файлов сопоставляются разные значки;

r AddIconByEncoding - задает значки для конкретных MIME-кодировок;


r AddIconByType - задает значки для определенных MIME-видов документов;

r DefaultIcon - значок по умолчанию;

r AddDescription - добавляет строку комментария к определенным типам документов (например, .gz - gzipped document);

r ReadmeName - задает имя файла README, добавляемого в конец списка файлов в каталоге (directory index);

r HeaderName - задает имя файла HEADER, добавляемого в начало списка файлов в каталоге (directory index);

r IndexIgnore - имена файлов, которые будут игнорироваться при индек- сации;

r AddEncoding - позволяет браузерам заданным образом обрабатывать ин- формацию на лету (например, отображать содержимое сжатых gzip- файлов);

r AddLanguage - отображает заданные расширения имен файлов на опреде- ленный язык документа (например, AddLanguage ru .ru);

r AddCharset - задает отображение определенного расширения имен фай- лов на конкретную кодировку;

r LanguagePriority - порядок следования языков;

r AddType - задает отображение расширения имен файлов на тип MIME;

r AddHandler - задает тип обработки по расширению имен файлов;

r ErrorDocument - позволяет настраивать сообщения об ошибках;

r BrowserMatch - задает особенности вывода информации для браузеров.

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

Alias /doc /usr/share/doc

В этом примере установлен псевдоним doc для каталога /usr/share/doc. Одна- ко такой псевдоним будет установлен только в случае наличия модуля mod_alias.c. Имея такой псевдоним (при наличии соответствующих разреше- ний), можно будет обращаться с помощью Web-браузера к содержимому ка- талога /usr/share/doc, используя URL http://localhost/doc .


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

Часто Apache поставляется с весьма обширной документацией в HTML- формате. Например, в дистрибутивах Fedora традиционно документация на Apache доступна после запуска Apache по URL http://localhost/manual .

Apache – это веб-сервер.

Конфигурационные файлы

По умолчанию все конфигурационные файлы хранятся в папке " conf ".

httpd.conf – это основной конфигурационный файл сервера apache. Для вступления в силу изменений, внесённых в этот файл, требуется перезапуск сервера apache.

В папке " extra " (внутри папки " conf ") находятся дополнительные конфигурационные файлы . При необходимости их можно подключить внутри основного конфигурационного файла.

Синтаксис конфигурационных файлов

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

Директива и её аргументы разделяются пробелом. Сами аргументы также разделяются пробелами. Если аргумент содержит пробелы, его необходимо заключить в кавычки.

Директивы не чувствительны к регистру символов, а вот аргументы наоборот – чувствительны.

Строка, которая начинается с символа # (решётка), считается комментарием и игнорируется. Комментарий не может быть расположен на одной строке с директивой.

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

Модули

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

Модули позволяют использовать директивы, которые не входят в состав ядра веб-сервера Apache.

.htaccess

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

Файл.htaccess действует только на каталог, в котором располагается, и на его дочерние каталоги. Файл.htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов.htaccess).

Изменения, вносимые в файл.htaccess, не требуют перезапуска сервера.

Если в файле.htaccess была допущена какая-либо ошибка, например неправильно написана директива или значение директивы, то сервер вернёт ошибку: Error 500 .

Файл.htaccess использует тот же синтаксис, что и конфигурационные файлы Apache.

Посмотреть, какие директивы могут располагаться внутри файла.htaccess можно в справочнике директив в "Контексте" конкретной директивы.

Раньше в нашей серии по основам Linux мы рассматривали основы работы с веб-сервером Apache. Он является самым широко используемым в мире веб-сервером в Интернете (по состоянию на июль 2015 года, доля Apache составляла 38%, IIS - занимал 26%, а Nginx - 15%). Поэтому чем больше вы о нем знаете и понимаете как он работает, тем больших успехов вы достигнете при его взломе.

Сегодня мы рассмотрим основы настройки сервера Apache. Как мы писали раньше, конфигурирование и настройка почти всех приложений в Linux или Unix осуществляется через конфигурационные файлы, которые представляют собой обычный текст. Apache здесь не является исключением. Поэтому в этой статье мы сосредоточимся на конфигурационном файле apache2.conf, который находится в директории /etc/apache2.

Шаг 1. Запустите Apache2

Давайте начнем с того, что запустим Apache2. Сделаем это через графическую оболочку окружения Kali, перейдя в Applications -> Kali Linux -> System Services -> HTTP -> apache2 start, как показано на скриншоте ниже.

Или запустите его через командную строку, набрав в терминале следующую команду

Kali >service apache2 start

Это запускает демон Apache2, и с этого момента веб-сервер должен обрабатывать наш контент в Интернете.

Шаг 2. Проверьте работоспособность сервера

Чтобы проверить, работает ли наш сервер Apache, давайте просто перейдем в браузере по localhost или 127.0.0.1. Если вы видите страницу как на скриншоте ниже, то это означает, что сервер работает нормально!

Шаг 3. Откройте файл конфигурации

Чтобы настроить Apache, нам нужно перейти в директорию /etc/apache2.

Kali > cd /etc/apache2

Выведем на экран список всех файлов в этой директории:

Kali > ls -l

Как видите, в этой директории есть несколько файлов и поддиректорий. Сейчас нас интересует только файл apache2.conf, но обратите внимание, что у нас есть файл ports.conf и папка sites_available, которые нам понадобятся чуть позже, также здесь есть несколько других файлов конфигурации и папок.

Мы можем открыть apache2.conf в любом текстовом редакторе, но здесь мы будем использовать Leafpad. Файл можно открыть, просто набрав в консоли:

Kali > leafpad /etc/apache2/apache2.conf

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

Шаг 4. ServerRoot

Давайте прокрутимся вниз, пропустив все комментарии, и найдем строку #70, где начинается раздел глобальных настроек. Здесь мы видим настройки ServerRoot. Это вершина дерева директорий, в которой сервер Apache хранит все связанные с работой сервера файлы. Строка #84 определяет ServerRoot. Мы можем просто раскомментировать эту строку, если хотим установить /etc/apache2 в качестве ServerRoot. Мы рекомендуем вам это сделать.

Шаг 5. Timeout

В следующем разделе у нас располагаются переменные, которые определяют значения параметров: Timeout, KeepAlive, MaxKeepAliveRequests и KeepAliveTimeout.

  • Timeout : это время, в течение которого сервер должен выполнить запрос пользователя. Его значение по умолчанию - 300, а это означает, что сервер должен обработать каждый запрос в течение 300 секунд или 5 минут. Это, определенно, слишком долго и это значение можно установить в 30 секунд.
  • KeepAlive : это означает, что сервер остается живым (держит соединение) для нескольких запросов от одного и того же клиента. По умолчанию установлено значение «On» (включено). Это означает, что клиентам не нужно создавать новое соединение для каждого запроса к нашему серверу. Такой подход позволяет экономить ресурсы сервера.
  • MaxKeepAliveRequests : это значение определяет максимальное количество секунд, допустимое между запросами, полученными от установленного соединения с одним клиентом. Если мы установим это значение в 0, то количество времени не ограничено.
  • KeepAliveTimeout : Это количество времени между запросами, для определения того, что соединение еще живо (установлено).

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

Шаг 6. Пользователь и группы Apache2

Давайте опять прокрутим вниз несколько строк в файле apache2.conf, пока не дойдем до строки #177. Здесь мы можем установить пользователя и группы Apache2. Обратите внимание на комментарий к строке #177. Там указано, что мы можем установить эти переменные в файле envvars (переменные окружения). Оставим этот вопрос для будущих статей, но пока просто имейте в виду, что и User (пользователь) и Group (группа) являются переменными, значения которых берутся из файла /etc/apache2/envvars.

И, наконец, последний раздел, имеющий огромное значение для безопасности Apache, начинается со строки #193. Этот раздел дает гарантии, что веб-клиенты не смогут получить доступ к файлам.htaccess и.htpasswd.

Шаг 7. Логирование

В следующем разделе описано, как Apache управляет логами (журналами).

В первом подразделе мы обращаемся к параметру HostNameLookups. Эта директива сообщает Apache2, должен ли он выполнять поиск DNS, когда он записывает в лог установленное соединение. Со значением по умолчанию «Off» (выключено) Apache2 работает намного лучше.

Шаг 8. Доступные сайты

Теперь посмотрим на директорию site_available (доступные сайты) и, самое главное, на тот файл, который находится в ней по умолчанию. Его часто называют файлом виртуальных хостов (Virtual Hosts) по умолчанию. Откройте этот файл, набрав в консоли:

Kali > leafpad /etc/apache2/site_available/default

Как видите, в этом файле есть три критических области. Первая строка определяет, какой порт слушает веб-сервер. Здесь определено, что он слушает любой интерфейс на 80-м порту (*: 80). Вторая строка определяет адрес электронной почты, на который нужно слать уведомления в случае возникновения проблем с сервером. По умолчанию там стоит адрес Если вы являетесь системным администратором, то здесь вы можете указать ваш адрес электронной почты. Третий элемент может быть самым важным - DocumentRoot. Он определяет, где будет размещаться контент для этого виртуального хоста, значением по умолчанию является директория /var/www. Мы предлагаем вам оставить все в том виде, в котором это было определено разработчиками.

Шаг 9. Порты

Наконец, мы можем перейти в файле apache2.conf еще ниже до строки #248 — «include port.conf». Эта директива просто сообщает Apache о необходимости перейти в файл port.conf, чтобы найти те порты, которые он должен прослушивать.

andew

2016-07-23T17:54:43+00:00

2017-08-25T04:44:37+00:00

7613

В статье представлен обзор конфигурации web сервера Apache в Ubuntu server при стандартном варианте инсталляции LAMP в Ubuntu. Приведена логика и структура организации конфигурационных файлов веб сервера. Описаны назначения основных конфигов сервера. Даны базовые Linux Ubuntu команды для манипуляции конфигурацией, настройки и управления веб сервером Apache. Рассмотрен сайт по умолчанию, который создается в процессе установки Apache. Статья вам будет полезна при настройке и администрировании своего LAMP сервера.

Как добавить поддержку PHP как обработчика сценариев в Apache на Ubuntu или Windows детально описано в статье Установка PHP7 на Windows в разделе Настройка .

Apache Default WEB Page

В процессе выполнения стандартной инсталляции web сервера Apache в Ubuntu server создается тестовый сайт, который служит для проверки работоспособности веб сервера после его установки. Этот сайт, по умолчанию, сконфигурирован так, что разрешает обращения из браузера только к файлам и каталогам внутри /var/www директории Ubuntu server. Если, по завершению инсталляции Apache , вы откроете в браузере веб страницу по адресу IP вашего web сервера, то увидите стартовую страницу сервера - Apache2 Ubuntu Default Page . Это будет, в первую очередь, говорить о том, что Apache удачно установился и работает. Эта страница физически располагается на сервере в файле /var/www/html/index.html и за ее настройку и вывод в браузере отвечает конфиг виртуального хоста по умолчанию (/etc/apache2/sites-available/000-default.conf ), который определяет виртуальный хост(сайт) для каталога /var/www/html и создается в ходе инсталляции сервера Apache . Соответственно, если вы разместите ваши файлы в этой папке, то они будут обрабатываться web сервером. Также на этой Default Page в секции Configuration Overview вы увидите схематическое представление структуры конфигурационных файлов сервера. Здесь нужно понимать, что структура, названия и расположения конфигов Apache в Ubuntu отличаются от общепринятой схемы, что сделано для удобства управления сервером. Но тут есть один нюанс, который заключается в том, что если вы ранее не были знакомы с организацией каталогов в домашней директории Apache на Ubuntu , то эта схема может вас только запутать, т.к. в ней представлены не все папки, а только каталоги, в которых располагаются символьные ссылки на активированные файлы конфигурации. Поэтому, для более правильного понимания, смотрите полную схему каталогов и фалов домашней директории web сервера Apache расположенную ниже в этой статье. Из ценного в секции веб страницы Apache - это ссылки на man Debian для команд a2enmod , a2dismod , a2ensite , a2dissite , a2enconf , a2disconf , которые используется для активации и деактивации тех или иных видов файлов конфигурации и будут детально описаны . Так же здесь сказано, что для передачи команд web серверу ( started/stopped etc. ) нужно обращаться к /etc/init.d/apache2 или к apache2ctl , что так же является особенностью сервера в Ubuntu. На сервере Ubuntu в файле /usr/share/doc/apache2/README.Debian.gz вы сможете найти полную документацию по Apache .

Домашний каталог Apache в Ubuntu

По умолчанию, домашний каталог web сервера Apache в Ubuntu находиться по /etc/apache2/ пути в файловой системе. В этом каталоге и его подкаталогах располагаются все конфигурационные файлы Apache . Изменить значение пути домашней директории web сервера можно директивой ServerRoot "/etc/apache2" в главном конфиге apache2.conf . Там, по умолчанию, директива ServerRoot закомментирована, что равносильно ее значению как "/etc/apache2" (завершающего слеша не должно быть в этой директиве! ). Значение пути домашней директории Apache (ServerRoot ) необходимо серверу, что бы он знал, в каком месте файловой системы ему следует искать свои конфигурационный файлы. Так же значение ServerRoot может подставляться сервером в некоторых директивах, ожидающих в качестве аргумента путь в файловой системе Ubuntu . Поэтому, в таких случаях, если путь указать без начального слеша, то Apache воспримет это как относительный путь по отношению к своей домашней директории. Так, например, если указать директиву AuthUserFile .htpasswd , то в таком варианте Apache будет интерпретировать указанный путь как относительный и превратит его в /etc/apache2/.htpasswd , подставив спереди значение пути своей домашней директории.

Структура домашней директории Apache в Ubuntu

В процессе стандартной установки WEB сервера Apache в Ubuntu создается следующая структура файлов и каталогов домашней директории веб сервера:

/etc/apache2/ ...............................Домашняя директория Apache в Ubuntu - ServerRoot |-- conf-available ......................директория, содержит разные конфиги | `-- charset.conf ...................файл для указания кодировок | `-- localized-error-pages.conf .....файл для задания страниц ошибок | `-- other-vhosts-access-log.conf ...файл для задания логов виртуальных хостов | `-- security.conf ..................файл для директив безопасности | `-- serve-cgi-bin.conf .............файл для директив конфигурации CGI |-- conf-enabled активированные конфиги из conf-available | `-- @ ..............................ССЫЛКИ на активированные конфиги из conf-available |-- mods-available ......................директория, содержит конфиги установленных модулей Apache | `-- ... ........................доступные конфиги модулей Apache |-- mods-enabled ........................директория, содержит ССЫЛКИ на активированные конфиги модулей из mods-available | `-- @ ..............................ССЫЛКИ на активированные конфиги модулей Apache |-- sites-available .....................директория содержит доступные конфиги виртуальных хостов | `-- 000-default.conf ...............файл виртуального хоста по умолчанию для 80 порта, создан при инсталляции Apache | `-- default-ssl.conf ...............файл виртуального хоста по умолчанию для порта 443, создан при инсталляции Apache |-- sites-enabled .......................директория, содержит ССЫЛКИ на активированные конфиги виртуальных хостов из sites-enabled | `-- @000-default.conf ..............ссылка на активированный конфиг виртуального хоста |-- apache2.conf ........................ГЛАВНЫЙ конфиг web сервера Apache в Ubuntu |-- envvars .............................файл с настройками путей для окружения Apache |-- magic ...............................Файл скриптов для модуля mime_magic (этот модуль не активен по умолчанию) |-- ports.conf ..........................файл для задания портов на которых будет принимать подключения Apache

Приведенные примеры представлены из OS Ubuntu server 16.04 LTS, однако тоже самое будет и в других версиях и дистрибутивах Ubuntu как в сервером варианте, так и в desktop варианте.

Логика организации конфигурации Apache

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

Во-первых , в Ubuntu , конфигурация Apache разбита на множество разных конфигов по их функциональному назначению. Например, директивы, задающие порт для сервера, вынесены в отдельный файл ports.conf . Директивы, ответственные за те или иные параметры безопасности сервера, вынесены в файл security.conf . Тем самым, директивы как бы сгруппированы по своему смыслу в отдельные конфигурационные файлы. Это достаточно логично и удобно при чтении, правке, активации и деактивации конфигов. При таком подходе каждый, отдельно взятый файл, становиться меньше и является узкоспециализированной частью конфигурации. Однако, нужно понимать, что такое дробление сделано исключительно для удобства и автоматизации настройки и технически, если вы захотите, вы можете записать все директивы и настройки в один файл, просто работать с таким файлом будет не так удобно.

Во-вторых : центром всей конфигурации выступает главный конфиг Apache веб сервера - apache2.conf файл. Именно этот файл в первую очередь ищет и читает web сервер Apache при старте или перезагрузке. А уже в этом файле при помощи директив Include , в месте их указания, выполняется подключение и загрузка всех остальных заданных конфигов. Таким образом, все конфигурационные файлы объединяются в единую конфигурацию web сервера и происходит это, когда Apache читает файлы по порядку их подключения, начиная с главного конфига. Из этого следует важное замечание - порядок следования директив в конфигурации Apache и, соответственно, порядок подключения файлов конфигов имеет значение, так как директивы, прочитанные сервером позднее могут переопределять директивы прочитанные им ранее. Об этом нужно помнить при настройке сервера.

В-третьих : если вы посмотрите на структуру каталогов домашней директории Apache , то увидите три пары директорий с названиями вида: префикс_каталога -available/enabled . Такая логическая структура призвана для распределения ваших конфигов на три группы , исходя из префикса названия каталога, где conf-* это каталоги для ваши прочих конфигов, mods-* это каталоги для конфигов модулей Apache и sites-* это каталоги для конфигов ваших виртуальных хостов. Вторая часть имени этих каталогов -available/-enabled логически указывает на доступные вообще и только активные в настоящий момент момент конфиги. Так в директориях *-available хранятся все доступные для использования файлы конфигурации, а уже в директориях вида *-enabled расположены символьные ссылки (ярлыки ) только на те конфиги из *-available директории, которые должны быть прочитаны web сервером при загрузке конфигурации. Apache читает только каталоги вида *-enabled , поэтому применяться только те конфиги, на которые в этих каталогах есть ссылки . Такой подход дает еще дополнительный уровень удобства тем, что позволяет вам хранить все ваши конфиги в каталогах домашней директории сервера, а задействовать только необходимые в текущий монет.

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

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

Виды контекста директив:

  • server config - глобальный уровень директивы для применения в файлах общей конфигурации сервера вне и вне контейнеров и вне файла .htaccess ;
  • virtual host - уровень виртуального хоста для применения директивы в контейнере;
  • directory - уровень каталога , директива должна использоваться внутри контейнеров , , , ;
  • .htaccess - уровень локального каталога сайта, директива может применяться в файле .

Команды управления конфигурацией

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

Команды включения/выключения конфигурации

Для активации и деактивации тех или иных конфигов в Ubuntu предоставляются команды помощники созвучные с available /enabled и префиксом каталога. Например, команда a2enconf , которую можно расшифровать как apache2-enable-conf , выполняет активацию указанного в ее аргументе конфигурационного файла из conf-available каталога путем создания на него символьной ссылки в каталоге conf-enabled . Команда a2disconf выполняет обратное действие, т.е. удаляет эту ссылку. Подобная логика применима и к остальным командам: a2enconf /a2disconf , a2enmod /a2dismod , a2ensite /a2dissite . Но вы так же можете и вручную создать/удалить символьные ссылки на нужные вам конфиги в директориях вида *-enabled .

Внимание : для вступления измений конфигов в силу нужно выполнить перезагрузку конфигурации WEB сервера Apache .

a2enconf/a2disconf

Для включения или выключения нужного конфига из каталога conf-available в конфигурацию сервера используйте команды:

Включить конфиг :

sudo a2enconf

Выключить конфиг :

sudo a2disconf

a2enmod/a2dismod

Для активации установленного модуля Apache из каталога mods-available

Включить модуль Apache

sudo a2enmod

Выключить модуль Apache

sudo a2dismod

a2ensite/a2dissite

Для активации конфигурации виртуального хоста из каталога sites-available и деактивации его используйте команды:

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

sudo a2ensite

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

sudo a2dissite

Команды управления Apache

В Ubuntu , благодаря использованию переменных среды, для обращения к демону httpd web сервера можно применять вызовы вида: /etc/init.d/apache2 или apache2ctl или apache2 :

sudo /etc/init.d/apache2 sudo apache2ctl sudo apache2

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!