Spec-Zone.ru › Apache HTTP Server

Модуль Apache mod_so

Описание: Загрузка исполняемого кода и модулей в сервер при запуске или перезапуске
Статус: Расширение
Идентификатор модуля: so_module
Файл исходного кода: mod_so.c
Совместимость: На Windows это базовый модуль (всегда включён)

Краткое описание

На некоторых операционных системах этот модуль можно использовать для загрузки модулей в веб-сервер Apache HTTP Server во время выполнения с помощью механизма динамических общих объектов (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.

Например:

LoadFile "libexec/libxmlparse.so"

Директива LoadModule

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

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

Например:

LoadModule status_module "modules/mod_status.so"

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

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_so.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API