apache安装扩展模块
apache 安装扩展模块
1,首先要确认你是否加载了mod_so模块,这个就是你在编译前参数配置的时候添加-enable-so(启用DSO)。如果你没有这模块的话,是无法安装扩展模块的。
/usr/local/apache2/bin/apachectl -l 在列出来的内容如果有mod_so,则说明已经添加了加载该模块了。
2,安装扩展模块用到的工具就是apxs, 以安装mod_status.so这个模块为例。
3,cd到apache源码中,找到对应的C文件。
cd /usr/local/src/httpd-2.2.31/modules/generators/

这里我们可以看到mod_status.c这个就是我们需要的文件。
4,编译这个模块
/usr/local/apache2/bin/apxs -i -a -c mod_status.c
这个时候有报错信息
-bash: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: 没有那个文件或目录(错误的解释器)
soga apxs是一个perl的脚本,我们系统又没有安装perl解释器,所以yum install -y perl并且vi /usr/local/apache2/bin/apxs 将第一行改为perl解释器的路径,即#!/usr/bin/perl即可。
这个时候在编译
/usr/local/apache2/bin/apxs -i -a -c mod_status.c
/usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/local/apache2/include -I/usr/local/apache2/include -I/usr/local/apache2/include -c -o mod_status.lo mod_status.c && touch mod_status.slo
/usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_status.la -rpath /usr/local/apache2/modules -module -avoid-version mod_status.lo
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_status.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp mod_status.la /usr/local/apache2/modules/
cp .libs/mod_status.so /usr/local/apache2/modules/mod_status.so
cp .libs/mod_status.lai /usr/local/apache2/modules/mod_status.la
cp .libs/mod_status.a /usr/local/apache2/modules/mod_status.a
chmod 644 /usr/local/apache2/modules/mod_status.a
ranlib /usr/local/apache2/modules/mod_status.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_status.so
可以看到,已经在modules目录下生成了mod_status.so这个模块了。
5,查看模块是否加载成功。
/usr/local/apache2/bin/apachectl -M
发现报错信息:
httpd: Syntax error on line 58 of /usr/local/apache2/conf/httpd.conf: module status_module is built-in and can't be loaded
查询资料,
原来我们原先就已经静态编译加载过mod_status.so这个模块,所以我们还是在httpd.con将这个配置注释掉吧。
二,介于上述找的模块并不是很好,所以决定重新安装另外一个apache扩展模块,以mod_proxy模块为例吧。
1,cd 到源码包中
cd /usr/local/src/httpd-2.2.31/modules
cd proxy

可以看到mod_proxy.c这个文件
2,编译安装
/usr/local/apache2/bin/apxs -i -c -a mod_proxy.c
/usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/local/apache2/include -I/usr/local/apache2/include -I/usr/local/apache2/include -c -o mod_proxy.lo mod_proxy.c && touch mod_proxy.slo
/usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_proxy.la -rpath /usr/local/apache2/modules -module -avoid-version mod_proxy.lo
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_proxy.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp mod_proxy.la /usr/local/apache2/modules/
cp .libs/mod_proxy.so /usr/local/apache2/modules/mod_proxy.so
cp .libs/mod_proxy.lai /usr/local/apache2/modules/mod_proxy.la
cp .libs/mod_proxy.a /usr/local/apache2/modules/mod_proxy.a
chmod 644 /usr/local/apache2/modules/mod_proxy.a
ranlib /usr/local/apache2/modules/mod_proxy.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_proxy.so
[activating module `proxy' in /usr/local/apache2/conf/httpd.conf]
可以看到模块已经安装成功。
3,查看是否可以成功加载
/usr/local/apache2/bin/apachectl -M
httpd: Syntax error on line 59 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_proxy.so into server: /usr/local/apache2/modules/mod_proxy.so: undefined symbol: ap_proxy_lb_workers
怎么又报错,我也是醉了。。。。。
原来这个proxy模块是需要2个文件编译而成的。
重新编译
/usr/local/apache2/bin/apxs -i -c -a mod_proxy.c proxy_util.c

可以看到成功了,不对,我们还是看能否真正的加载吧。
/usr/local/apach2/bin/apachectl -M

终于看到了这个模块的存在,这说明扩展安装成功了。
最后说明一下:/usr/local/apache2/bin/apxs - i -c -a 的中参数的意思。
-c 编译的意思
- i 安装的意思
-a 在配置文件中自动添加IfModule信息。

apache安装扩展模块的更多相关文章
- apache的扩展模块安装
/* 当需要用到Apache的扩展模块时, 就要用到了apache的扩展工具 apxs */ #在使用这个功能之前,请先确认是否已经加载了 mod_so 模块,方法是: [root@localhost ...
- php安装扩展模块(curl模块)
php安装扩展模块的思路: 1,首先找到需要安装的扩展模块的目录.一般在/usr/local/php/ext目录下 但是有的模块php源码中不一定有,需要自己下载比如memcache.redis等. ...
- 阿里云乌班图16配置-PHP环境(包括mysql及apache安装)
1. 安装apache apt-get update apt-get install apache2 service apache2 restart 通过浏览器访问服务器的IP,如果出现Apac ...
- MariaDB和Apache安装
5月24日任务 课程内容: 11.6 MariaDB安装11.7/11.8/11.9 Apache安装扩展apache dso https://yq.aliyun.com/articles/6298a ...
- apache安装mod_deflate配置支持gzip
apache 配置支持gzip apache使用gzip压缩能够大幅提高网站访问速度并节省网络流量,在网页响应头信息中可以判断是否支持压缩. HTTP/1.1 200 OK Date: Wed, 14 ...
- Apache安装
记录安装Apache的流程,没有进行详细配置,只是记录搭建服务器的流程用于学习Ajax等知识,方便以后重新安装,不用每次都翻别人博客学习安装了,大神看到这里可以关掉这个粗糙简陋的博文了. 1. 官网上 ...
- Apache安装配置步骤
注释:这里以Linux 红帽商业版为例~~~~~~~纯手打啊 Apache安装配置步骤 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend ...
- centos apache安装和设置
分类: LINUX 安装方式:yum install httpdyum install mysql-serveryum install phpyum install php-mysql 一.WEB服务 ...
- centos下apache安装后无法访问
2013.11.28遇到的问题: -------------------------------------- 一.centos下apache安装后无法访问 得查一下防火墙的问题 iptables添加 ...
随机推荐
- mysql免安装版配置与使用方法
mysql免安装版配置与使用方法 以mysql-noinstall-5.1.6(win32)为例 1>把压缩文件mysql-noinstall-5.1.6-alpha-win32.zi ...
- NET中级课--文件,流,序列化2
1.流的类型体系: 基础流 装饰器流 包装器类 帮助类 2. stream file~ memory~ network~ stream是个 ...
- 前端--关于CSS
CSS全名层叠样式表,层叠的含义有三个:1.按照特殊性的高低,特殊性高的覆盖特殊性低的样式声明:2.不同属性的样式声明要合并:3.后出现的相同的样式声明覆盖先出现的.所以要改变样式的优先级也有三种方法 ...
- Global.asax使用2
ASP.NET中利用Application和Session统计在线人数.历史访问量 先来简单说一下ASP.NET中的Application和Session 下图是我们非常熟悉的Web应用程序的结构: ...
- asp.net页面按Enter键IE不提交表单
//当按下回车键时,让指定的按钮获取指定的文本框的事件 this.txtFNick.Attributes.Add("onkeydown", " ...
- Oracle 回忆录
简述 工作时间说短也不算短了,掐指一算差不多三年了吧.以前都没有写过Blog,仅偶尔对所学和所用到的做些许整理,后面竟然没有把那留下来,悲催啊!留不下来的整理不是好东西(*^__^*) 嘻嘻……,现在 ...
- 关于uisliderview 监听停止滑动的状态
今天遇到一个问题,做颜色控制的时候,通过slider 改变颜色的亮度.如果直接在slider 上绑定事件,则改变一次就需要向服务器发送一次请求.这种是显然不合理的. 所以使用了下面的解决方法 先将sl ...
- HttpClient中异步方法的同步调用
在System.Net.Http中,提供了使用Http与远程服务器通讯的httpClient,但是里面都是异步方法,有时候我们并不需要使用异步操作.这个时候可以使用如下的方式来进行同步调用. clas ...
- 已知TSP问题的最好解
a280 : 2579ali535 : 202339att48 : 10628att532 : 27686bayg29 : 1610bays29 : 2020berlin52 : 7542bier12 ...
- (转) 学习C++ -> 指针初步
学习C++ -> 指针初步 一.指针 1. 什么是指针? 我们知道, 计算机的内存是由一个个独立的存储单元组成, 并且系统会对每一个存储单元分配一个唯一的号码, 称为这个存储 ...