编译和安装Apache 1.3

    这篇文档涵盖了在Unix系统上编译和安装Apache, 手动建立和安装的方法. 如果你希望使用自动配置方式的界面, 你应该阅读 Apache源码发行版的根目录下的INSTALL文件. 若在一些特定的平台上安装,请看

?      Using Apache with Microsoft Windows

?      Using Apache with Novell Netware 5

?      Using Apache with HP MPE/iX

?   Compiling Apache under UnixWare

?   Overview of the Apache TPF Port

  下载 Apache

        Apache 最新的版本信息可以在 Apache web 服务器 http://www.apache.org/.上找到. 它会列出当前的版本, 当前beta测试版本, 以及一些镜象web站点和匿名ftp站点..

    如果你下载了可执行的发行版, 直接跳到安装 Apache. 否则继续读下一节,怎样编译Apache服务器.

   编译 Apache

    编译Apache要经过三步: 首先选择你希望包含进去的Apache 模块. 然后为你的操作系统创建一个配置. 最后编译出可执行文件.

    所有的配置工作都是在Apache发行版的src目录下完成的. 改变其为当前目录.

1.   在配置文件中选择要编译进Apache的模块. 没有注释的行对应于那些可选的,你希望加入的模块(AddModule 行之间,在文件最底部), 或者加一些对应于你下载的或写的附加模块新行. (怎样编写初步的Apache模块详见 API.html). 高级用户如果确信不需要一些默认模块, 可以注释掉它们 (虽然如此也要小心, 因为很多默认模块对于正确的运作和服务器安全非常重要).

你也必须阅读配置文件中的说明以确定你是否需要这些策略行.

2.   为你的操作系统配置Apache. 通常你只需象下面那样运行 Configure脚本. 但是如果这样失败了或者你有一些特殊需求 (例如, 包含一个可选模块需要的附加库) 你或许就需要编辑配置文件中以下的一个或几个选项: EXTRA_CFLAGS, LIBS, LDFLAGS, INCLUDES.

运行配置Configure脚本:

    % Configure

    Using 'Configuration' as config file

     + configured for <whatever> platform

     + setting C compiler to <whatever> *

     + setting C compiler optimization-level to <whatever> *

     + Adding selected modules

     + doing sanity check on compiler and options

    Creating Makefile in support

    Creating Makefile in main

    Creating Makefile in os/unix

    Creating Makefile in modules/standard

  

(*: 依赖于你的配置文件和系统, Configure可能不会打印出这些行.那也是正常的).

这会为第三步生成一个Makefile文件. 还会在support目录下为可选的支持程序编译生成一个Makefile文件.

(如果你想维护多个配置,你可以给Configure一个选项告诉它读哪一个替代的配置文件, 例如Configure -file Configuration.ai).

3.   键入 make.

    我们放入Apache发行版的的模块是我们测试过并在开发小组不同成员中使用过的. 一些成员或第三方开发的用于特殊场合的模块可以在<http://www.apache.org/dist/contrib/modules/>获得. 在上面有吧这些模块链接入Apache核心代码的说明.

  安装 Apache

    你现在在src目录下应该有了一个叫httpd的可执行文件. Apache的可执行发行版本会包含这个文件.

    下一步就是安装这个程序并配置它. Apache被设计成在和编译时的同一组目录下配置和运行. 如果你想在别的地方运行,建立一个目录并把conf, logsicons 目录拷贝过去. 不论是哪种情况你必须阅读security tips以知道怎样为服务器的根目录设置权限.

    在下一步就是为服务器编辑配置文件. 这包含在三个主要的配置文件中设置不同的指令(directives). 缺省情况下, 这些文件在conf目录下,称为srm.conf, access.confhttpd.conf. 为了帮助你开始了解,在发行版的conf目录下有相同的文件, 叫做srm.conf-dist, access.conf-disthttpd.conf-dist. 拷贝或重命名这些文件把-dist去掉. 然后编辑这些文件. 认真读每个文件中的注释. 错误的设置这些文件会导致你的服务器不能工作或不安全. 你在conf目录下也应该有叫做mime.types的附加文件. 这个文件不用编辑.

    首先编辑httpd.conf. 这个文件设置了常用的服务器的属性: 端口号, 作为哪个用户运行等等. 然后编辑srm.conf文件; 这个文件设置了文档的根目录树, 特殊的功能如server-parsed HTML或internal imagemap parsing等等. 最后, 编辑access.conf文件最少要设置访问的基本情形.

    除了这三个文件, 服务器的行为也可以一个目录一个目录的在服务器访问的目录下由 .htaccess文件设置.

    正确设置你的系统时间!

    公共服务器的正常工作需要准确的时间, 因为HTTP协议的元素(element)是用一天中的时间(the time of day)来表示的. 所以, 必须调查NTP或其他一些Unix上的同步设施, 或和它们等价的NT上的设置.

    开始运行和中止服务器

    要开始运行服务器只需简单地运行httpd. 它会在编译入系统的位置找到httpd.conf文件(摸认为 /usr/local/apache/conf/httpd.conf). 如果此文件在别的地方,你可以用-f 参数给出其位置. 例如:

    /usr/local/apache/httpd -f /usr/local/apache/conf/httpd.conf

    如果一切顺利,就会立即返回到命令行提示符下. 这表示服务器已经启动并开始运行了. 如果在初始化服务器时出错,你在屏幕上会看到一个错误信息. 如果服务器正常启动了, 你现在就可以用浏览器连接到你的服务器并可以浏览了. 如果你是在安装服务器的同一台机器上并且用默认端口80, 你可以在浏览其中使用URL:

    http://localhost/

    注意,服务器启动后,会创建一系列的子进程来响应请求. 如果你以root来启动的服务器,副进程会一直以root运行,而子进程会切换到httpd.conf文件设置的用户运行.

    如果当你运行httpd时, 它给出不能"绑定"到一个地址信息, 那么或者是其他的进程已经在使用你为Apache配置的端口, 或者是你以一个普通用户的身份运行 httpd但却试图使用1024以下的端口(例如缺省端口80).

    如果服务器不能运行, 看看当你运行httpd时显示的错误信息. 你也应检查服务器的错误日志 以得到一些附加的信息(在缺省情况下, 错误日志会在logs目录下).

    如果你希望重起后服务器自动运行, 你必须在你的启动文件中加一个httpd调用(一般是 rc.local或在rc.N 目录下的一个文件). 这样就会以root启动Apache. 在这样做之前,你必须保证你的服务器已经为安全和访问权限做好了配置.

    要中止Apache给父进程发送一个TERM信号. 这个进程的PID被写在logs目录下的httpd.pid文件里(除非被另外配置过). 不要尝试杀死子进程因为它们可以被父进程更新. 一个典型的中止服务器的命令是:

    kill -TERM `cat /usr/local/apache/logs/httpd.pid`

    为了得到更多的关于Apache命令行选项,配置和日志的信息, 请看Starting Apache. 一个所有关于Apache所发布的模块支持的Apache directives 的访问手册, 请看Apache directives.

  编译支持程序(Support program)

    除了前面编译和配置的最主要的httpd服务器外, Apache还包含了很多支持程序. 这些不会缺省的被编译. 这些支持程序被放在support目录下. 要编译它们, 切换到该目录下然后键入:
   
make