下一步 上一步 目录

3. 组件安装

3.1 准备工作

您将需要以下软件

这是我使用并推荐的目录布局方案

+ /usr/src
|
+-+ apache
  |
  +-+ apache-1.3.12
  |
  +-+ modules
  | |
  | +-+ mod_perl
  | | |
  | | +- mod_perl-1.21
  | | |
  | | +-+ depend
  | |   |
  | |   +- <perl modules here>
  | |
  | +-+ mod_ssl
  | | |
  | | +- mod_ssl-2.6.2-1.3.12
  | | |
  | | +-+ depend
  | |   |
  | |   +- openssl-0.9.5
  | |   |
  | |   +- rsaref-2.0
  | |   |
  | |   +- mm-1.0.12
  | |
  | +-+ mod_fastcgi_SNAP
  | |
  | +-+ php
  | | |
  | | +- php-3.0.15
  | | |
  | | +-+ depend
  | |   |
  | |   +- gd-1.3
  | |   |
  | |   +- imap-4.5
  | |   |
  | |   +- openldap-1.2.9
  | |
  | +-+ mod_auth_nds
  | | |
  | | +- mod_auth_nds-0.4
  | | |
  | | +-+ depend
  | |   |
  | |   +- ncpfs-2.2.0.17
  | |
  | +-+ mod_auth_mysql
  |
  +-+ mysql

检查以查看您的系统上是否已安装了上述某些模块/软件包。 下载所有内容并安装以防万一通常不会有坏处。 您的系统上可能安装了旧版本。

3.2 mod_ssl

安装和编译 OpenSSL

mod_ssl 需要安装某种 SSL 引擎。 OpenSSL 是 Linux 环境下的自然选择。 您可以通过 RPM 包安装(就像我做的那样),或者从源代码编译安装。 由于我没有从源代码编译安装,所以您需要自行完成,但我认为这应该相当简单。 您很可能将其安装到系统目录(例如 /usr/local),或者将其保留在其目录中,并在需要 OpenSSL 的应用程序中指定其目录路径。

RPM 将 OpenSSL 安装到系统目录中。

安装和编译 RSAREF 2.0

在您喜欢的任何位置创建 rsaref-2.0 目录。 对我来说,这在 /usr/src/apache/modules/mod_ssl-blah/depend/ 中。 更改到此目录。

cd rsaref-2.0
cp -rp install/unix local
cd local
make
mv rsaref librsaref.a

这些命令应该为您构建 rsaref 库! 只需将这些东西留在这里,当您需要链接它时,只需将相应的配置脚本指向此位置即可。

安装和编译 MM

将 mm-1.0.12(或最新版本)解压到 mod_ssl-blah 子目录的 depend 目录中。 执行以下步骤

cd mm-1.0.12
./configure --disable-shared
make

这应该构建您的 mm 库。 如上所述,在需要时引用此路径。 如果您想将此库安装到系统中,您需要自行完成。

安装和编译 mod_ssl(终于!)

使用 apxs 的正常程序是先编译 Apache,然后使用 apxs 编译您要使用的模块并将它们插入到服务器中。 但是,mod_ssl 需要以正常方式编译到服务器中,然后才能通过 apxs 使用它。 一旦 mod_ssl 首次进入服务器,您就可以通过 apxs 升级它,而无需完全重新编译 Apache。

进入您要编译 mod_ssl 的目录并执行以下配置指令(这是我使用的文件)以进行初始编译

#!/bin/sh

./configure \
        --with-apache=/usr/src/apache/apache_1.3.12 \
        --with-ssl \
        --with-rsa=../depend/rsaref-2.0/local \
        --with-mm=../depend/mm-1.0.12 \
        --enable-shared=ssl

您无需在此处运行“make”或任何操作。 当我们编译 Apache 时,它会为我们完成所有操作。

此配置行给出了系统可能设置的两个示例。 在我的情况下,OpenSSL 已经安装在系统中的某个位置(可能在 /usr/lib, /usr/include 中)。 因此,我不需要传递任何位置参数。 但是,rsa 和 mm -not- 在系统上,我自己编译了它们并将它们保留在它们的源代码树中(没有运行 make install 等)。 在这种情况下,您需要将 configure 指向相应的目录,以便它可以找到头文件/库。

从那时起,除非您升级 Apache(在这种情况下,您需要为新版本的 Apache 再次执行上述步骤),否则您可以使用 apxs 升级和重新编译 mod_ssl。 这是我用于此目的的配置脚本

./configure \
        --with-apxs=/apps/apache-1.3.12/bin/apxs \
        --with-ssl=../depend/openssl-0.9.4 \
        --with-rsa=../depend/rsaref-2.0/local \
        --with-mm=../depend/mm-1.0.12

或以上的一些组合。 然后运行

make
make install
make distclean

完成安装。

注意:编译 mod_ssl 不需要 MM。 如果您在使其工作时遇到问题,只需省略编译它以及 ./configure 行中的内容。

当我编译 mod_ssl 时,我遇到了关于 DBM 的错误。 为了解决这个问题,我必须将 -lndbm 添加到 Makefile

希望这能为您节省一些麻烦。

3.3 Apache

将 apache-1.3.12.tar.gz 解压到 /usr/src/apache 或任何位置。 接下来,我们要编译 Apache,启用以下选项

这是我最初编译 Apache 时使用的配置文件

#!/bin/sh

SSL_BASE=../depend/openssl-0.9.4 \
RSA_BASE=../depend/rsaref-2.0/local \
EAPI_MM=../depend/mm-1.0.12 \
./configure \
        --enable-module=ssl \
        --enable-module=proxy\
        --enable-shared=proxy\
        --enable-module=rewrite \
        --enable-shared=rewrite \
        --prefix=/apps/apache-1.3.12 \
        --enable-shared=ssl \
        --enable-rule=SHARED_CORE \
        --enable-rule=SHARED_CHAIN \
        --enable-module=so

然后运行

make
make certificate
make install

Apache 现在应该已编译并安装到您使用 --prefix 指定的任何目录中。 测试一下并确保它启动。

/path/to/apache/bin/apachectl start

/path/to/apache/bin/apachectl startssl

希望一切运行顺利。 如果没有,请回顾您的步骤并确保您没有忘记任何内容。

3.4 MySQL

php 以及 mod_auth_mysql 和可能的 mod_perl 将需要 MySQL 安装并在您的系统上运行。 本文档的范围不包括详细介绍 MySQL 的安装,但请下载存档并按照 INSTALL 文件中的说明进行操作。 获取 MySQL 并运行是一个相当简单的过程。 类似这样

./configure
make
make install

应该安装所有内容,以便您可以编译其他 Apache 模块。

3.5 PHP 3.0.15

我们将 php-3.0.15 编译为 DSO,这意味着它是一个单独的模块,可以从服务器加载和卸载。 这使得升级 php 变得容易,而无需重新编译所有内容(如果您在 Apache 中使用大量模块,这可能会很麻烦)。

GD

在我们的 Apache 安装中,php 使用 gd 创建图像等。 我使用了旧版本的 gd(通过 RPM 安装)来链接 php。 这样我们就可以使用输出 GIF 文件。 由于版权问题,这可能不太理想,因此您可能希望使用晚于 1.3 的版本,该版本仅支持 PNG 文件。

通过 RPM 安装 (rpm -i gd*.rpm) 或从源代码编译并安装到系统。

IMAP

如果您想要 IMAP 支持,则过程与 gd 类似。 我使用了 RPM,因为我在 Red Hat 系统上,但是从源代码安装应该是一个相对简单的 ./configure;make;make install 过程。

OpenLDAP

再次,您可以通过 RPM 或源代码安装 OpenLDAP。 我选择通过源代码进行安装,因为在我们设置时,最新版本尚无法通过 RPM 获得。

./configure
make
make install

应该可以了!(或 rpm -i openldap*.rpm)

安装和编译 PHP 3.0.15

一旦安装并运行了上述项目,我们就可以继续将 PHP 编译为 DSO。 该过程非常简单直接。

cd /usr/src/apache/modules/php/php-3.0.15

./configure \
        --with-apxs=/apps/apache/bin/apxs \
        --with-config-file-path=/apps/etc \
        --with-gd \
        --with-imap \
        --with-mysql=/apps/mysql \
        --with-ldap=/apps \
        --with-zlib \
        --enable-track-vars

确保如果您的任何 --with 库未安装在 /usr/local 或 /usr 中,则您需要在行尾添加 =/location/,以便 configure 可以找到它需要的东西!

make
make install

如果一切顺利完成,“make install”将使用 apxs 将 libphp3.so 安装到 /apache/libexec/libphp3.so,并在 httpd.conf 中添加正确的条目并激活 php3。 非常巧妙。

3.6 mod_perl

本节介绍如何将 mod_perl 作为 DSO 安装到 Apache 中。 在编译 mod_perl 而不报错之前,必须添加许多 perl 模块(当然,除了 perl5 之外,我假设您已经安装了)。 如果您不安装这些模块,mod_perl 应该会报错并告诉您缺少哪些模块。

模块必须按照一定的顺序安装。 有些模块依赖于其他模块,因此我列出了我使用的安装顺序,没有任何问题。

必需的 Perl 模块

Perl 模块可以从本文档前面详细说明的位置获得。 下载它们并将它们放在您喜欢的任何位置,或者放在我用作目录映射的位置(也在上面)。 安装模块非常简单。 将模块解压到目录后(通常使用 tar xvfz),您只需更改到该目录并执行以下命令

perl Makefile.PL
make
make install

如果一切按预期进行,这将为您配置、构建和安装 perl 模块。 当然,如果事情没有完全按预期工作,请检查每个模块的 README 文件。

这是我用于安装 mod_perl 所需模块的顺序

  1. MIME::Base64
  2. URI
  3. HTML::Parser
  4. Digest-MD5
  5. libnet
  6. libwww

安装和编译 mod_perl 1.2x

安装 perl 模块后,我们就可以编译 mod_perl 并将其安装到 Apache 中了。 更改到您解压 mod_perl 的目录,并运行以下脚本

perl Makefile.PL \
        USE_APXS=1 \
        WITH_APXS=/path/to/apache/bin/apxs \
        EVERYTHING=1

这将设置您的 Makefile 并告诉 mod_perl 使用 apxs 将自身编译为 DSO(您必须指定 apxs 的位置)。 完成此步骤后,只需运行

make
make install

mod_perl 将被移动到相应的目录,并且行被添加到您的 httpd.conf 文件中。

3.7 mod_auth_mysql

mod_auth_mysql 允许 Apache Web 服务器针对 MySQL 用户数据库进行授权。 将模块作为 DSO 安装并没有在 README 文件中明确说明,但可以完成。

首先,更改到您解压 mod_auth_mysql 的目录。 我假设您已在某处安装了 MySQL(以及头文件等)。 确保您知道 MySQL 库和头文件的位置。 如果有疑问,请检查 /usr/lib/mysql 和 /usr/include/mysql。

为了编译 mod_auth_mysql,我们首先必须将“config.h”文件重命名为“auth_mysql_config.h”。 我不确定为什么这个文件没有正确命名,但只需执行以下命令

cp config.h auth_mysql_config.h

现在是最后一步

/path/to/apache/bin/apxs -i -a -I/usr/include/mysql -L/usr/lib/mysql \
        -lmysqlclient -c mod_auth_mysql.c

如果您没有 Apache 目录的读/写权限,则可能需要以 root 用户身份运行。

3.8 mod_auth_nds

在我的学校,首选的 Windows 网络是 Netware。 它已经存在很长时间了,虽然希望有一天它会被淘汰,但目前它仍然是校园内用于文件共享和电子邮件的主要网络。 每个学生都有一个 Netware 帐户,他们的个人文件(包括他们的网页)都存储在该帐户中。 我们将这些目录挂载到我们的 Linux 服务器上,并且能够使用 Netware 用户名和密码信息来密码保护某些目录会很好。 通过此模块,Apache 可以直接向 Netware 服务器本身进行身份验证。

ncpfs

为了编译 mod_auth_nds,我们需要安装 ncpfs(以及它的头文件)。 在编译 ncpfs 之前,您必须确保您的内核已编译 IPX 支持。 如果是这种情况,只需运行

./configure
make
make install (optional)

将编译(并安装)库。

编译和安装 mod_auth_nds

安装 ncpfs 后,运行以下命令应该将 mod_auth_nds 编译为 DSO

/path/to/apache/bin/apxs -c -lncp -L/usr/lib -I/usr/include mod_auth_nds.c
/path/to/apache/bin/apxs -i mod_auth_nds.so

然后将以下行手动添加到您的 httpd.conf 中

LoadModule nds_auth_module libexec/mod_auth_nds.so
AddModule mod_auth_nds.c

然后,重启 Apache!

3.9 mod_fastcgi

如果您想允许通过 Apache 访问您的 Zope 服务器,则必须安装 mod_fastcgi。 这可能很有用,仅仅是因为 Apache 本质上比 Zope 服务器本身更安全且更可配置。

mod_fastcgi 的当前稳定版本是 2.2.2,但是,此版本不能与 Zope 正常工作。 您必须获取 SNAP 版本,该版本日期为 10 月 06 日。 上面提供了链接。

更改到 mod_fastcgi 目录并运行以下命令

/path/to/apache/bin/apxs -o mod_fastcgi.so -c *.c
/path/to/apache/bin/apxs -i -a -n fastcgi mod_fastcgi.so

有关其用法的说明,请参阅 mod_fastcgi 文档。


下一步 上一步 目录