Материалы для WEB разработки на LAMP
Главный config WEB сервера Apache в Ubuntu

В статье представлен обзор главного конфигурационного файла apache2.conf WEB сервера Apache в Ubuntu при стандартном варианте инсталляции LAMP в Ubuntu. Описаны все директивы этого файла и их параметры.

 

apache2.conf

Файл /etc/apache2/apache2.conf является главным конфигурационным файлом web сервера Apache и загружается в первую очередь. В этом конфиге расположены основные директивы глобального уровня контекста и выполняются подключения других файлов и каталогов конфигурации сервера. Таким образом, по цепочке, загружается вся конфигурация веб сервера.

Перейти к скринкасту "Обзор главного конфигурационного файла apache2.conf WEB сервера Apache в Ubuntu"

 

Оригинальный файл apache2.conf с комментариями

Приведенный здесь файл apache2.conf сделан из оригинального файла от стандартной установки Apache в Ubuntu 16.04. Примечания на английском заменены на пояснения и краткое описание директив на русском. Порядок следования директив сохранен как в оригинальном файле.

# /etc/apache2/apache2.conf - ГЛАВНЫЙ конфиг Apache.
# Здесь задаются в основном глобальные настройки применимые к всему серверу и
# всем сайтам, хотя технически можно задавать и локальные настройки сайтов.
# Документация
# и в файле /usr/share/doc/apache2/README.Debian на вашем Ubuntu сервере
#
# Ссылка на Обзор конфигурации Apache в Ubuntu
#------------------------------------------------------------------------------

# ГЛОБАЛЬНАЯ КОНФИГУРАЦИЯ
#
# Нужно сказать, что директивы могут иметь значения по умолчанию, и поэтому
# если они не указаны явно в конфигах, они все равно участвуют в
# конфигурации, но со своими параметрами по умолчанию.
#------------------------------------------------------------------------------

# ServerRoot
# Syntax:    ServerRoot directory-path
# Default:    ServerRoot /etc/apache2
# Context:    server config
# Status:    Core
# Module:    core
# Директива ServerRoot, определяет путь к домашней директории Apache с
# конфигурационными файлами. По умолчанию имеет значение "/etc/apache2".
# Внимание, завершающего слеша в пути НЕ должно быть!
# По умолчанию директива закомментирована, что равносильно ее значению
# "/etc/apache2"
#
#ServerRoot "/etc/apache2"
#------------------------------------------------------------------------------

# Mutex
# Syntax:    Mutex mechanism [default|mutex-name] ... [OmitPID]
# Default:   Mutex default
# Context:   server config
# Status:    Core
# Module:    core
# Директива устанавливает механизм исключений при доступе к ресурсам для
# Apache и его модулей. Опционально в ней указывается путь расположения
# файла блокировки, который должен быть на ЛОКАЛЬНОМ диске.
#
# Здесь file:путь указан через подстановку переменной APACHE_LOCK_DIR,
# значение, для которой задано в файле "/etc/apache2/envvars"
# как /var/lock/apache2
#
# Второй аргумент задает механизм исключения как default, при котором
# блокировка выполняется как определено Apache Portable Runtime (APR).
#
# Блокировку можно отобразить, запустив сервер с опцией: sudo apache2 -V
# Изменять заданные здесь аргументы может потребоваться, если механизм по
# умолчанию имеет проблемы функционирования или производительности.
#
# В большинстве случаев не требуется изменять заданные здесь по умолчанию
# аргументы директивы Mutex, поэтому оставьте здесь все по умолчанию.
#
Mutex file:${APACHE_LOCK_DIR} default
#------------------------------------------------------------------------------

# PidFile
# Syntax:    PidFile filename
# Default:   PidFile /var/run/apache2/apache2.pid
# Context:   server config
# Status:    MPM
# Module:    event, worker, prefork, mpm_winnt, mpmt_os2
# Директива задает путь к файлу в котором сервер должен записать свой процесс:
# идентификационный номер, когда она начинается.
# Аргумент директивы задается как переменная APACHE_PID_FILE значение для
# которой задано в файле /etc/apache2/envvars как /var/run/apache2/apache2.pid
# Данное значение в большинстве случаев не требует корректировки, поэтому
# оставьте его как создано по умолчанию.
#
PidFile ${APACHE_PID_FILE}
#------------------------------------------------------------------------------

# Timeout
# Syntax:    TimeOut seconds
# Default:   TimeOut 60
# Context:   server config, virtual host
# Status:    Core
# Module:    core
# Директива Timeout задет количество секунд, в течение которых Apache будет ждать
# завершения обработки операций ввода или вывода для запроса перед отказам клиенту.
# По истечении этого времени, если процесс не завершиться, Apache выдаст отказ в
# обработке запроса по таймауту.
#
# По умолчанию значение установлено как 5 минут, что вполне достаточно для работы
# большинства скриптов и для получения входящих данных.
# Если у вас нет "тяжелых" сценариев, то можно это время уменьшить, например,
# до 180 секунд (3 минуты).
#
Timeout 300
#------------------------------------------------------------------------------

# KeepAlive
# Syntax:    KeepAlive On|Off
# Default:   KeepAlive On
# Context:   server config, virtual host
# Status:    Core
# Module:    core
# Директива KeepAlive определяет разрешать или нет удержание соединения с
# клиентом в активном состоянии, для выполнения нескольких запросов.
#
# По умолчанию, значение директивы ON, что заставляет Apache удерживать активным
# соединение с клиентом и позволяет за одно соединение выполнить несколько
# запросов. Максимальное допустимое количество запросов в открытом
# соединении определяется в директиве MaxKeepAliveRequests ниже.
# Если значение KeepAlive будет установлено в off, то за одно соединение будет
# выполнен только одни запрос, после которого соединение будет тут же закрываться.
# Для большинства случаев значение директивы следует задавать как on.
#
KeepAlive On
#------------------------------------------------------------------------------

# MaxKeepAliveRequests
# Syntax:    MaxKeepAliveRequests number
# Default:   MaxKeepAliveRequests 100
# Context:   server config, virtual host
# Status:    Core
# Module:    core
# Директива MaxKeepAliveRequests задает максимально допустимое количество запросов
# внутри одного открытого активного соединения с клиентом.
# Если установить в 0, то количество запросов для открытого соединения будет
# не ограничено. Это даже рекомендовано.
# После превышения установленного значения соединение будет закрываться.
# Данный параметр рекомендовано устанавливать в максимально возможно значение
# для большей производительности.
#
MaxKeepAliveRequests 100
#------------------------------------------------------------------------------

# KeepAliveTimeout
# Syntax:    KeepAliveTimeout num[ms]
# Default:   KeepAliveTimeout 5
# Context:   server config, virtual host
# Status:    Core
# Module:    core
# Директива KeepAliveTimeout задает время в секундах удержания соединения активным
# в ожидании запроса клиента, т.е. максимальное время простоя активного соединения.
#
# Если активное соединение простаивает в течении этого времени (нет повторного
# запроса от того же клиента), то оно будет закрыто.
#
# Установка KeepAliveTimeout в большое значение может привести к снижению
# производительности в сильно загруженных серверах. Чем выше это значение, тем
# больше серверных процессов будет занятых ожиданием ответа!
#
KeepAliveTimeout 5
#------------------------------------------------------------------------------

# User
# Group
# Syntax:    User unix-userid
# Syntax:    Group unix-group
# Context:   server config
# Status:    Base
# Module:    mod_unixd
# Директивы User и Group задают имя пользователя и имя группы пользователя от
# имени, которых Apache будет обрабатывать запрошенные клиентом файлы и ресурсы.
#
# Если у вас PHP работает как модуль Apache, то php файлы будут обрабатываться от
# имени указанных User и Group. Учитывайте это при настройке прав на каталоги сайта.
#
# В стандартной инсталляции в Apache в Ubuntu Apache работает в однопользовательском
# режиме от имени указанных здесь User и Group. Если вы хотите что бы Apache
# обрабатывал виртуальные хосты от имени разных пользователей, то для этого нужно
# установить Apache модуль libapache2-mpm-itk
# из репозитория [universe] Ubuntu. После этого вы можете в виртуальном хосте директивой
# AssignUserId назначить USER GROUP конкретно для данного виртуального хоста.
# Context:    virtual host
# Syntax:     AssignUserID user-id group-id
# <IfModule mpm_itk_module>
#  AssignUserId USER GROUP
# </IfModule>
# Значение директив задано в переменные в файле /etc/apache2/envvars, где
# APACHE_RUN_USER=www-data и APACHE_RUN_GROUP=www-data

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
#------------------------------------------------------------------------------

# HostnameLookups
# Syntax:    HostnameLookups On|Off|Double
# Context:   server config, virtual host, directory
# Default:   HostnameLookups Off
# Status:    Core
# Module:    core
# Если директива HostnameLookups включена, то при записи сообщения в лог файл
# Apache будет указывать доменное имя клиента. Если директива выключена,
# то Apache будет указывать только IP-адрес клиента в лог файле.
# Например, www.apache.org (on) или 205.60.128.130 (off).
#
# Без надобности лучше не включать, т.к. если включить, то Apache будет для
# каждого клиента выполнять как минимум один обратный DNS запрос на определение
# доменного имени клиента на основе его IP, что увеличит нагрузку на сервер и
# время обработки запроса.
#
HostnameLookups Off
#------------------------------------------------------------------------------

# ErrorLog
# Syntax:    ErrorLog file-path|syslog[:facility]
# Context:   server config, virtual host
# Status:    Core
# Module:    core
# Директива ErrorLog задает расположение общего файла журнала ошибок и его имя.
# Если вы не укажете эту директиву в своем конфиге виртуального хоста, где можно
# тоже задать свой файл лога ошибок, то тогда Apache будет писать сообщения об
# ошибках вашего виртуального хоста в общий лог файл указанный здесь.
# Если вы указали свой ErrorLog для виртуального хоста, то ошибки этого
# виртуального хоста уже не будут писаться в общий лог, указанный здесь.
#
# Значение директивы задано в файле /etc/apache2/envvars, где
# APACHE_LOG_DIR=/var/log/apache2, поэтому по умолчанию путь будет вида:
# /var/log/apache2/error.log
#
# Формат строк лога ошибок (ErrorLog) задается директивой
# ErrorLogFormat
# Context:    server config, virtual host,
# и задан уже по умолчанию, поэтому если он вас устраивает, то тогда
# вам не нужно задавать ErrorLogFormat директиву явно.
#
ErrorLog ${APACHE_LOG_DIR}/error.log
#------------------------------------------------------------------------------

# LogLevel
# Syntax:    LogLevel [module:]level [module:level] ...
# Context:   server config, virtual host, directory
# Default:   LogLevel warn
# Status:    Core
# Module:    core
# Available values: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
#
# Директива LogLevel определяет уровень сообщений для записи в лог файл указанный
# в директиве ErrorLog. Если указать уровень warn, то будут записаны все сообщения
# уровня warn(сообщения), error(ошибки), crit(критические), alert(предупреждения),
# emerg(авария).
#
# Так же можно индивидуально задать уровень для отдельных модулей сервера, например,
# LogLevel info ssl:warn будет означать, для всех info, а для ssl warn только.
#
LogLevel warn
#------------------------------------------------------------------------------

# Подключение директорий с конфигами модулей, для загрузки их конфигураций
# Пути указаны относительные по отношению к ServerRoot "/etc/apache2"
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Подключение файла с директивами задания портов.
# Путь указан относительно ServerRoot "/etc/apache2"
Include ports.conf
#------------------------------------------------------------------------------

# В этой секции представлено несколько блоков директив <Directory>, которые
# в целях безопасности выполняют ограничения и разрешения доступа к каталогом
# файловой системы.
#
# Данная секция директив задана здесь по умолчанию при стандартной установке
# Apache в Ubuntu и обеспечивает минимально необходимые меры по настройке
# безопасности web сервера.
#
# Общая логика задания директив здесь такая: вначале выполняют запрет на обращение
# из браузера ко всем файлам и каталогам в Ubuntu, а затем уже открывают разрешения
# только конкретным каталогам и файлам в файловой системе Ubuntu.
#
# Заданные здесь по умолчанию ограничения и разрешения могут быть переопределены вами
# как здесь (глобально), так и в ваших конфигах виртуальных хостов.
#
# В общем случае можно порекомендовать оставить здесь только блок директив запрета
# для обращений к корню файловой системы, а все остальные, разрешающие блоки вынести
# от сюда в конфиги ваших виртуальных хостов.

<Directory />
    # Блок устанавливает запрет на доступ из браузера ко всем файлам и каталогам,
    # через запрет на доступ к корню файловой системы Ubuntu
    
    # Options
    # Директива Options определяет, доступные опции web сервера в данном каталоге
    # Context:    server config, virtual host, directory, .htaccess
    # Default:    Options FollowSymlinks
    # FollowSymLinks - разрешает серверу открывать символьные ссылки
    Options FollowSymLinks
    
    # AllowOverride
    # НЕ читать файлы .htaccess в локальных директориях
    AllowOverride None
    
    # Запрет доступа для всех
    Require all denied
</Directory>

# После установки ограничений идет блок директив установки разрешений.
<Directory /usr/share>
    # Блок разрешает доступ для всех к директории /usr/share в файловой системе
    
    # НЕ читать файлы .htaccess в локальных директориях
    AllowOverride None
    
    # Разрешить доступ всем
    Require all granted
</Directory>

<Directory /var/www/>
    # Блок разрешает доступ для всех к директории /var/www/ в файловой системе
    
    # Indexes - разрешить выводить в браузере список файлов директории
    # FollowSymLinks - разрешает серверу открывать символьные ссылки
    Options Indexes FollowSymLinks
    
    # НЕ читать файлы .htaccess в локальных директориях
    AllowOverride None
    
    # Разрешить доступ всем
    Require all granted
</Directory>

#<Directory /srv/>
# Комментированный блок заготовка
# Блок разрешает доступ для всех к директории /srv/ в файловой системе
#  
#    Indexes - разрешить выводить в браузере список файлов директории
#    FollowSymLinks - разрешает серверу открывать символьные ссылки
#    Options Indexes FollowSymLinks
#
#    НЕ читать файлы .htaccess в локальных директориях
#    AllowOverride None
#
#    Разрешить доступ всем
#    Require all granted
#</Directory>
#------------------------------------------------------------------------------

# AccessFileName
# Syntax:    AccessFileName filename [filename] ...
# Default:   AccessFileName .htaccess
# Context:   server config, virtual host
# Status:    Core
# Module:    core
# Директива AccessFileName устанавливает имя (только имя) файла, который Apache
# будет искать в каждом каталоге сайта. Этот файл используется для директив
# конфигурации уровня каталога сайта (Context: .htaccess).
# По умолчанию здесь используется имя .htaccess, но вы можете задать любое другое
#
AccessFileName .htaccess
#------------------------------------------------------------------------------

# FilesMatch
# Syntax:    <FilesMatch regex> ... </FilesMatch>
# Context:   server config, virtual host, directory, .htaccess
# Override:  All
# Status:    Core
# Module:    core
# Блок кода в директиве FilesMatch устанавливает запрет доступа к файлам вида
# .htaccess и .htpasswd веб-клиентам
#
<FilesMatch "^\.ht">
    # Запретить доступ всем
    Require all denied
</FilesMatch>
#------------------------------------------------------------------------------

# LogFormat
# Syntax:    LogFormat format|nickname [nickname]
# Context:   server config, virtual host
# Status:    Base
# Module:    mod_log_config
# Директива LogFormat задает формат строк лога доступа (CustomLog) и имя этого
# формата для использования его в директиве
# CustomLog
# Context:   server config, virtual host,
# Module:    mod_log_config
# Status:    Base
# которая позволяет задать отдельный пользовательский лог файл обращений для
# вашего виртуального хоста, если вы решите вести этот лог отдельно от общего
# лога виртуальных хостов.
# Обычно нет необходимости изменять заданные здесь значения.
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
#------------------------------------------------------------------------------

# Подключение конфигурационных файлов из каталога conf-enabled домашней
# директории Apache
IncludeOptional conf-enabled/*.conf

# Подключение конфигурационных файлов виртуальных хостов из каталога
# sites-enabled директории Apache
IncludeOptional sites-enabled/*.conf

 

Скринкаст: Обзор главного конфигурационного файла apache2.conf WEB сервера Apache в Ubuntu

В данном скринкасте представлен полный обзор содержания и директив главного конфигурационного файла /etc/apache2/apache2.conf web сервера Apache в Ubuntu. Описаны все директивы и их параметры.

Смотреть скринкаст Обзор главного конфигурационного файла apache2.conf WEB сервера Apache в Ubuntu

Содержание скринкаста:

Смотреть на YouTube скринкаст: Обзор главного конфигурационного файла apache2.conf WEB сервера Apache в Ubuntu