On this page
将 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
文件设置ServerRoot和ServerName以及任何文件路径值,以反映正确的服务器设置将
SYS:/APACHE2
添加到搜索路径,例如:
SEARCH ADD SYS:\APACHE2
请按照以下步骤从您自己的构建源在 NetWare 上手动安装 Apache(假设您将安装到sys:/apache2
):
在 NetWare 卷上创建一个名为
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
除了默认的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/magic
和conf/mime.types
文件。另外,调用 makefile 时,可以通过包含关键字install
来构建完整的发行版。
Requirements:
要为 NetWare 构建 Apache 2.0,需要以下开发工具:
Metrowerks CodeWarrior 6.0 或更高版本,NetWare PDK 3.0或更高版本。
AWK Util(awk,gawk 或类似工具)。可以从http://developer.novell.com/ndk/apache.htm下载 AWK。该 Util 必须在 Windows 路径中找到,并且必须命名为
awk.exe
。要使用 makefile 进行构建,您将需要位于http://developer.novell.com/ndk/apache.htm的 GNU make 版本 3.78.1(GMake)。
使用 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.h
和chartables.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