• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mod_so

    描述:在 start-up 或重启 time 时将可执行的 code 和模块加载到服务器中
    状态:延期
    模块标识符:so_module
    源文件:mod_so.c
    兼容性:这是 Windows 上的 Base 模块(总是包含在内)

    摘要

    在选定的操作系统上,此模块可用于在运行时通过动态共享 Object(DSO)机制将模块加载到 Apache HTTP Server,而不需要重新编译。

    在 Unix 上,加载的 code 通常来自共享 object files(通常带有.so扩展名),在 Windows 上,这可能是.so.dll扩展名。

    警告

    为 Apache HTTP Server 的一个主要 version 构建的模块通常不适用于另一个。(e.g. 1.3 与 2.0,或 2.0 与 2.2)通常在一个主要的 version 与另一个主要版本之间进行 API 更改,这需要修改模块以使用新的 version。

    为 Windows 创建可加载模块

    注意

    在 Windows 上,其中可加载的 files 通常具有.dll的文件扩展名,Apache httpd 模块被称为mod_whatever.so,就像它们在其他平台上一样。但是,您可能会遇到 third-party 模块,例如 PHP for example,继续使用.dll约定。

    虽然mod_so仍然加载带有ApacheModuleFoo.dll名称的模块,但新的命名约定是首选;如果要将可加载模块转换为 2.0,请将 name 修改为此 2.0 约定。

    Unix 和 Windows 版本之间的 Apache httpd 模块 API 没有变化。许多模块将在 Windows 上运行,没有或几乎没有来自 Unix 的变化,尽管其他模块依赖于 Windows 中不存在的 Unix architecture 方面,并且不起作用。

    当模块工作时,可以通过两种方式之一将其添加到服务器。与 Unix 一样,它可以编译到服务器中。因为 Windows 的 Apache httpd 没有 Apache httpd for Unix 的Configure程序,所以必须将模块的源文件添加到 ApacheCore 项目文件中,并且必须将其符号添加到os\win32\modules.c文件中。

    第二种方法是将模块编译为 DLL,这是一个可以在运行时使用LoadModule指令加载到服务器中的共享 library。这些模块 DLL 可以在任何 Apache httpd 上分发和运行 Windows 安装,无需重新编译服务器。

    要创建模块 DLL,模块的源文件需要进行小的更改:模块 record 必须从 DLL 导出(稍后将创建;请参见下文)。为此,请将AP_MODULE_DECLARE_DATA(在 Apache httpd 标头 files 中定义)添加到模块的模块 record 定义中。例如,如果您的模块具有:

    module foo_module;

    将以上内容替换为:

    module AP_MODULE_DECLARE_DATA foo_module;

    请注意,这只会在 Windows 上激活,因此如果需要,模块可以继续使用,不使用 Unix。此外,如果您熟悉.DEF files,则可以使用该方法 export 模块 record。

    现在,创建一个包含模块的 DLL。您需要将此链接与编译 libhttpd.dll shared library 时创建的 libhttpd.lib export library 相关联。您可能还必须更改编译器设置以确保正确定位 Apache httpd 标头 files。您可以在服务器根目录的模块目录中找到此 library。最好从树中获取现有的模块.dsp 文件,以确保正确配置 build 环境,或者将编译器和链接选项与.dsp 进行比较。

    这应该创建模块的 DLL version。现在只需将其放在服务器根目录的modules目录中,然后使用LoadModule指令加载它。

    LoadFile 指令

    描述:链接在命名的 object 文件或 library 中
    句法:LoadFile filename[filename]...
    Context:server config,virtual host
    状态:延期
    模块:mod_so

    启动或重新启动服务器时,LoadFile指令链接到命名的 object files 或 libraries;这用于加载一些模块可能需要的额外 code。文件名是绝对路径或相对于ServerRoot。

    例如:

    LoadFile "libexec/libxmlparse.so"
    

    LoadModule 指令

    描述:object 文件或 library 中的链接,并添加到 active 模块列表中
    句法:LoadModule module filename
    Context:server config,virtual host
    状态:延期
    模块:mod_so

    LoadModule指令链接在 object 文件或 library 文件名中,并将名为 module 的模块结构添加到 active 模块列表中。 Module 是文件中module类型的外部变量的 name,在模块文档中列为模块标识符。

    例如:

    LoadModule status_module "modules/mod_status.so"
    

    从 ServerRoot 的 modules 子目录加载命名模块。

    上篇:mod_slotmem_shm

    下篇:mod_socache_dbm