Apache Версия 2.0 Сервера HTTP
Apache Сервер HTTP - модульная программа, где администратор может выбрать функциональные возможности, чтобы включить в сервер, выбирая ряд модулей. Модули могут быть статически собраны в
httpd
набор из двух предметов, когда сервер построен. Альтернативно, модули могут быть собраны как Динамические Разделенные Объекты (DSOs), которые существуют отдельно от основного
httpd
бинарный файл. Модули цифрового запоминающего осциллографа могут быть собраны в то время, когда сервер построен, или они могут быть собраны и добавлены в более позднее время, используя Apache Инструмент Расширения (
apxs
).
этот документ описывает, как использовать модули цифрового запоминающего осциллографа так же как теорию позади их использования.
Связанные Модули | Связанные Директивы |
---|---|
поддержка цифрового запоминающего осциллографа загружать индивидуальные Apacheские модули основана на названном модуле
mod_so
который должен быть статически собран в Apacheское ядро. Это - единственный модуль кроме того
core
который не может быть помещен в цифровой запоминающий осциллограф непосредственно. Фактически все другие распределенные Apacheские модули могут тогда быть помещены в цифровой запоминающий осциллограф, индивидуально позволяя цифровой запоминающий осциллограф, строят для них через
configure
's
--enable-
module
=shared
выбор как обсуждено в
install documentation
. после того, как модуль собран в названный цифровой запоминающий осциллограф
mod_foo.so
Вы можете использовать
mod_so
's
LoadModule
команда в вашем
httpd.conf
файл, чтобы загрузить этот модуль при запуске сервера или переначале.
упростить это создание файлов цифрового запоминающего осциллографа для Apacheских модулей (специально для имеющих отношение к третьей стороне модулей) новая названная программа поддержки
apxs
(
АПАЧСКОЕ расширение
) доступно. Это может использоваться, чтобы строить базируемые модули цифрового запоминающего осциллографа
вне
Apacheское исходное дерево. Идея проста: устанавливая Apacheа
configure
's
make install
процедура устанавливает Apacheские файлы удара головой C и помещает зависимый платформой компилятор и флаги компоновщика для того, чтобы строить файлы цифрового запоминающего осциллографа в
apxs
программа. Этим путем пользователь может использовать
apxs
собирать его Apacheские источники модуля без Apacheского дерева источника распределения и не имея необходимость играть с зависимым платформой компилятором и флагами компоновщика для поддержки цифрового запоминающего осциллографа.
чтобы давать Вам краткий обзор особенностей цифрового запоминающего осциллографа Apacheа 2.0, вот - короткое и краткое резюме:
mod_foo.c
, в его собственный цифровой запоминающий осциллограф
mod_foo.so
:
$ ./configure --prefix=/path/to/install --enable-foo=shared
$ make install
mod_foo.c
, в его собственный цифровой запоминающий осциллограф
mod_foo.so
:
$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
$ make install
$ ./configure --enable-so
$ make install
mod_foo.c
, в его собственный цифровой запоминающий осциллограф
mod_foo.so
вне
Apacheское исходное использование дерева
apxs
:
$ cd /path/to/3rdparty
$ apxs -c mod_foo.c
$ apxs -i -a -n foo mod_foo.la
во всех случаях, когда-то разделенный модуль собран, Вы должны использовать a
LoadModule
директива в
httpd.conf
сказать Apacheу активизировать модуль.
на современных производных Unix там существует изящный механизм, обычно называемый динамическим соединением/погрузкой Динамические Разделенные Объекты (цифровой запоминающий осциллограф), который обеспечивает способ строить часть кодекса программы в специальном формате для того, чтобы загрузить это во времени выполнения в адресное пространство выполнимой программы.
эта погрузка может обычно делаться двумя способами: Автоматически системой программа звонила
ld.so
когда выполнимая программа запущена или вручную изнутри программы выполнения через с программным управлением интерфейс системы на погрузчик Unix через запросы системы
dlopen()/dlsym()
.
первым способом цифровой запоминающий осциллограф обычно называются
разделенные библиотеки
или
библиотеки цифрового запоминающего осциллографа
и названный
libfoo.so
или
libfoo.so.1.2
. они проживают в справочнике системы (обычно
/usr/lib
) и связь к выполнимой программе установлена в, строят разовый, определяя
-lfoo
к команде компоновщика. Эта библиотека твердых кодексов ссылается в выполнимый файл программы так, чтобы в разовом началом погрузчик Unix был в состоянии определить местонахождение
libfoo.so
в
/usr/lib
, в дорожках, трудно-закодированных через варианты компоновщика как
-R
или в дорожках, формируемых через переменную окружающей среды
LD_LIBRARY_PATH
. это тогда решает любого (все же нерешенный) символы в выполнимой программе, которые являются доступными в цифровом запоминающем осциллографе.
на символы в выполнимой программе обычно не ссылается цифровой запоминающий осциллограф (потому что это - библиотека многократного использования общего кодекса), и следовательно никакое дальнейшее решение не должно быть сделано. Выполнимая программа не имеет никакой потребности сделать что - нибудь самостоятельно, чтобы использовать символы от цифрового запоминающего осциллографа, потому что полное решение сделано погрузчиком Unix. (Фактически, кодекс, чтобы призвать
ld.so
является частью кодекса запуска во время выполнения, который связан в каждую выполнимую программу, которая была связана нестатическая). Преимущество динамической погрузки общего кодекса библиотеки очевидно: кодекс библиотеки должен быть сохранен только однажды, в библиотеке системы как
libc.so
, экономя дисковое пространство на каждую программу.
вторым способом цифровой запоминающий осциллограф обычно называются
разделенные объекты
или
файлы цифрового запоминающего осциллографа
и можно назвать с произвольным расширением (хотя каноническое название
foo.so
). Эти файлы обычно остаются в определенном для программы справочнике и нет никакой автоматически установленной связи к выполнимой программе, где они используются. Вместо этого выполнимая программа вручную загружает цифровой запоминающий осциллограф во времени выполнения в его адресное пространство через
dlopen()
. в это время не сделано никакое решение символов от цифрового запоминающего осциллографа для выполнимой программы. Но вместо этого погрузчик Unix автоматически решает любого (все же нерешенный) символы в цифровом запоминающем осциллографе от набора символов, экспортируемых в соответствии с выполнимой программой и ее уже нагруженными библиотеками цифрового запоминающего осциллографа (особенно все символы от вездесущего
libc.so
). Этим путем цифровой запоминающий осциллограф получает знание набора символа выполнимой программы, как будто это было статически связано с этим во-первых.
наконец, чтобы использовать в своих интересах программный интерфейс приложения цифрового запоминающего осциллографа выполнимая программа должна решить специфические символы от цифрового запоминающего осциллографа через
dlsym()
для более позднего использования в посылают столы
и т.д.
другими словами: выполнимая программа должна вручную решить каждый символ, должно быть в состоянии использовать это. Преимущество такого механизма состоит в том, что дополнительные части программы не должны быть загружены (и таким образом не тратьте память), пока они не необходимы в соответствии с рассматриваемой программой. Когда требуется, эти части программы могут быть загружены динамически, чтобы расширить функциональные возможности основной программы.
хотя этот механизм цифрового запоминающего осциллографа кажется прямым здесь есть по крайней мере один трудный шаг: решение символов из выполнимой программы для цифрового запоминающего осциллографа, используя цифровой запоминающий осциллограф, чтобы расширить программу (второй путь). Почему? Поскольку "перемена, решая" символы цифрового запоминающего осциллографа от набора символа выполнимой программы - против проекта библиотеки (где библиотека не имеет никакого знания о программах, это используется), и ни доступно подо всеми платформами, ни стандартизированный. Практически глобальные символы выполнимой программы часто не реэкспортируются и таким образом не доступные для использования в цифровом запоминающем осциллографе. Обнаружение способа вызывать компоновщика, чтобы экспортировать все глобальные символы - главная проблема, которую каждый должен решить, используя цифровой запоминающий осциллограф чтобы расширить программу во времени выполнения.
разделенный подход библиотеки - типичный, потому что это - то, для чего был разработан механизм цифрового запоминающего осциллографа, следовательно это используется для почти всех типов библиотек, которые операционная система обеспечивает. С другой стороны использование разделенных объектов чтобы расширять программу не используется большим количеством программ.
на 1998 есть только несколько доступных пакетов программ, которые используют механизм цифрового запоминающего осциллографа, чтобы фактически расширить их функциональные возможности во времени выполнения: Perl 5 (через его механизм XS и модуль DynaLoader), Сервер Netscape, и т.д. начинаясь с версии 1.3, Apache присоединился к команде, потому что Apache уже использует понятие модуля, чтобы расширить его функциональные возможности и внутренне использует список отправки базируемый подход связать внешние модули в Apacheские основные функциональные возможности. Так, Apache действительно предопределяется для того, чтобы использовать цифровой запоминающий осциллограф, чтобы загрузить его модули во времени выполнения.
вышеупомянутый цифровой запоминающий осциллограф базировался, особенности имеют следующие преимущества:
LoadModule
httpd.conf
конфигурация командует вместо
configure
варианты в строят разовый. Например этот путь каждый в состоянии управлять различными случаями сервера (стандарт & версия SSL, minimalistic & включенный версия [mod_perl, PHP3],
и т.д.
) только с одной Apacheской установкой.
apxs
пара, в которой Вы можете и работать вне Apacheского исходного дерева и только нуждаться
apxs -i
команда, сопровождаемая
apachectl restart
приносить новую версию вашего в настоящее время развиваемого модуля в бегущий Apache сервер.
цифровой запоминающий осциллограф имеет следующие неудобства:
ld -lfoo
) на всех платформах (например a.out-базирующиеся платформы обычно не обеспечивают эти функциональные возможности, в то время как платформы НА ОСНОВЕ ЭЛЬФА делают) Вы не можете использовать механизм цифрового запоминающего осциллографа для всех типов модулей. Или другими словами, модули собирали, поскольку файлы цифрового запоминающего осциллографа ограничены, чтобы только использовать символы от Apacheского ядра, от библиотеки C (
libc
) и все другие динамические или статические библиотеки, используемые Apacheским ядром, или от статических архивов библиотеки (
libfoo.a
) содержащий положение независимый кодекс. Единственные возможности использовать другой кодекс состоят в том, чтобы или удостовериться, что Apacheское ядро непосредственно уже содержит ссылку на это или погрузку кодекса самостоятельно через
dlopen()
.