大家好,又见面了,我是你们的朋友全栈君。
前言
以下是在自己的腾讯云vps(ubuntu16.04)操作,通过oneinstack安装lamp的,本文通过apxs安装mod_proxy.so
模块。
正文
apxs是apache管理模块的工具,它做的是将mod.c生成mod.so,并使其能被apache加载,使用apxs的前提:mod_so
已被加载
- 查看相关信息
## 注:以下httpd路径以自己服务器为准
## 查看是否加载了mod_so模块
/usr/local/apache/bin/httpd -l
## 列出编译过的模块,可看出是static静态,还是shared动态
/usr/local/apache/bin/httpd -M
## 查看apache版本
/usr/local/apache/bin/httpd -v
## 笔者的是2.2.34
Server version: Apache/2.2.34 (Unix)
- 安装apxs
## 搜索
locate apxs
## 如果没有就安装吧
sudo apt-get install apache2-dev
## 更新查询数据库
sudo updatedb
## 查询是否有apxs
locate apxs
## 有内容显示一般就是成功了
apache安装模块的流程是这样的(以mod_proxy.so为例子):
- 找到
mod_proxy.c
文件,即源文件,这个上官网下载源码包,注意对应自己的版本。 - 将
mod_proxy.c
编译,弄成mod_proxy.so
放到modules/
下。 - 在apache配置文件
httpd.conf
加上LoadModule 语句 找.c文件 使用apxs,第二三步一个命令就可完成
- 使用apxs 参数说明
-i : 把生成的.so文件移动到modules目录下(大概这个意思)
-c : 编译,.c->.so
-a : 在httpd.conf加上LoadModule该模块语句语句
具体使用
代码语言:javascript复制## 找到自己mod_proxy.c文件位置,执行apxs
## 注:mod_proxy.so模块需要2个文件编译
/usr/local/apache/bin/apxs -i -c -a mod_proxy.c proxy_util.c
## 查看modules下是否有mod_proxy.so模块
ll /usr/local/apache/modules/mod_proxy.so
## 显示
-rwxr-xr-x 1 root root 151K 1月 7 19:39 /usr/local/apache/modules/mod_proxy.so
## 查看httpd.conf是否LoadModule
cat /usr/local/apache/conf/httpd.conf | grep "proxy"
## 显示
LoadModule proxy_module modules/mod_proxy.so
## 重启httpd
service httpd stop
service httpd start
## 查看加载的模块
/usr/local/apache/bin/httpd -M
至此,使用apxs加载mod_proxy.so
模块完成
使用apxs加载自己的apache模块
在apax的介绍里看到的,顺手记录之,如果自己写了个小模块,也可以通过apxs加载,但我没测试过,具体看官网apxs 参数说明:
代码语言:javascript复制-g : generate,生成.c等文件
-n : 命名
代码语言:javascript复制$ /usr/local/apache/bin/apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/modules.mk
Creating [FILE] foo/mod_foo.c
Creating [FILE] foo/.deps
## 然后也是将.c -> .so
总结
.c
源文件,.o
目标文件,.a
静态库,.so
动态库,用过gcc编译的对使用apxs使用应该很容易就能掌握。
相关链接
- apxs
- 如何向已经安装好的apache添加一个模块
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193596.html原文链接:https://javaforall.cn