这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 apxs,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
apxs - APache 扩展工具
概要
APXS -g [-S 姓名=折扣值 ]-n 模组名称
APXS -q [-v ] [-S 姓名=折扣值 ] 询问 ...
APXS -c [-S 姓名=折扣值 ] [-o 文件 ] [-I 目录 ] [-D 姓名=折扣值 ] [-L 库目录 [
-l 库名 ] [-WC,编译器标志 ] [-,链接器标志 ] 档 ...
APXS -i [-S 姓名=折扣值 ] [-n 模组名称 ] [-a ] [-A ] dso 文件 ...
APXS -e [-S 姓名=折扣值 ] [-n 模组名称 ] [-a ] [-A ] dso 文件 ...
概要
apxs 是为 Apache HyperText 构建和安装扩展模块的工具
传输协议 (HTTP) 服务器。 这是通过构建动态共享对象来实现的
(DSO) 来自一个或多个源或对象 档 然后可以加载到Apache
服务器在运行时通过来自 mod_so 的 LoadModule 指令。
因此,要使用此扩展机制,您的平台必须支持 DSO 功能和您的
Apache httpd 二进制文件必须使用 mod_so 模块构建。 apxs 工具自动
如果不是这种情况,请投诉。 您可以通过手动运行
命令
$ httpd -l
模块 mod_so 应该是显示列表的一部分。 如果这些要求是
完成后,您可以通过安装自己的方式轻松扩展 Apache 服务器的功能
借助此 apxs 工具,具有 DSO 机制的模块:
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/modules/mod_foo.so
chmod 755 /path/to/apache/modules/mod_foo.so
[在 /path/to/apache/etc/httpd.conf 中激活模块 `foo']
$ apachectl 重启
/path/to/apache/sbin/apachectl restart: httpd 未运行,正在尝试启动
[31 年 11 月 27 日星期二 55:1998:XNUMX] [调试] mod_so.c(303): 加载模块 foo_module
/path/to/apache/sbin/apachectl restart: httpd 启动
$_
论据 档 可以是任何 C 源文件 (.c)、目标文件 (.o) 甚至是库
存档 (.a)。 apxs 工具会自动识别这些扩展并自动
使用 C 源文件进行编译,而仅使用目标文件和存档文件进行编译
连接阶段。 但是当使用这样的预编译对象时,请确保它们被编译
位置无关代码 (PIC) 能够将它们用于动态加载的共享
目的。 例如对于 GCC,你总是只需要使用 -fpic。 对于其他 C 编译器
请查阅其手册页或查看 apxs 用于编译目标文件的标志。
有关 Apache 中 DSO 支持的更多详细信息,请阅读 mod_so 或也许
甚至阅读 src/modules/standard/mod_so.c 源文件。
配置
相当常见 附加选项
-n 模组名称
这显式设置了 -i(安装)和 -g(模板
代)选项。 使用它来明确指定模块名称。 对于选项 -g
这是必需的,对于选项 -i,apxs 工具尝试从
源或(作为后备)至少通过从文件名猜测它。
询问 附加选项
-q 对用于构建 httpd 的变量和环境设置执行查询。 什么时候
没有调用 询问 参数,它打印所有已知变量及其值。
可选的 -v 参数格式化列表输出。 .PP 使用它来手动
确定用于构建将加载模块的 httpd 的设置。 例如
如果您需要手动,请在您自己的 Makefile 中使用 INC=-I`apxs -q INCLUDEDIR` .PP
访问 Apache 的 C 头文件。
配置 附加选项
-S 姓名=折扣值
此选项更改上述 apxs 设置。
模板 代 附加选项
-g 这会生成一个子目录 姓名 (请参阅选项 -n)并且有两个文件:一个示例
名为 mod_ 的模块源文件姓名.c 可用作创建模板
您自己的模块或作为使用 apxs 机制的快速入门。 而一个
相应的 Makefile 更容易构建和安装此模块。
迪拜硅绿洲(DSO) 汇编 附加选项
-c 这表示编译操作。 它首先编译 C 源文件 (.c)
of 档 进入对应的目标文件(.o),然后构建一个动态共享的
对象在 文件 通过链接这些目标文件加上剩余的目标文件 (.o
和 .a) 的 档. 如果未指定 -o 选项,则从
第一个文件名 档 因此通常默认为 mod_姓名。所以。
-o 文件
显式指定创建的动态共享对象的文件名。 如果不
指定的名称不能从 档 列表,后备名称
使用 mod_unknown.so。
-D 姓名=折扣值
此选项直接传递给编译命令。 用这个来
将您自己的定义添加到构建过程中。
-I 目录
此选项直接传递给编译命令。 用这个来
添加您自己的包含目录以搜索构建过程。
-L 库目录
此选项直接传递给链接器命令。 使用它来添加您的
自己的库目录来搜索构建过程。
-l 库名
此选项直接传递给链接器命令。 使用它来添加您的
自己的库来搜索构建过程。
-厕所,编译器标志
这个选项通过 编译器标志 作为 libtool --mode=compile 的附加标志
命令。 使用它来添加本地编译器特定的选项。
-Wl,链接器标志
这个选项通过 链接器标志 作为 libtool --mode=link 的附加标志
命令。 使用它来添加本地链接器特定的选项。
-p 此选项使 apxs 链接到 apr/apr-util 库。 这很有用
编译使用 apr/apr-util 库的辅助程序时。
迪拜硅绿洲(DSO) 拼装图 和 配置 附加选项
-i 表示安装操作,动态安装一个或多个
共享对象到服务器的 模块 目录。
-a 这通过自动添加相应的 LoadModule 行来激活模块
到 Apache 的 httpd.conf 配置文件,或者通过启用它(如果它已经存在)。
-A 与选项 -a 相同,但创建的 LoadModule 指令以哈希符号为前缀
(#), 即,该模块只是为以后的激活做准备,但最初是禁用的。
-e 表示编辑操作,可以和 -a 和 -A 选项一起使用
类似于 -i 操作来编辑 Apache 的 httpd.conf 配置文件
无需尝试安装模块。
示例
假设您有一个名为 mod_foo.c 的 Apache 模块可用,它应该扩展 Apache 的
服务器功能。 为此,您首先必须将 C 源代码编译为
适合在运行时通过以下方式加载到 Apache 服务器的共享对象
命令:
$ apxs -c mod_foo.c
/path/to/libtool --mode=编译 gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
$_
然后你必须通过确保 LoadModule 指令来更新 Apache 配置
存在加载此共享对象。 为了简化这一步,apxs 提供了一种自动方式
在其“模块”目录中安装共享对象并更新 httpd.conf 文件
因此。 这可以通过运行来实现:
$ apxs -i -a mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[在 /path/to/apache/conf/httpd.conf 中激活模块 `foo']
$_
这样一行名为
LoadModule foo_module 模块/mod_foo.so
如果仍然不存在,则将其添加到配置文件中。 如果您想禁用此功能
默认使用 -A 选项, 即
$ apxs -i -A mod_foo.c
为了快速测试 apxs 机制,您可以创建一个示例 Apache 模块模板加上
通过以下方式生成相应的 Makefile:
$ apxs -g -n 富
创建 [DIR] foo
创建 [FILE] foo/Makefile
创建 [FILE] foo/modules.mk
创建 [FILE] foo/mod_foo.c
创建 [FILE] foo/.deps
$_
然后您可以立即将此示例模块编译为共享对象并将其加载到
阿帕奇服务器:
$ cd 富
$ 使所有重新加载
apxs -c mod_foo.c
/path/to/libtool --mode=编译 gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[在 /path/to/apache/conf/httpd.conf 中激活模块 `foo']
apachectl重启
/path/to/apache/sbin/apachectl restart: httpd 未运行,正在尝试启动
[31 年 11 月 27 日星期二 55:1998:XNUMX] [调试] mod_so.c(303): 加载模块 foo_module
/path/to/apache/sbin/apachectl restart: httpd 启动
$_
使用 onworks.net 服务在线使用 apxs