1.http://www.apache.org/ 下载apache原代码包。放在/home/admin/ 目录下。
2.解压
进入下载的文件夹
[email protected]:~/desktop$ cd /home/admin/
解压出httpd-2.2.16文件夹
[email protected]:~$ tar -zxvf httpd-2.2.16.tar.gz
进入httpd-2.2.16文件夹
[email protected]:~$ cd /httpd-2.2.16
3.编译文件
设置参数及路径
[email protected]:~httpd-2.2.16$ ./configure --prefix=/home/admin/apache
像以上这样设置编译后apache在modules文件夹将没有一个DSO模块动态加载!
使用./configure --help查看帮助!
如下设置:
[email protected]:~httpd-2.2.16$ ./configure --prefix=/home/administrator/program/apache2 --enable-mods-shared=most
enable-mods-shared=most表示加载大多数的模块(动态)
注:使用--enable-mods-shared会自动编译--enable-so
编译
[email protected]:~httpd-2.2.16$ make
[email protected]:~httpd-2.2.16$ make install
安装完成后,看到modules文件夹里已有mod_rewrite.os模块,可是没有mod_proxy.so模块,我们可以以后再添加进去。
4.安装成功后,配置
[email protected]:~httpd-2.2.16$ vi /home/admin/apache/conf/httpd.conf
5.修改文件的所有者和所有组
[email protected]:~httpd-2.2.16$ cd /home/admin/apache
把htdocs文件夹所有者设为nobody 群组设为root
[email protected]:~/apache$ sudo chown -R nobody:root htdocs
6.启动apache
[email protected]:~/admin/apache$ bin/apachectl -k start
或者,如果在当前目录下如果是可执行的文件要前面加./表示当前目录。否则,不会搜索当前目录。
[email protected]:~/admin/apache/bin$ ./apachectl -k start
执行时出现:
(13)Permission denied: make_sock: could not bind to address 127.0.0.1:80
no listening sockets available, shutting down
Unable to open logs
解释:
Apache Permission denied: make_sock
非root用户使用的端口80将无权。你可能不是用root启动apache,1 ~ 1024 端口只有root只能bind。
解决办法
用root用户启动,或者用 sudo su 进root权限,启动。
如果出现:
(98)Address already in use: make_sock: could not bind to address 127.0.0.1:80
no listening sockets available, shutting down
Unable to open logs
可能是有进程已经使用了端口也可能会是adsl的问题,关闭adsl连接,再重启apache服务。
注意:使用好http://httpd.apache.org/docs/2.2/里的帮助文件很重要,整个安装过程里面全有的!
===============================我是分割线==================================
以下转自:http://zydky.javaeye.com/blog/553949
二、安装apache后编译加载其他模块
假定现在需要编译加载mod_rewrite.so
1.进入解压后的apache目录,在第一部分是/home/sxs/software/httpd-2.2.12
2.找到要编译的文件
# find ./ -name mod_rewrite.c
3.进入mod_rewrite.c所在目录
# cd modules/mappers
4.编译mod_rewrite.c
# /usr/local/apache/bin/apxs -c mod_rewrite.c
5.安装mod_rewrite模块
# /usr/local/apache/bin/apxs -ian rewrite mod_rewrite.la
注:以上4、5两个步骤也可以合并为一个步骤
# /usr/local/apache/bin/apxs -iac mod_rewrite.c
注:
apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。
因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apache httpd必须内建了mod_so模块。
apxs工具详细使用见另外的文章《apxs-apache扩展工具》
====================================又是分割线=======================================
以下转自:http://bbs.chinaunix.net/thread-1171348-1-1.html
模块选项有两种使用模块的方法:一是静态连接进核心,二是作为DSO模块动态加载;如果编译中包含任何DSO模块,则mod_so会被自动包含进核心。如果希望核心能够装载DSO,但不实际编译任何DSO模块,则需明确指定"--enable-so=static" 。
一般语法
一般情况下你可以使用如下语法启用或者禁用某个模块:
--disable-MODULE
禁用MODULE模块(仅用于基本模块)
--enable-MODULE=shared
将MODULE编译为DSO(可用于所有模块)
--enable-MODULE=static
将MODULE静态连接进核心(仅用于扩展和实验模块)
--enable-mods-shared=MODULE-LIST
将MODULE-LIST中的所有模块都编译成DSO(可用于所有模块)
--enable-modules=MODULE-LIST
将MODULE-LIST静态连接进核心(可用于所有模块)
上述 MODULE-LIST 可以是:
(1)用引号界定并且用空格分隔的模块名列表
--enable-mods-shared='headers rewrite dav'
(2)"most"(大多数模块[遇见错误模块时忽略该模块而不中断配置过程 ])
(3)"all"(所有模块[遇见错误模块时中断配置过程并报错 ])
--enable-mods-shared=most
注意
configure将忽略MODULE和MODULE-LIST中的拼写错误,注意仔细拼写。用于MODULE和MODULE-LIST中的名称 是"mod_NAME"中去掉"mod_"并将剩余部分中的下划线"_"替换为连字符"-"以后的结果,比如"mod_log_config"模块应当表 示为"log-config"。