HTTP сервер Apache версии 2.0
Этот документ освещает вопросы компилирования и установки сервера Apache только на UNIX и UNIX-подобных системах. Если вы хотите установить сервер под Windows, то вам необходимо прочесть документ "Использование Apache под Microsoft Windows". Информация, касающаяся остальных платформ, содержится в документе "Платформы".
Среда конфигурирования и установки сервера полностью отличается от той, которая была в Apache 1.3. Apache 1.3 использовал обычный набор скриптов, позволявший упростить процесс установки. Apache 2.0 теперь использует системы libtool
и autoconf
, что делает сервер похожим на другие программные продукты с открытым исходным кодом (Open Source projects).
Загрузка | $ lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz |
Распаковка | $ gzip -d httpd-2_0_NN.tar.gz |
Конфигурирование | $ ./configure --prefix=PREFIX |
Компилирование | $ make |
Установка | $ make install |
Настройка | $ vi PREFIX/conf/httpd.conf |
Пробный запуск | $ PREFIX/bin/apachectl start |
NN необходимо заменить на текущий младший номер версии, а вместо PREFIX надо указать путь, по которому должен быть установлен сервер. Если PREFIX не указан, то установка по умолчанию производится в каталог /usr/local/apache2
.
Более подробно все этапы компилирования и установки сервера рассмотрены ниже, причем начинается следующий раздел с описания системных требований, необходимых, для того чтобы установка прошла успешно.
Требования, необходимые для успешной сборки сервера:
PATH
был указан каталог, содержащий основные утилиты, необходимые для сборки (make
и другие).ntpdate
или xntpd
, основанные на сетевом протоколе синхронизации времени (Network Time Protocol - NTP). Для получения более подробной информации об NTP и серверах синхронизации времени, обратитесь в группу новостей Usenet comp.protocols.time.ntp, а также посетите домашнюю страницу NTPconfigure
' не найдет его в вашей системе, то вы все равно сможете собрать и установить Apache 2.0 - в этом случае не будут работать только перечисленные выше вспомогательные скрипты. Если в вашей системе установлено несколько интерпретаторов с языка Perl (например Perl 4 и Perl 5), то для того чтобы скрипт ./configure
выбрал нужный, выполните его с опцией --with-perl
(описание смотрите ниже).Apache можно загрузить со страницы загрузки Apache HTTP Software Foundation, на которой также приводится список некоторых зеркальных серверов. Здесь вы найдете самую последнюю стабильную версию сервера.
После загрузки, особенно если она происходила с зеркального сервера, необходимо убедиться, что у вас в руках полная, неизмененная версия HTTP сервера Apache. Это выполняется тестированием архива (tarball) на соответствие PGP подписи, что является, в свою очередь, двушаговой процедурой. Во-первых, вы должны загрузить файл KEYS
со страницы загрузки Apache Software Foundation. (Для того чтобы быть уверенным в том, что сам файл KEYS
не был изменен, его лучше взять из предыдущего дистрибутива Apache или взять с сервера открытых ключей.) Затем ключи можно импортировать в вашу личную базу данных ключей посредством следующих команд (в зависимости от версии pgp):
$ pgp < KEYS
или
$ gpg --import KEYS
Следующий шаг заключается в непосредственной проверке архива (tarball) с использованием PGP подписи, которую всегда надо брать на основном веб-сервере Apache. Файл с PGP подписью имеет то же имя, что и архив дистрибутива плюс окончание .asc
. Проверить дистрибутив можно, набрав следующие команды (опять же, это зависит от версии pgp, установленного в вашей системе):
$ pgp httpd-2_0_NN.tar.gz.asc
или
$ gpg --verify httpd-2_0_NN.tar.gz.asc
Вы должны увидеть что-то вроде:
Good signature from user "Martin Kraemer <[email protected]>".
В зависимости от доверительных отношений, содержащихся в вашей базе данных ключей, вы можете также получить сообщение о том, что отношение между ключем и тем, кто им подписался, невозможно установить. Это не должно вас беспокоить в том случае, если вы уверены в подлинности файла KEYS
.
Распаковка архива исходных кодов Apache HTTP сервера заключается в его непосредственной распаковке и разархивировании (untarring):
$ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar
После выполнения этих команд будет создан новый каталог с исходными кодами дистрибутива. Вы должны зайти в этот каталог, прежде чем начнете компилировать сервер.
Следующий шаг заключается в конфигурировании дерева исходных кодов в соответствии с той системой, на которую вы устанавливаете сервер, и вашими собственными нуждами. Это делается при помощи скрипта configure
, расположенного в корневом каталоге дистрибутива. Разработчики, загружающие дерево исходных кодов посредством CVS, должны установить в своей системе утилиты autoconf
и libtool
и выполнить программу buildconf
, прежде чем они смогут продолжнить установку. В официальных выпусках сервера этого делать не требуется.
Для конфигурирования дерева исходных кодов, с использованием значений всех опций по умолчанию, просто выполните скрипт ./configure
без параметров. Для того чтобы изменить значения опций, скрипт configure
предлагает широкий набор переменных и опций командной строки. При этом переменные окружения помещаются перед командой ./configure
, в то время как остальные опции - после. Наиболее важная опция здесь - это префикс каталога установки, то есть тот путь, по которому впоследствии будет установлен Apache. Но помимо этой существует еще большой выбор опций, необходимых для тонкой настройки сервера.
Для того чтобы получить представление о гибкости процесса конфигурирования Apache, рассмотрите приведенный ниже типичный пример запуска скрипта ./configure
. Такая конфигурация позволяет компилировать сервер в каталог /sw/pkg/apache
, используя указанный компилятор с несколькими предназначенными для него опциями командной строки, и установить еще два добавочных модуля mod_rewrite
и mod_speling
, которые можно будет потом использовать посредством механизма DSO.
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared
При выполнении, скрипт configure
проверяет, установлено ли в вашей системе все необходимое, а затем создает Make-файлы (Makefiles), которые будут затем использованы при компилировании сервера.
Наиболее простой способ узнать обо всех доступных конфигурационных опциях - это выполнить команду ./configure --help
. На экран будет выведено краткое описание практически всех доступных опций и переменных окружения.
Программа autoconf
использует ряд переменных окружения для конфигурирования среды сборки. Вообще, посредством этих переменных можно изменить лишь метод сборки сервера - контролировать включение и выключение дополнительных опций сервера этим невозможно. Эти переменные можно включить в среду до вызова скрипта configure
, но проще всего это сделать так, как было показано в примере выше.
CC=...
CPPFLAGS=...
CFLAGS=...
LDFLAGS=...
LIBS=...
-L
" и "-l
"), передаваемая компоновщику.INCLUDES=...
-Idir
").TARGET=...
[По умолчанию: apache
]NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
NOTEST
. Разница заключается в том, что они добавляются в среду после того, как autoconf выполнил тестирование возможностей операционной среды. Это позволяет использовать те опции, которые бы вызвали ошибку при подобном тестировании, но включение которых обязательно для окончательной сборки сервера.SHLIB_PATH=...
--help
--quiet
checking...
"--verbose
В настоящее время существуют два способа задания путей, по которым Apache установит свои файлы. Первый способ - это явно указать Apache каталог, по которому он установится.
--prefix=PREFIX
[По умолчанию: /usr/local/apache2
]Более того, существует возможность установить архитектурно - зависимые файлы в другой специально заданный каталог.
--exec-prefix=EPREFIX
[Default: PREFIX
]Второй способ является более гибким. Он заключается в использовании файлов config.layout
. Используя этот метод, можно указать каталог установки для любого типа файлов Apache. Файл config.layout
содержит несколько примеров конфигурирования. Используя эти примеры, вы можете сами создавать собственные конфигурации установки. Различные макеты установок группируются в раздельных секциях <Layout FOO>...</Layout>
, после чего к ним можно обращаться посредством имени FOO
.
--enable-layout=LAYOUT
config.layout
, в котором прописаны все установочные пути.Apache - это модульный сервер. Только самые основные функции включены в ядро сервера. Дополнительная функциональность доступна посредством модулей. Во время процесса конфигурации вы должны выбрать те модули, которые будут компилироваться вместе с сервером. Обо всех доступных модулях вы можете прочитать в соответствующем списке модулей. Модули, статус которых обозначен как "Базовый", компилируются вместе с сервером по умолчанию; если вам не нужны некоторые базовые модули, вы должны специально это указать при конфигурации (базовым модулем, например, является mod_userdir
). Модули с другим статусом не компилируются вместе с сервером по умолчанию, и (в случае необходимости) должны быть прописаны при конфигурировании отдельно (примером такого модуля может послужить mod_expires
).
Есть два способа указать Apache использовать какой - либо модуль. Модули могут быть скомпилированы как статические, при этом их код включается непосредственно в исполняемый код сервера Apache. Или же, если ваша операционная система поддерживает динамически разделяемые объекты (Dynamic Shared Objects) и и autoconf
может определить, что это так, то модули могут быть скомпилированы как динамические. DSO модули хранятся отдельно от ядра сервера, и могут использоваться сервером в зависимости от конфигурационных директив времени выполнения (то есть отвечающих за работу уже собранного сервера), предоставляемых модулем mod_so
. Модуль mod_so автоматически включается в ядро сервера, если хотя бы один модуль компилируется как динамический. Если же вы не компилируете никакие динамические модули, но хотите, чтобы ваш сервер все же был способен работать с DSO модулями, то при конфигурировании укажите следующую опцию: --enable-so
.
--enable-MODULE[=shared]
=shared
.--disable-MODULE
--enable-modules=MODULE-LIST
--enable-mods-shared=MODULE-LIST
Например, чтобы включить в сервер модули mod_dav
и mod_info
, вы можете использовать либо
./configure --enable-dav --enable-info
либо эквивалентную предыдущей команду
./configure --enable-modules="dav info"
В дополнение к этому существуют специальные ключевые слова all
или most
, которые могут быть использованы для компилирования всех или большинства модулей сразу. Вы можете исключить из этого списка нежелательные модули, применяя соответствующие опции --disable-MODULE
. Например, для того чтобы включить в работу сервера все модули как DSO за исключением mod_info
, вы можете написать следующее
./configure --enable-mods-shared=all --disable-info
В добавление к стандартному набору модулей, Apache 2.0 компилируется вместе с некоторым мульти - процессным модулем (MPMs). Один и только один МП - модуль может быть скомпилирован вместе с сервером. Список МП - модулей, компилируемых по умолчанию для каждой платформы, можно найти в соответствующем разделе документации; МП - модуль по умолчанию можно изменить следующей опцией командной строки configure
--with-mpm=NAME
Некоторые модули Apache, как например mod_auth_dbm
и mod_rewrite
(директива RewriteMap
), используют в своей работе простые базы данных, организованные по принципу ключ/значение, что увеличивает скорость доступа к информации. Поддержка SDBM баз данных включена в ядро сервера, так что использование баз данных подобного типа возможно всегда. Если вам нужны базы данных другого типа, то можете использовать следующие опции:
--with-gdbm[=path]
--with-ndbm[=path]
--with-berkeley-db[=path]
/lib
и path/include
. Можно также указать специфические пути для заголовочных файлов и библиотек, написав их через точку с запятой.Вместе с Apache можно найти вспомогательную программу suexec, которая позволяет установить более жесткий контроль над выполнением пользовательских CGI программ. Тем не менее, если suexec сконфигурировать неправильно, то могут появиться значительные бреши в системе безопасности сервера. Поэтому вы должны очень внимательно прочитать документацию suexec, если решите использовать эту программу.
Теперь вы можете скомпилировать и собрать сервер Apache, выполнив следующую команду:
$ make
Наберитесь терпения - компилирование сервера с базовой конфигурацией (конфигурацией по умолчанию) занимает приблизительно три минуты на такой системе, как Pentium III/Linux 2.2. Реальное время сборки будет зависеть от вашего аппаратного обеспечения и от количества модулей, которые вы решили компилировать вместе с сервером.
Теперь настало время для установки сервера в каталог PREFIX, который был указан при конфигурирования Apache (смотрите выше опцию --prefix
), выполнив:
$ make install
Если устанавливать Apache поверх предыдущей версии сервера, то старые конфигурационные файлы и документы будут оставлены без изменений.
Далее вы можете настроить ваш HTTP сервер Apache посредством редактирования конфигурационных файлов в каталоге PREFIX/conf/
.
$ vi PREFIX/conf/httpd.conf
Руководство по использованию Apache вы можете найти либо по локальному адресу у себя на сервере docs/manual/, либо на официальном сайте Apache http://httpd.apache.org/docs-2.0/, где опубликована самая последняя версия документации и вся необходимая справочная информация по всем возможным конфигурационным директивам.
Теперь вы можете запустить свой HTTP сервер Apache, выполнив следующую команду:
$ PREFIX/bin/apachectl start
и если все прошло успешно, то вы сможете запросить свой первый документ по адресу http://localhost/
. Веб - страница, которую вы увидете, находится в каталоге DocumentRoot
- по умолчанию, это PREFIX/htdocs/
. Затем остановите сервер следующей командой:
$ PREFIX/bin/apachectl stop