Apache HTTP Server 版本 2.4
本文档介绍如何在 Novell NetWare 6.0 及更高版本上安装、配置和运行 Apache 2.0。如果您发现任何错误,或希望以其他方式做出贡献,请使用我们的 错误报告页面。
错误报告页面和 dev-httpd 邮件列表不用于回答有关 Apache 配置或运行的问题。在提交错误报告或请求之前,请先查阅本文档、常见问题解答 页面和其他相关文档主题。如果您仍然有疑问或问题,请将其发布到 novell.devsup.webserver 新闻组,许多 Apache 用户非常乐意回答有关在 NetWare 上使用 Apache 的新问题和模糊问题。
本文档的大部分内容假设您正在从二进制发行版安装 Apache。如果您想自己编译 Apache(可能是为了帮助开发或跟踪错误),请参阅下面有关 为 NetWare 编译 Apache 的部分。
Apache 2.0 旨在运行在 NetWare 6.0 service pack 3 及更高版本上。如果您运行的是低于 SP3 的 service pack,则必须安装最新的 适用于 C 的 NetWare 库 (LibC).
NetWare service pack 可在 此处 获取。
适用于 NetWare 的 Apache 2.0 也可以在 NetWare 5.1 环境中运行,只要已安装最新的 service pack 或最新的 适用于 C 的 NetWare 库 (LibC)。警告: 适用于 NetWare 的 Apache 2.0 并非针对此环境或在此环境中进行测试。
有关 Apache 最新版本的信息,请访问 Apache Web 服务器 http://www.apache.org/。这将列出当前版本、任何更新的 alpha 或 beta 测试版本,以及镜像 Web 和匿名 FTP 站点的详细信息。适用于 NetWare 的 Apache 2.0 最新版本的二进制构建可以从 此处 下载。
目前没有适用于 NetWare 的 Apache 安装程序。如果您要从源代码构建适用于 NetWare 的 Apache 2.0,则需要手动将文件复制到服务器上。
按照以下步骤从二进制下载安装 Apache 到 NetWare(假设您将安装到 sys:/apache2
)
SYS:
卷的根目录(可以安装到任何卷)httpd.conf
文件,设置 ServerRoot
和 ServerName
以及任何文件路径值,以反映您正确的服务器设置SYS:/APACHE2
添加到搜索路径,例如SEARCH ADD SYS:\APACHE2
按照以下步骤从您自己的构建源手动安装 Apache 到 NetWare(假设您将安装到 sys:/apache2
)
Apache2
的目录APACHE2.NLM
、APRLIB.NLM
复制到 SYS:/APACHE2
SYS:/APACHE2
下创建一个名为 BIN
的目录HTDIGEST.NLM
、HTPASSWD.NLM
、HTDBM.NLM
、LOGRES.NLM
、ROTLOGS.NLM
复制到 SYS:/APACHE2/BIN
SYS:/APACHE2
下创建一个名为 CONF
的目录HTTPD-STD.CONF
文件复制到 SYS:/APACHE2/CONF
目录并重命名为 HTTPD.CONF
MIME.TYPES
、CHARSET.CONV
和 MAGIC
文件复制到 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
Apache 可以安装到除默认 SYS
卷以外的其他卷。
在构建过程中,在 makefile 命令行中添加关键字“install”将自动在子目录 DIST
下生成一个完整的发行版包。通过简单地将 makefile 生成的发行版复制到 NetWare 卷的根目录来安装 Apache(请参阅:下面有关 为 NetWare 编译 Apache 的部分)。
要启动 Apache,只需在控制台中键入 apache
。这将在 OS 地址空间中加载 apache。如果您希望在受保护的地址空间中加载 Apache,则可以按如下方式指定地址空间:
load address space = apache2 apache2
这将把 Apache 加载到名为 apache2 的地址空间中。通过将每个实例加载到其自己的受保护地址空间,可以在 NetWare 上同时运行 Apache 的多个实例。
启动 Apache 后,它将监听端口 80(除非您更改了配置文件中的 Listen
指令)。要连接到服务器并访问默认页面,请启动浏览器并输入服务器的名称或地址。这应该会响应一个欢迎页面,以及指向 Apache 手册的链接。如果什么也没发生或您收到错误,请查看 logs
目录中的 error_log
文件。
基本安装完成后,您应该通过编辑 conf
目录中的文件来正确配置它。
要卸载在 OS 地址空间中运行的 Apache,只需在控制台中键入以下内容:
unload apache2
或者
apache2 shutdown
如果 apache 在受保护的地址空间中运行,请在卸载语句中指定地址空间
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 将通过按以下顺序尝试以下方法来确定其 ServerRoot
:
-C
开关的 ServerRoot
指令。-d
开关。编译到服务器中的服务器根目录通常为 sys:/apache2
。使用 -V
开关调用 apache 将显示此值,标记为 HTTPD_ROOT
。
适用于 NetWare 的 Apache 2.0 包含一组命令行指令,可用于修改或显示有关正在运行的 Web 服务器实例的信息。这些指令仅在 Apache 运行时可用。每个指令都必须以关键字 APACHE2
开头。
默认情况下,这些指令针对在 OS 地址空间中运行的 Apache 实例发出。要针对在受保护地址空间中运行的特定实例发出指令,请包含 -p
参数以及地址空间的名称。有关更多信息,请在命令行中键入“apache2 Help”。
Apache 通过读取通常存储在 conf
目录中的配置文件进行配置。这些文件与用于配置 Unix 版本的文件相同,但适用于 NetWare 的 Apache 有几个不同的指令。有关所有可用指令,请参阅 Apache 模块文档。
适用于 NetWare 的 Apache 的主要区别在于
由于适用于 NetWare 的 Apache 是多线程的,因此它不像某些 Unix 实现中的 Apache 那样为每个请求使用单独的进程。相反,它只运行线程:一个父线程和多个子线程或工作线程,它们处理请求。
因此,“进程”管理指令有所不同
MaxConnectionsPerChild
- 与 Unix 指令类似,它控制工作线程在退出之前将服务多少个连接。推荐的默认值 MaxConnectionsPerChild 0
使线程无限期地继续服务请求。除非有特殊原因,否则建议在 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
有关 创建可加载模块 的信息也可用。
CGIMapExtension
- 此指令将 CGI 文件扩展名映射到脚本解释器。SecureListen
- 为指定端口启用 SSL 加密。NWSSLTrustedCerts
- 添加用于创建与代理服务器的安全连接的受信任证书。NWSSLUpgradeable
- 允许在指定地址/端口上创建的连接升级到 SSL 连接。编译 Apache 需要 MetroWerks CodeWarrior 6.x 或更高版本。构建 Apache 后,可以将其安装到任何 NetWare 卷的根目录。默认值为 sys:/Apache2
目录。
在运行服务器之前,您必须填写 conf
目录。从发行版 conf
目录中复制文件 HTTPD-STD.CONF
并将其重命名为 HTTPD.CONF
。编辑 HTTPD.CONF
文件,搜索所有 @@Value@@
标记,并将它们替换为适当的设置。还应复制 conf/magic
和 conf/mime.types
文件。或者,可以通过在调用 makefile 时包含关键字 install
来构建完整的发行版。
以下开发工具是构建 Apache 2.0 for NetWare 所必需的
awk.exe
。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
gmake.exe
) 的路径包含在系统的 PATH
环境变量中。\httpd-2.0
目录,并通过运行“gmake -f nwgnumakefile prebuild
”来构建预构建实用程序。此目标将创建目录 \httpd-2.0\nwprebuild
并将每个必要的实用程序复制到此位置,以完成以下构建步骤。\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.h
和 chartables.c
复制到构建机器上的 \httpd-2.0\os\netware
目录。\httpd-2.0
目录,并通过运行“gmake -f nwgnumakefile
”来构建 Apache。您可以通过在命令中添加 install 参数来创建发行版目录,例如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
构建所有预构建实用程序,并将它们复制到 \nwprebuild
目录。
gmake -f nwgnumakefile installdev
与 install 相同,但还会在目标目录中创建 \lib
和 \include
目录,并将头文件和导入文件复制到其中。
gmake -f nwgnumakefile clean
从 \release.o
或 \debug.o
构建区域清除所有目标文件和二进制文件,具体取决于是否已定义 DEBUG
。
gmake -f nwgnumakefile clobber_all
与 clean 相同,还会删除发行版目录(如果存在)。
EXPERIMENTAL
Set EXPERIMENTAL=1
USE_STDSOCKETS
Set USE_STDSOCKETS=1
默认情况下,Apache for NetWare 使用内置模块 mod_nw_ssl
来提供 SSL 服务。此模块只是启用 NetWare OS 中实现的本机 SSL 服务,以处理给定端口的所有加密。或者,mod_ssl 也可以与其他平台上的方式相同使用。
在为 NetWare 平台构建 mod_ssl 之前,必须提供 OpenSSL 库。这可以通过以下步骤完成
NetWare/set_env.bat
并修改任何工具和实用程序路径,使其与您的构建环境相对应。Netware\set_env netware-libc
Netware\build netware-libc
Netware\build netware-libc nw-nasm enable-mdc2 enable-md5
OSSLSDK
设置为 openssl 源代码目录根目录的完整路径,并将 WITH_MOD_SSL 设置为 1。Set OSSLSDK=d:\openssl-0.9.8x
Set WITH_MOD_SSL=1