Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195      196      197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 196. Модуль Apache mod_so

В некоторых операционных системах этот модуль можно использовать для загрузки модулей в HTTP-сервер Apache во время выполнения с помощью механизма динамических общих объектов (DSO), не требуя перекомпиляции.

В Unix загружаемый код обычно поступает из общих объектных файлов (обычно с .so расширением), в Windows это может быть расширение .so или .dll .

Предупреждение

Модули, созданные для одной основной версии Apache HTTP Server, как правило, не будут работать с другой. (например, 1.3 против 2.0 или 2.0 против 2.2) Обычно между одной основной версией и другой есть изменения API, которые требуют модификации модулей для работы с новой версией.

Создание загружаемых модулей для Windows

Примечание

В Windows, где загружаемые файлы обычно имеют расширение .dll , модули Apache httpd называются mod_whatever.so так же, как и на других платформах. Однако вы можете столкнуться со сторонними модулями, такими как, например, PHP, которые продолжают использовать соглашение .dll .

Хотя mod_so модули по-прежнему загружаются с ApacheModuleFoo.dll именами, предпочтительнее использовать новое соглашение об именах; если вы конвертируете загружаемый модуль для версии 2.0, исправьте имя в соответствии с соглашением версии 2.0.

API-интерфейс модуля Apache httpd не изменился между версиями Unix и Windows. Многие модули будут работать в Windows без изменений или с небольшими изменениями по сравнению с Unix, хотя другие полагаются на аспекты архитектуры Unix, которых нет в Windows, и они не будут работать.

Когда модуль работает, его можно добавить на сервер одним из двух способов. Как и в случае с Unix, его можно скомпилировать на сервере. Поскольку Apache httpd для Windows не имеет Configure программы Apache httpd для Unix, исходный файл модуля необходимо добавить в файл проекта ApacheCore, а его символы необходимо добавить в файл os\win32\modules.c .

Второй способ — скомпилировать модуль как DLL, общую библиотеку, которую можно загрузить на сервер во время выполнения с помощью директивы LoadModule . Эти модули DLL можно распространять и запускать на любой установке Apache httpd для Windows без перекомпиляции сервера.

Чтобы создать DLL модуля, необходимо внести небольшое изменение в исходный файл модуля: запись модуля должна быть экспортирована из DLL (которая будет создана позже; см. ниже). Для этого добавьте AP_MODULE_DECLARE_DATA (определено в файлах заголовков Apache httpd) в определение записи модуля вашего модуля. Например, если ваш модуль имеет:

module foo_module;

Замените вышеуказанное на:

module AP_MODULE_DECLARE_DATA foo_module;

Обратите внимание, что это будет активировано только в Windows, поэтому модуль можно будет продолжать использовать без изменений с Unix, если это необходимо. Кроме того, если вы знакомы с .DEF файлами, вы можете вместо этого экспортировать запись модуля с помощью этого метода.

Теперь создайте DLL, содержащую ваш модуль. Вам нужно будет связать это с библиотекой экспорта libhttpd.lib, которая создается при компиляции общей библиотеки libhttpd.dll. Возможно, вам также придется изменить настройки компилятора, чтобы обеспечить правильное расположение файлов заголовков Apache httpd. Вы можете найти эту библиотеку в корневом каталоге модулей вашего сервера. Лучше всего взять существующий файл .dsp модуля из дерева, чтобы убедиться, что среда сборки настроена правильно, или поочередно сравнить параметры компилятора и компоновки с вашим .dsp.

Это должно создать DLL-версию вашего модуля. Теперь просто поместите его в modules корневой каталог вашего сервера и используйте LoadModule директиву для его загрузки.



Директива LoadFile

Описание:Ссылка в указанном объектном файле или библиотеке
Синтаксис: LoadFile filename [filename] ...
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_so

Директивы LoadFile связываются с именованными объектными файлами или библиотеками при запуске или перезапуске сервера; это используется для загрузки дополнительного кода, который может потребоваться для работы некоторых модулей. Имя файла — это либо абсолютный путь, либо относительный путь к ServerRoot.

Например:

 Загрузочный файл "libexec/libxmlparse.so" 


Директива LoadModule

Описание:Связывает объектный файл или библиотеку и добавляет в список активных модулей
Синтаксис: LoadModule module filename
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_so

Директива LoadModule связывает объектный файл или имя файла библиотеки и добавляет структуру модуля с именем module в список активных модулей. Module — это имя внешней переменной типа module в файле, указанное как идентификатор модуля в документации модуля.

Например:

 LoadModule status_module "modules/mod_status.so" 

загружает именованный модуль из подкаталога modules в ServerRoot.



 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195      196      197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru