将 Apache 与 Novell NetWare 一起使用

本文档说明了如何在 Novell NetWare 6.0 及更高版本下安装,配置和运行 Apache 2.0. 如果您发现任何错误,或希望以其他方式做出贡献,请使用我们的错误报告页面。

提供错误报告页面和 dev-httpd 邮件列表,以回答有关配置或运行 Apache 的问题。在提交错误报告或请求之前,请先查阅本文档,经常问的问题页以及其他相关文档主题。如果您仍然有疑问或问题,请将其发布到novell.devsup.webserver新闻组,在那里许多 Apache 用户非常愿意回答有关在 NetWare 上使用 Apache 的新问题和晦涩难懂的问题。

本文档的大部分内容假设您是从二进制发行版中安装 Apache 的。如果要自己编译 Apache(可能是为了帮助开发或跟踪错误),请参阅下面的为 NetWare 编译 Apache部分。

Requirements

Apache 2.0 设计为在 NetWare 6.0 Service Pack 3 及更高版本上运行。如果运行的 Service Pack 低于 SP3,则必须安装最新的用于 C 的 NetWare 库(LibC)

NetWare Service Pack here可用。

只要安装了最新的 Service Pack 或最新版本的用于 C 的 NetWare 库(LibC),NetWare 的 Apache 2.0 也可以在 NetWare 5.1 环境中运行。 警告: 在此环境中,尚未针对 Apache 2.0 for NetWare 进行测试。

为 NetWare 下载 Apache

可以在 Apache Web 服务器上的http://www.apache.org/上找到有关 Apache 最新版本的信息。这将列出当前版本,任何最近的 alpha 或 beta 测试版本,以及镜像 Web 和匿名 ftp 站点的详细信息。可以从here下载适用于 NetWare 的 Apache 2.0 最新版本的二进制版本。

为 NetWare 安装 Apache

当前没有用于 NetWare 的 Apache 安装程序。如果要从源代码构建 NetWare 的 Apache 2.0,则需要将文件手动复制到服务器上。

请按照以下步骤从二进制下载文件中在 NetWare 上安装 Apache(假设您将安装到sys:/apache2):

  • 将二进制下载文件解压缩到SYS:卷的根目录(可以安装到任何卷)

  • 编辑httpd.conf文件设置ServerRootServerName以及任何文件路径值,以反映正确的服务器设置

  • SYS:/APACHE2添加到搜索路径,例如:

SEARCH ADD SYS:\APACHE2

请按照以下步骤从您自己的构建源在 NetWare 上手动安装 Apache(假设您将安装到sys:/apache2):

  • 在 NetWare 卷上创建一个名为Apache2的目录

  • APACHE2.NLMAPRLIB.NLM复制到SYS:/APACHE2

  • SYS:/APACHE2下创建一个名为BIN的目录

  • HTDIGEST.NLMHTPASSWD.NLMHTDBM.NLMLOGRES.NLMROTLOGS.NLM复制到SYS:/APACHE2/BIN

  • SYS:/APACHE2下创建一个名为CONF的目录

  • HTTPD-STD.CONF文件复制到SYS:/APACHE2/CONF目录,然后重命名为HTTPD.CONF

  • MIME.TYPESCHARSET.CONVMAGIC文件复制到SYS:/APACHE2/CONF目录

  • \HTTPD-2.0\DOCS\ICONS中的所有文件和子目录复制到SYS:/APACHE2/ICONS

  • \HTTPD-2.0\DOCS\MANUAL中的所有文件和子目录复制到SYS:/APACHE2/MANUAL

  • \HTTPD-2.0\DOCS\ERROR中的所有文件和子目录复制到SYS:/APACHE2/ERROR

  • \HTTPD-2.0\DOCS\DOCROOT中的所有文件和子目录复制到SYS:/APACHE2/HTDOCS

  • 在服务器上创建目录SYS:/APACHE2/LOGS

  • 在服务器上创建目录SYS:/APACHE2/CGI-BIN

  • 创建目录SYS:/APACHE2/MODULES并将所有 nlm 模块复制到modules目录中

  • 编辑HTTPD.CONF文件,搜索所有@@Value@@标记并将其替换为适当的设置

  • SYS:/APACHE2添加到搜索路径,例如:

SEARCH ADD SYS:\APACHE2

除了默认的SYS卷之外,还可以将 Apache 安装到其他卷上。

在构建过程中,将关键字“ install”添加到 makefile 命令行中将自动在子目录DIST下产生一个完整的分发包。通过简单地将 makfiles 生成的发行版复制到 NetWare 卷的根目录来安装 Apache(请参阅下面的为 NetWare 编译 Apache)。

为 NetWare 运行 Apache

要启动 Apache,只需在控制台上键入apache。这将在 os 地址空间中加载 apache。如果您希望在受保护的地址空间中加载 Apache,则可以使用 load 语句指定地址空间,如下所示:

load address space = apache2 apache2

这会将 Apache 加载到名为 apache2 的地址空间中。通过将每个实例加载到其自己的受保护地址空间中,可以在 NetWare 上同时运行多个 Apache 实例。

启动 Apache 之后,它将监听端口 80(除非您在配置文件中更改了Listen指令)。要连接到服务器并访问默认页面,请启动浏览器并 Importing 服务器的名称或地址。这应该以欢迎页面和指向 Apache 手册的链接作为响应。如果没有任何反应或出现错误,请查看logs目录中的error_log文件。

基本安装成功后,应通过编辑conf目录中的文件来正确配置它。

要卸载在 OS 地址空间中运行的 Apache,只需在控制台上键入以下命令:

unload apache2

or

apache2 shutdown

如果 apache 在受保护的地址空间中运行,请在 unload 语句中指定地址空间:

unload address space = apache2 apache2

使用 Apache 时,重要的是要知道它将如何找到配置文件。您可以通过两种方式在命令行上指定配置文件:

  • -f指定特定配置文件的路径

apache2 -f "vol:/my server/conf/my.conf"

apache -f test/test.conf

在这种情况下,应在配置文件中设置正确的ServerRoot

如果未使用-f指定配置文件名,则 Apache 将使用编译到服务器中的文件名,通常为conf/httpd.conf。使用-V开关调用 Apache 将显示标记为SERVER_CONFIG_FILE的该值。然后,Apache 将按以下 Sequences 尝试以下操作来确定其ServerRoot

  • 通过-C开关的ServerRoot指令。

  • 命令行上的-d开关。

  • 当前工作目录

  • 将服务器根目录编译到服务器中。

编译到服务器中的服务器根目录通常为sys:/apache2。使用-V开关调用 apache 将显示标记为HTTPD_ROOT的该值。

适用于 NetWare 的 Apache 2.0 包含一组命令行指令,可用于修改或显示有关 Web 服务器正在运行的实例的信息。这些指令仅在 Apache 运行时可用。这些指令中的每一个都必须以关键字APACHE2开头。

  • RESTART

    • 指示 Apache 在所有正在运行的工作线程变为空闲时终止它们,重新读取配置文件并根据新配置重新启动每个工作线程。
  • VERSION

    • 显示有关当前正在运行的 Apache 实例的版本信息。
  • MODULES

    • 显示内置和外部已加载模块的列表。
  • DIRECTIVES

    • 显示所有可用指令的列表。
  • SETTINGS

    • 在控制台上启用或禁用线程状态显示。启用后,每个运行线程的状态将显示在 Apache 控制台屏幕上。
  • SHUTDOWN

    • 终止 Apache Web 服务器的运行实例。
  • HELP

    • 描述每个运行时指令。

默认情况下,这些指令是针对在 OS 地址空间中运行的 Apache 实例发出的。要针对在受保护的地址空间中运行的特定实例发出指令,请包括-p 参数以及地址空间的名称。有关更多信息,请在命令行上键入“ apache2 Help”。

为 NetWare 配置 Apache

通过读取通常存储在conf目录中的配置文件来配置 Apache。这些与用于配置 Unix 版本的文件相同,但是在 NetWare 上有一些针对 Apache 的不同指令。有关所有可用指令,请参见Apache 模块文档

Apache for NetWare 的主要区别是:

  • 因为 Apache for NetWare 是多线程的,所以它不像 Apache 在某些 Unix 实现中那样为每个请求使用单独的进程。相反,只有运行中的线程:一个父线程,以及多个处理请求的子线程或工作线程。

因此,“流程”-Management 指令不同:

MaxConnectionsPerChild-与 Unix 指令类似,它控制工作线程在退出之前将服务的连接数量。推荐的默认值MaxConnectionsPerChild 0使线程无限期地 continue 服务请求。除非有特殊原因,否则建议在 NetWare 上始终将此指令设置为0

StartThreads-该指令告诉服务器最初应启动多少个线程。推荐的默认值为StartThreads 50

MinSpareThreads-该指令指示服务器在空闲线程数降至该值以下时产生其他工作线程。推荐的默认值为MinSpareThreads 10

MaxSpareThreads-如果空闲线程数超过此值,此指令将指示服务器开始终止工作线程。推荐的默认值为MaxSpareThreads 100

MaxThreads-该指令将工作线程的总数限制为最大值。推荐的默认值为ThreadsPerChild 250

ThreadStackSize-此伪指令告诉服务器要用于单个工作线程的堆栈大小。推荐的默认值为ThreadStackSize 65536

  • 接受文件名作为参数的指令必须使用 NetWare 文件名而不是 Unix 名称。但是,由于 Apache 在内部使用 Unix 样式的名称,因此必须使用正斜杠而不是反斜杠。建议所有根目录文件路径都以卷名开头。如果省略,Apache 将假定SYS:卷可能不正确。

  • Apache for NetWare 能够在运行时加载模块,而无需重新编译服务器。如果 Apache 正常编译,它将在\Apache2\modules目录中安装许多可选模块。要激活这些模块或其他模块,必须使用LoadModule指令。例如,要激活状态模块,请使用以下命令:

LoadModule status_module modules/status.nlm

也提供有关创建可加载模块的信息。

其他特定于 NetWare 的指令:

  • CGIMapExtension-该指令将 CGI 文件 extensionsMap 到脚本解释器。

  • SecureListen-为指定的端口启用 SSL 加密。

  • NWSSLTrustedCerts-添加用于创建到代理服务器的安全连接的受信任证书。

  • NWSSLUpgradeable-允许将在指定地址/端口上创建的连接升级为 SSL 连接。

为 NetWare 编译 Apache

编译 Apache 需要 MetroWerks CodeWarrior 6.x 或更高版本。构建 Apache 之后,就可以将其安装到任何 NetWare 卷的根目录中。默认值为sys:/Apache2目录。

在运行服务器之前,您必须填写conf目录。从分发conf目录复制文件HTTPD-STD.CONF并将其重命名为HTTPD.CONF。编辑HTTPD.CONF文件,搜索所有@@Value@@标记并将其替换为适当的设置。还要复制conf/magicconf/mime.types文件。另外,调用 makefile 时,可以通过包含关键字install来构建完整的发行版。

Requirements:

要为 NetWare 构建 Apache 2.0,需要以下开发工具:

使用 NetWare 生成文件构建 Apache:

  • 将环境变量NOVELLLIBC设置为 C SDK 的 NetWare 库的位置,例如:

Set NOVELLLIBC=c:\novell\ndk\libc

  • 将环境变量METROWERKS设置为您安装 Metrowerks CodeWarrior 编译器的位置,例如:

Set METROWERKS=C:\Program Files\Metrowerks\CodeWarrior

如果您安装到默认位置C:\Program Files\Metrowerks\CodeWarrior,则无需进行设置。

  • 将环境变量LDAPSDK设置为安装 C 的 LDAP 库的位置,例如:

Set LDAPSDK=c:\Novell\NDK\cldapsdk\NetWare\libc

  • 将环境变量ZLIBSDK设置为您安装 ZLib 库源代码的位置,例如:

Set ZLIBSDK=D:\NOVELL\zlib

  • 将环境变量PCRESDK设置为安装 PCRE 库源代码的位置,例如:

Set PCRESDK=D:\NOVELL\pcre

  • 将环境变量AP_WORK设置为httpd源代码目录的完整路径。

Set AP_WORK=D:\httpd-2.0.x

  • 将环境变量APR_WORK设置为apr源代码目录的完整路径。通常为\httpd\srclib\apr,但 APR 项目可以在 httpd 目录结构之外。

Set APR_WORK=D:\apr-1.x.x

  • 将环境变量APU_WORK设置为apr-util源代码目录的完整路径。通常为\httpd\srclib\apr-util,但 APR-UTIL 项目可以位于 httpd 目录结构之外。

Set APU_WORK=D:\apr-util-1.x.x

  • 确保 AWK Util 和 GNU make Util(gmake.exe)的路径已包含在系统的PATH环境变量中。

  • 下载源代码并解压缩到工作站上的适当目录。

  • 将目录更改为\httpd-2.0并通过运行“ gmake -f nwgnumakefile prebuild”来构建预构建 Util。该目标将创建目录\httpd-2.0\nwprebuild并将每个 Util 复制到该位置,这是完成以下构建步骤所必需的。

  • 将文件\httpd-2.0\nwprebuild\GENCHARS.nlm\httpd-2.0\nwprebuild\DFTABLES.nlm复制到 NetWare 服务器的SYS:卷,并使用以下命令运行它们:

SYS:\genchars > sys:\test_char.h SYS:\dftables sys:\chartables.c

  • 将文件test_char.hchartables.c复制到构建计算机上的目录\httpd-2.0\os\netware

  • 将目录更改为\httpd-2.0并通过运行“ gmake -f nwgnumakefile”来构建 Apache。您可以通过在命令中添加安装参数来创建分发目录,例如:

gmake -f nwgnumakefile install

其他制作选项

  • gmake -f nwgnumakefile

构建所有二进制文件的发行版本,并将它们复制到\release目标目录。

  • gmake -f nwgnumakefile DEBUG=1

构建所有二进制文件的调试版本,并将它们复制到\debug目标目录。

  • gmake -f nwgnumakefile install

使用\dist\Apache2目录中的二进制文件,文档和其他支持文件创建完整的 Apache 发行版。

  • gmake -f nwgnumakefile prebuild

生成所有预构建 Util,并将它们复制到\nwprebuild目录。

  • gmake -f nwgnumakefile installdev

与 install 相同,但还会在目标目录中创建\lib\include目录,并复制 Headers 和导入文件。

  • gmake -f nwgnumakefile clean

根据是否已定义DEBUG清除\release.o\debug.o构建区域中的所有目标文件和二进制文件。

  • gmake -f nwgnumakefile clobber_all

与 clean 相同,如果存在分发目录,则将其删除。

其他环境变量选项

  • 要构建所有实验模块,请设置环境变量EXPERIMENTAL

Set EXPERIMENTAL=1

  • 要使用标准 BSD 样式套接字而不是 Winsock 来构建 Apache,请设置环境变量USE_STDSOCKETS

Set USE_STDSOCKETS=1

为 NetWare 平台构建 mod_ssl

默认情况下,Apache for NetWare 使用内置模块mod_nw_ssl提供 SSL 服务。此模块仅使 NetWare OS 中实现的本机 SSL 服务能够处理给定端口的所有加密。或者,也可以以与其他平台相同的方式使用 mod_ssl。

在可以为 NetWare 平台构建 mod_ssl 之前,必须提供 OpenSSL 库。这可以通过以下步骤完成:

  • OpenSSL Source页面下载最新的 OpenSSL 0.9.8 发行版源代码(较旧的 0.9.7 版本需要打补丁,因此不建议使用)。

  • 编辑文件NetWare/set_env.bat并修改任何工具和 Util 路径,使其与您的构建环境相对应。

  • 在 OpenSSL 源目录的根目录中,运行以下脚本:

Netware\set_env netware-libc Netware\build netware-libc

出于性能原因,您应该启用使用 ASM 代码进行构建。从SF site下载 NASM。然后配置 OpenSSL 以使用 ASM 代码:

Netware\build netware-libc nw-nasm enable-mdc2 enable-md5

警告:请勿使用 CodeWarrior 汇编程序-它会产生损坏的代码!

  • 在构建 Apache 之前,将环境变量OSSLSDK设置为 openssl 源代码目录的根目录的完整路径,并将 WITH_MOD_SSL 设置为 1.

Set OSSLSDK=d:\openssl-0.9.8x Set WITH_MOD_SSL=1