В статье представлен обзор главного конфигурационного файла apache2.conf WEB сервера Apache в Ubuntu при стандартном варианте инсталляции LAMP в Ubuntu. Описаны все директивы этого файла и их параметры.
apache2.conf
Файл /etc/apache2/apache2.conf является главным конфигурационным файлом web сервера Apache и загружается в первую очередь. В этом конфиге расположены основные директивы глобального уровня контекста и выполняются подключения других файлов и каталогов конфигурации сервера. Таким образом, по цепочке, загружается вся конфигурация веб сервера.
Оригинальный файл 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} #------------------------------------------------------------------------------ # 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 #------------------------------------------------------------------------------ # 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 #------------------------------------------------------------------------------ # MaxKeepAliveRequests # Syntax: MaxKeepAliveRequests number # Default: MaxKeepAliveRequests 100 # Context: server config, virtual host # Status: Core # Module: core # Директива MaxKeepAliveRequests задает максимально допустимое количество запросов # внутри одного открытого активного соединения с клиентом. # Если установить в 0, то количество запросов для открытого соединения будет # не ограничено. Это даже рекомендовано. # После превышения установленного значения соединение будет закрываться. # Данный параметр рекомендовано устанавливать в максимально возможно значение # для большей производительности. # MaxKeepAliveRequests #------------------------------------------------------------------------------ # KeepAliveTimeout # Syntax: KeepAliveTimeout num[ms] # Default: KeepAliveTimeout 5 # Context: server config, virtual host # Status: Core # Module: core # Директива KeepAliveTimeout задает время в секундах удержания соединения активным # в ожидании запроса клиента, т.е. максимальное время простоя активного соединения. # # Если активное соединение простаивает в течении этого времени (нет повторного # запроса от того же клиента), то оно будет закрыто. # # Установка KeepAliveTimeout в большое значение может привести к снижению # производительности в сильно загруженных серверах. Чем выше это значение, тем # больше серверных процессов будет занятых ожиданием ответа! # KeepAliveTimeout #------------------------------------------------------------------------------ # 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 #------------------------------------------------------------------------------ # 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}/ #------------------------------------------------------------------------------ # 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 #------------------------------------------------------------------------------ # Подключение директорий с конфигами модулей, для загрузки их конфигураций # Пути указаны относительные по отношению к ServerRoot "/etc/apache2" IncludeOptional IncludeOptional # Подключение файла с директивами задания портов. # Путь указан относительно ServerRoot "/etc/apache2" Include #------------------------------------------------------------------------------ # В этой секции представлено несколько блоков директив <Directory>, которые # в целях безопасности выполняют ограничения и разрешения доступа к каталогом # файловой системы. # # Данная секция директив задана здесь по умолчанию при стандартной установке # Apache в Ubuntu и обеспечивает минимально необходимые меры по настройке # безопасности web сервера. # # Общая логика задания директив здесь такая: вначале выполняют запрет на обращение # из браузера ко всем файлам и каталогам в Ubuntu, а затем уже открывают разрешения # только конкретным каталогам и файлам в файловой системе Ubuntu. # # Заданные здесь по умолчанию ограничения и разрешения могут быть переопределены вами # как здесь (глобально), так и в ваших конфигах виртуальных хостов. # # В общем случае можно порекомендовать оставить здесь только блок директив запрета # для обращений к корню файловой системы, а все остальные, разрешающие блоки вынести # от сюда в конфиги ваших виртуальных хостов. <Directory /> # Блок устанавливает запрет на доступ из браузера ко всем файлам и каталогам, # через запрет на доступ к корню файловой системы Ubuntu # Options # Директива Options определяет, доступные опции web сервера в данном каталоге # Context: server config, virtual host, directory, .htaccess # Default: Options FollowSymlinks # FollowSymLinks - разрешает серверу открывать символьные ссылки Options # AllowOverride # НЕ читать файлы .htaccess в локальных директориях AllowOverride # Запрет доступа для всех Require </Directory> # После установки ограничений идет блок директив установки разрешений. <Directory /usr/share> # Блок разрешает доступ для всех к директории /usr/share в файловой системе # НЕ читать файлы .htaccess в локальных директориях AllowOverride # Разрешить доступ всем Require </Directory> <Directory /var/www/> # Блок разрешает доступ для всех к директории /var/www/ в файловой системе # Indexes - разрешить выводить в браузере список файлов директории # FollowSymLinks - разрешает серверу открывать символьные ссылки Options # НЕ читать файлы .htaccess в локальных директориях AllowOverride # Разрешить доступ всем Require </Directory> #<Directory /srv/> # Комментированный блок заготовка # Блок разрешает доступ для всех к директории /srv/ в файловой системе # # Indexes - разрешить выводить в браузере список файлов директории # FollowSymLinks - разрешает серверу открывать символьные ссылки # Options # # НЕ читать файлы .htaccess в локальных директориях # AllowOverride # # Разрешить доступ всем # Require #</Directory> #------------------------------------------------------------------------------ # AccessFileName # Syntax: AccessFileName filename [filename] ... # Default: AccessFileName .htaccess # Context: server config, virtual host # Status: Core # Module: core # Директива AccessFileName устанавливает имя (только имя) файла, который Apache # будет искать в каждом каталоге сайта. Этот файл используется для директив # конфигурации уровня каталога сайта (Context: .htaccess). # По умолчанию здесь используется имя .htaccess, но вы можете задать любое другое # AccessFileName #------------------------------------------------------------------------------ # FilesMatch # Syntax: <FilesMatch regex> ... </FilesMatch> # Context: server config, virtual host, directory, .htaccess # Override: All # Status: Core # Module: core # Блок кода в директиве FilesMatch устанавливает запрет доступа к файлам вида # .htaccess и .htpasswd веб-клиентам # <FilesMatch "^\.ht"> # Запретить доступ всем Require </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\"" LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" LogFormat "%h %l %u %t \"%r\" %>s %O" LogFormat "%{Referer}i -> %U" LogFormat "%{User-agent}i" #------------------------------------------------------------------------------ # Подключение конфигурационных файлов из каталога conf-enabled домашней # директории Apache IncludeOptional # Подключение конфигурационных файлов виртуальных хостов из каталога # sites-enabled директории Apache IncludeOptional
Скринкаст: Обзор главного конфигурационного файла apache2.conf WEB сервера Apache в Ubuntu
В данном скринкасте представлен полный обзор содержания и директив главного конфигурационного файла /etc/apache2/apache2.conf web сервера Apache в Ubuntu. Описаны все директивы и их параметры.
Содержание скринкаста:
- Главный конфиг apache2.conf...................................00:46
- Директива ServerRoot..........................................01:30
- Директива Mutex...............................................01:46
- Директива PidFile.............................................03:11
- Директива Timeout.............................................03:31
- Директива KeepAlive, MaxKeepAliveRequests, KeepAliveTimeout...04:22
- Директивы User, Group.........................................06:47
- Директива HostnameLookups.....................................08:34
- Директивы ErrorLog, ErrorLogFormat, LogLevel..................09:36
- Блок Include для других конфигов Apache.......................11:50
- Блок настройки доступов к файловой системе....................12:26
- Директивы AccessFileName, FilesMatch..........................15:13
- Директива LogFormat, CustomLog................................15:52
- Блок Include виртуальных хостов...............................16:24
Автор: Андрей Болдырев