<-
Apache HTTP 服务器 2.4 > Apache模块mod_so

Apache模块mod_so

描述:在启动或重启时将可执行代码和模块加载到服务器中
状态:延期
模块标识符:so_module
源文件:mod_so.c
兼容性:这是Windows上的基本模块(始终包括在内)

摘要

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

在Unix上,加载的代码通常来自共享对象文件(通常带有.so扩展名),在Windows上,可以是.so.dll 扩展名。

警告

为一个主要版本的Apache HTTP Server构建的模块通常无法在另一个版本上使用。(例如1.3 vs. 2.0或2.0 vs. 2.2),一个主要版本与另一个主要版本之间通常会进行API更改,因此需要修改模块才能与新版本一起使用。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

为Windows创建可加载模块

注意

在Windows上,可加载文件的文件扩展名通常为.dllmod_whatever.so与其他平台上一样,它们称为Apache httpd模块 。但是,您可能会遇到继续使用该.dll约定的第三方模块(例如PHP)。

尽管mod_so仍然使用ApacheModuleFoo.dll名称加载模块 ,但是首选新的命名约定;如果您要将可装载模块转换为2.0,请将该名称固定为该2.0约定。

在Unix和Windows版本之间,Apache httpd模块API保持不变。许多模块将在Windows上运行,而与Unix相比几乎没有变化,尽管其他模块依赖于Windows中不存在的Unix体系结构,并且将无法正常工作。

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

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

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

module foo_module;

将以上内容替换为:

module AP_MODULE_DECLARE_DATA foo_module;

请注意,这只会在Windows上激活,因此如果需要,该模块可以继续与Unix一起使用,并且保持不变。另外,如果您熟悉.DEF文件,则可以使用该方法导出模块记录。

现在,创建一个包含您的模块的DLL。您需要将其链接到编译libhttpd.dll共享库时创建的libhttpd.lib导出库。您可能还必须更改编译器设置,以确保正确找到Apache httpd头文件。您可以在服务器根目录的modules目录中找到此库。最好从树中获取一个现有的模块.dsp文件,以确保正确配置了构建环境,或者交替比较编译器和链接选项与.dsp。

这将创建模块的DLL版本。现在,只需将其放置在modules服务器根目录下,并使用LoadModule 指令进行加载。

最佳

LoadFile 指令

描述:链接到命名的对象文件或库
句法:LoadFile filename [filename] ...
内容:服务器配置,虚拟主机
状态:延期
模块:mod_so

LoadFile在指定的目标文件或服务器启动或重新启动库指令链接; 这用于加载某些模块可能需要的其他代码。文件名可以是绝对路径,也可以是相对于ServerRoot的相对路径。

例如:

LoadFile "libexec/libxmlparse.so"
最佳

LoadModule 指令

描述:链接到目标文件或库中,并添加到活动模块列表中
句法:LoadModule module filename
内容:服务器配置,虚拟主机
状态:延期
模块:mod_so

LoadModule指令链接目标文件或库 文件名,并将名为module的模块结构添加 到活动模块列表中。模块module文件中类型的外部变量的名称, 在模块文档中列为模块标识符

例如:

LoadModule status_module "modules/mod_status.so"

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

可用语言: zh  |  fr  |  ja  |  ko  |  TR 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。