Linux apache config file

Configuration Files

This document describes the files used to configure Apache HTTP Server.

See also

Main Configuration Files

Related Modules Related Directives
  • mod_mime
  • Include
  • TypesConfig

Apache HTTP Server is configured by placing directives in plain text configuration files. The main configuration file is usually called httpd.conf . The location of this file is set at compile-time, but may be overridden with the -f command line flag. In addition, other configuration files may be added using the Include directive, and wildcards can be used to include many configuration files. Any directive may be placed in any of these configuration files. Changes to the main configuration files are only recognized by httpd when it is started or restarted.

The server also reads a file containing mime document types; the filename is set by the TypesConfig directive, and is mime.types by default.

Syntax of the Configuration Files

httpd configuration files contain one directive per line. The backslash «\» may be used as the last character on a line to indicate that the directive continues onto the next line. There must be no other characters or white space between the backslash and the end of the line.

Arguments to directives are separated by whitespace. If an argument contains spaces, you must enclose that argument in quotes.

Directives in the configuration files are case-insensitive, but arguments to directives are often case sensitive. Lines that begin with the hash character «#» are considered comments, and are ignored. Comments may not be included on the same line as a configuration directive. White space occurring before a directive is ignored, so you may indent directives for clarity. Blank lines are also ignored.

The values of variables defined with the Define of or shell environment variables can be used in configuration file lines using the syntax $ . If «VAR» is the name of a valid variable, the value of that variable is substituted into that spot in the configuration file line, and processing continues as if that text were found directly in the configuration file. Variables defined with Define take precedence over shell environment variables. If the «VAR» variable is not found, the characters $ are left unchanged, and a warning is logged. Variable names may not contain colon «:» characters, to avoid clashes with RewriteMap ‘s syntax.

Only shell environment variables defined before the server is started can be used in expansions. Environment variables defined in the configuration file itself, for example with SetEnv , take effect too late to be used for expansions in the configuration file.

The maximum length of a line in normal configuration files, after variable substitution and joining any continued lines, is approximately 16 MiB. In .htaccess files, the maximum length is 8190 characters.

You can check your configuration files for syntax errors without starting the server by using apachectl configtest or the -t command line option.

You can use mod_info ‘s -DDUMP_CONFIG to dump the configuration with all included files and environment variables resolved and all comments and non-matching and sections removed. However, the output does not reflect the merging or overriding that may happen for repeated directives.

Modules

Related Modules Related Directives
  • mod_so
  • LoadModule

httpd is a modular server. This implies that only the most basic functionality is included in the core server. Extended features are available through modules which can be loaded into httpd. By default, a base set of modules is included in the server at compile-time. If the server is compiled to use dynamically loaded modules, then modules can be compiled separately and added at any time using the LoadModule directive. Otherwise, httpd must be recompiled to add or remove modules. Configuration directives may be included conditional on a presence of a particular module by enclosing them in an block. However, blocks are not required, and in some cases may mask the fact that you’re missing an important module.

To see which modules are currently compiled into the server, you can use the -l command line option. You can also see what modules are loaded dynamically using the -M command line option.

Scope of Directives

Related Modules Related Directives

Directives placed in the main configuration files apply to the entire server. If you wish to change the configuration for only a part of the server, you can scope your directives by placing them in , , , , , and sections. These sections limit the application of the directives which they enclose to particular filesystem locations or URLs. They can also be nested, allowing for very fine grained configuration.

httpd has the capability to serve many different websites simultaneously. This is called Virtual Hosting. Directives can also be scoped by placing them inside sections, so that they will only apply to requests for a particular website.

Although most directives can be placed in any of these sections, some directives do not make sense in some contexts. For example, directives controlling process creation can only be placed in the main server context. To find which directives can be placed in which sections, check the Context of the directive. For further information, we provide details on How Directory, Location and Files sections work.

Читайте также:  Windows 10 не лицензионная не зарегистрирована какие проблемы

.htaccess Files

Related Modules Related Directives
  • AccessFileName
  • AllowOverride

httpd allows for decentralized management of configuration via special files placed inside the web tree. The special files are usually called .htaccess , but any name can be specified in the AccessFileName directive. Directives placed in .htaccess files apply to the directory where you place the file, and all sub-directories. The .htaccess files follow the same syntax as the main configuration files. Since .htaccess files are read on every request, changes made in these files take immediate effect.

To find which directives can be placed in .htaccess files, check the Context of the directive. The server administrator further controls what directives may be placed in .htaccess files by configuring the AllowOverride directive in the main configuration files.

For more information on .htaccess files, see the .htaccess tutorial.

Comments

Copyright 2021 The Apache Software Foundation.
Licensed under the Apache License, Version 2.0.

Источник

Apache web server configuration files

Apache webserver reads its configuration files every time it’s started. The configuration files are in plain text format, and Apache will need to restart every time there are changes in the configuration file for the changes to take effect.

The location of Apache‘s main configuration file is set during compile-time and differs between distributions. The configuration will be split into multiple files for ease of management and separation of concern. It will then be called from the main configuration file using Include and IncludeOptional directives.

You can always check the location of the main configuration file by running the Apache binary for your distribution with the -V option and then look for the SERVER_CONFIG_FILE value.

Combine the output for both HTTPD_ROOT and SERVER_CONFIG_FILE If the output doesn’t provide an absolute full path of the configuration file.

Default Apache configuration location

The location of Apache main configuration file is different for most distributions, and they would split the configuration files differently. The following table lists how the configuration file is managed for different distributions:

Option Debian, Ubuntu openSUSE and SLES Fedora Core, CentOS, RHEL macOS homebrew xampp
Base directory /etc/apache2/ /etc/apache2/ /etc/httpd/ /private/etc/apache2/ /usr/local/etc/httpd/ /apache/conf/
Main configuration apache2.conf httpd.conf conf/httpd.conf httpd.conf httpd.conf httpd.conf
ServerRoot apache2.conf n/a conf/httpd.conf httpd.conf httpd.conf httpd.conf
DocumentRoot sites-enabled/*.conf default-server.conf conf/httpd.conf httpd.conf httpd.conf httpd.conf, extra/httpd-ssl.conf
VirtualHost sites-enabled/*.conf vhosts.d/*.conf conf/httpd.conf httpd.conf, other/*.conf httpd.conf httpd.conf, extra/httpd-ssl.conf
LoadModule mods-enabled/*.load loadmodule.conf conf.modules.d/*.conf httpd.conf, extra/*.conf httpd.conf httpd.conf, extra/*.conf
Log apache2.conf, sites-enabled/*.conf httpd.conf, vhosts.d/*.conf conf/httpd.conf httpd.conf httpd.conf httpd.conf
User / Group apache2.conf, envvars uid.conf conf/httpd.conf httpd.conf httpd.conf httpd.conf

Path for files and directories are relative to the Base directory if it doesn’t start with a /; e.g. conf/httpd.conf for CentOS‘s main configuration file translates to /etc/httpd/conf/httpd.conf.

Default Apache configuration value

Apart from using a different location for the main configuration file, different distributions also use different values for Apache configuration options.

The table below lists some of the default configuration values for Apache on different distributions.

Option Debian, Ubuntu openSUSE and SLES Fedora Core, CentOS, RHEL macOS homebrew xampp
ServerRoot /etc/apache2/ n/a /etc/httpd /usr/ /usr/local/opt/httpd/ /apache/
DocumentRoot /var/www/html/ /srv/www/ /var/www/html /Library/WebServer/Documents/ /usr/local/var/www/ /htdocs/
Module Location /usr/lib/apache2/modules/ /usr/lib64/apache2-prefork/ modules/ libexec/apache2/ lib/httpd/modules/ modules/
Access / Error log /var/log/apache2 /var/log/apache2/ logs/ /private/var/log/apache2/ /usr/local/var/log/httpd/ logs/
User www-data wwwrun apache _www _www daemon
Group www-data www apache _www _www daemon
Binary name apache2 httpd httpd httpd httpd httpd

Path for files and directories are relative to the Base directory if it doesn’t start with a /; e.g. modules/ for CentOS‘s module directory translates to /etc/httpd/modules/.

Absolute paths which start with /, such as Ubuntu‘s module location, are based on the root directory.

Comment anonymously. Login not required.

Источник

Обзор конфигурации Apache в Ubuntu

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

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

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 создается следующая структура файлов и каталогов домашней директории веб сервера:

Приведенные примеры представлены из 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 имеют контекст (Context ), в котором они действуют. Понятие контекст директивы указывает на то, где, на каком уровне и в каком конфиге данная директива может использоваться. Одна и та же директива может быть разрешена к использованию как только в одном виде контекста, так и в нескольких видах контекста. Если директива будет использована/записана в недопустимом для нее виде контекста, то будет ошибка web сервера Apache при загрузке конфигурации, которая приведет к его остановке. Поэтому, при написании ваших директив, всегда обращайте внимание на контекст их применения, который всегда указывается в документации к директиве на сайте Apache.

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

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

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

;

  • .htaccess — уровень локального каталога сайта, директива может применяться в файле .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 в конфигурацию сервера используйте команды: a2enconf/a2disconf

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

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

    a2enmod/a2dismod

    Для активации установленного модуля Apache из каталога mods-available и деактивации его используйте команды: a2enmod/a2dismod

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

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

    a2ensite/a2dissite

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

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

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

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

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

    или

    или

    где:

    • apache2ctl — сокращение от apache2 — c on t ro l — это специальная отдельная утилита (Apache HTTP server control interface) для контроля и управления Apache2демоном (daemon httpd). apache2ctl возвращает выходное значение 0 при успехе и > 0, если возникает ошибка. Необходимо так же, что бы были установлены переменные среды: APACHE_RUN_USER, APACHE_RUN_GROUP, и APACHE_PID_FILE, которые, по умолчанию, заданы в главном конфиге Apache — apache2.conf;
    • apache2 — это обращение к /etc/init.d/apache2 демону(службе) httpd web сервера Apache через переменную среды.
    • command — команды: start, stop, restart, fullstatus, status, graceful, graceful-stop, configtest, help, startssl;
    • httpd-argument — это аргументы для httpd демона: [ -d serverroot ] [ -f config ] [ -C directive ] [ -c directive ] [ -D parameter ] [ -e level ] [ -E file ] [ -k start | restart | grace-ful | stop | graceful-stop ] [ -R directory ] [ -h ] [ -l ] [ -L ] [ -S ] [ -t ] [ -v ] [ -V ] [ -X ] [ -M ]

    Внимание: команды apache2ctl и apache2 имеют разный синтаксис аргументов, однако утилита apache2ctl способна обрабатывать как свои собственные команды, так и команды предназначенные для apache2 и поэтому является более универсальной.

    Примеры команд управления Apache только для утилиты apache2ctl

    Замечание: на продуктивном сервере нужно стремиться выполнять graceful варианты перезапуска и остановки при которых выполняется ожидание завершения текущих запросов клиентов, что является более корректным как для пользователей, так и для целостности данных, обрабатываемых в текущий момент.

    Примеры команд для варианта apache2 [httpd-argument] — где: httpd-argument — это один или несколько аргументов из описанных ниже:

    Системные команды для Apache

    В Ubuntu для Apache, так же как и для других служб системы, доступны команды вида:

    Примеры общих системных команд управления Apache web сервером:

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

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

    Скринкаст: Обзор конфигурации Apache в Ubuntu

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

    Источник

    Читайте также:  Running 32 bit windows on 64 bit system
    Оцените статью