/ 中存储网

Linux系统编译安装Apache服务器

2013-10-25 23:34:01 来源:itjs.cn

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"。