HTTP сервер Apache версии 2.0

Apache > HTTP сервер > Документация > Версия 2.0

# Переход от версии 1.3 к версии 2.0

Доступные языки: de | en | es | fr | ja | ko | ru

Этот документ необходим для того, чтобы помочь пользователям перейти к использованию сервера версии 2.0. Здесь вы найдёте лишь краткие замечания; более подробную информацию о нововведениях можно найти либо в документе Новые возможности, либо в файле `src/CHANGES`.

### См. также

- Обзор новых возможностей в Apache 2.0

## Изменения в конфигурировании процесса сборки сервера

- Apache теперь использует систему `autoconf` и `libtool` для конфигурирования процесса сборки. Использование этой системы похоже на использование APACI в Apache 1.3, хотя и не является абсолютно тем же самым.
- В добавок к обычному списку модулей, которые вы можете выбрать при сборке сервера, в Apache 2.0 появились мульти - процессные модули (МП - модули), в которых теперь сконцентрирована основная часть кода, отвечающего за обработку запросов.

## Изменения в конфигурировании работы сервера

- Многие из тех директив, которые обслуживались ядром сервера Apache 1.3, теперь перенесены в мульти - процессные модули. Если вы хотите, чтобы поведение сервера было наиболее приближено к поведению Apache 1.3, то при сборке вы должны выбрать МП-модуль `prefork`. Другие МП-модули предоставляют иные директивы, отвечающие за работу процессов сервера и обработку запросов.
- Прокси модуль был переписан, и теперь поддерживает спецификацию HTTP/1.1. Одним из наиболее важных изменений является то, что директивы, контролирующие работу модуля, теперь располагаются в секции `<Proxy>`, а не в <Directory proxy:>, как это было ранее.
- Обработка `PATH_INFO` (путевой информации, следующей за именем запрашиваемого документа) изменилась для некоторых модулей. Модули, которые раньше были написаны как обработчики (handler), а теперь выполняют роль фильтров, могут более не принимать запросы, содержащие `PATH_INFO`. Такие фильтры, как INCLUDES или PHP реализованы первыми в базовом обработчике, таким образом они не могут принимать запросы, содержащие `PATH_INFO`. Вы можете использовать директиву `AcceptPathInfo`, чтобы заставить базовый обработчик принимать подобные запросы, и таким образом восстановить возможность использования `PATH_INFO` в документах, использующих включения на стороне сервера (SSI).
- Директива `CacheNegotiatedDocs` теперь может принимать аргументы `on` и `off`. Уже существующие экземпляры директивы `CacheNegotiatedDocs` должны быть заменены на `CacheNegotiatedDocs on`.
- Директива `ErrorDocument` более не использует открывающую кавычку в начале аргумента для обозначения того, что аргумент является текстовым сообщением. Вместо этого вам необходимо заключать весь текст сообщения в двойные кавычки. Например, существующие директивы

  `ErrorDocument 403 "Некоторое сообщение`

  должны быть заменены на

  `ErrorDocument 403 "Некоторое сообщение"`

  Если второй аргумент не является правильно оформленным идентификатором ресурса (URL) или путевым именем, то он будет интерпретироваться как текстовое сообщение.
- Директивы `AccessConfig` и `ResourceConfig` более не существуют. Имеющиеся их копии могут быть заменены директивой `Include`, которая имеет ту же функциональность. Если прежде вы не включали их в конфигурационные файлы, тем самым используя их значения по умолчанию, то сейчас, для достижения того же результата, вам надо добавить следующие строки в файл httpd.conf: `Include conf/access.conf` и `Include conf/srm.conf`. Для того чтобы быть уверенным в том, что Apache считывает конфигурационные файлы именно в том порядке, который был предусмотрен старыми директивами, надо поместить директивы `Include` в конце файла httpd.conf, причём сперва ту, что включает `srm.conf`, а затем ту, что включает `access.conf`.
- Директивы `BindAddress` и `Port` более не существуют. Эквивалентная функциональность предоставляется более гибкой директивой `Listen`.
- В Apache 1.3 директива `Port` использовалась, кроме всего прочего, для того чтобы сервер мог формировать правильные ссылки на самого себя. В Apache 2.0 для тех же целей служит новый синтаксис директивы `ServerName`: он был изменён таким образом, что теперь имя хоста и номер порта можно указывать в одной этой директиве.
- Директива `ServerType` более не существует. Метод обработки запросов теперь определяется посредством выбора МП-модуля. В настоящее время нет такого МП-модуля, который мог бы запускаться посредством демона inetd.
- Модули `mod_log_agent` и `mod_log_referer`, которые предоставляли такие директивы, как `AgentLog`, `RefererLog` и `RefererIgnore`, были убраны. Ведение журнала агентов пользователей (agent logs) и отправителей (referer logs) по-прежнему возможно посредством использования директивы `CustomLog` модуля `mod_log_config`.
- Директивы `AddModule` и `ClearModuleList` более не существуют. Они использовались для обеспечения правильного порядка загрузки модулей. Новый API для Apache 2.0 позволяет модулям самим указывать порядок их загрузки, что делает эти директивы ненужными.
- Директива `FancyIndexing` была убрана. Ее функциональность теперь обеспечивается опцией `FancyIndexing` в директиве `IndexOptions`
- Алгоритмы контентной негоциации (content-negotiation), реализуемые модулем `mod_negotiation`, стали более строгими в той части, где определяются файлы по умолчанию. Теперь эти алгоритмы будут выбирать файлы только из списка доступных (negotiable) файлов. Старое поведение может быть восстановлено директивой `MultiviewsMatch`.
- (начиная с версии 2.0.51)

  Функциональность директивы `ErrorHeader` была передана директиве `Header`, потому что прежнее название директивы было некорректно. Теперь необходимо писать

  `Header always set foo bar`

  чтобы получить желаемый результат.

## Другие изменения

- Модуль `mod_auth_digest`, который имел экспериментальный статус в Apache 1.3, теперь является стандартным модулем.
- Модуль `mod_mmap_static`, который имел экспериментальный статус в Apache 1.3, заменён модулем `mod_file_cache`.
- Организация дистрибутива полностью изменена и теперь более не содержит независимого каталога `src`. Вместо этого исходные коды логически организованы в основном каталоге дистрибутива, а установка скомпилированного сервера производится в отдельный каталог.

## Модули сторонних разработчиков

Значительные изменения были внесены в API для Apache 2.0. Существующие модули, написанные с использованием Apache 1.3 API, не будут работать под Apache 2.0, если не внести в них необходимые изменения. Более подробная информация по этому поводу доступна в документации для разработчиков.

Доступные языки: de | en | es | fr | ja | ko | ru