Jigsaw:Linux 的革命性 Web 服务器

作者:Ibrahim F. Haddad
Jigsaw: A Revolutionary Web Server for Linux

Jigsaw: A Revolutionary Web Server for Linux
Jigsaw 是万维网联盟 (W3C) 领先的 Web 服务器平台。它是一个功能齐全、面向对象的 Web 服务器,用 Java 编写,提供了一个 HTTP 1.1 实现示例,并在先进的架构之上提供了各种功能。

Jigsaw Web 服务器的设计目的是作为技术演示,而不是全面的发布版本。最初,它旨在作为一个试验新技术的项目。然而,截至 Jigsaw 2.0,该服务器打破了测试平台的规则,比一般的 Web 服务器更强大,因此值得认真研究其功能、潜力和可能的未来部署。

设计理念

Jigsaw 的设计理念是使其尽可能地便携、灵活和可扩展,同时仍然提供功能强大且稳健的 Web 服务器。设计目标是通过让 Jigsaw 服务器在任何 Java 支持的环境中运行来实现的。

Jigsaw 的核心是面向对象的设计和实现,它只不过是一组 Java 类和扩展模块。因此,向服务器添加功能并不复杂。我们可以动态添加我们自己的模块,其中服务器可用的每个资源都是一个对象,而不是 CGI 脚本,并且任何对象都可通过 HTTP 提供给最终用户。因此,可以通过编写新的资源对象来扩展服务器。这是 CGI 的替代方案,其中服务器扩展必须作为进程编写。Jigsaw 也支持 CGI,以便与现有的 CGI 脚本一起使用。

Jigsaw 的开发人员强调提供结构良好的源代码、一套完整的核心应用程序编程接口 (API) 和一套高质量的文档。

这些因素提供了一个完整的实验平台,尽可能多的研究人员可以使用它。这有助于 Jigsaw 作为开源项目的成功,为 HTTP 协议和面向对象的 Web 服务器的未来提供有价值的草案。

支持的平台

Jigsaw 服务器可在任何支持 Java 的平台上运行。它已在 Windows 95/NT 和 Solaris 2.x 上进行了测试。许多人还报告说在其他平台(如 OS/2、MacOS、BeOS、Linux、AS-400 和 AIX)上成功安装和使用。我在由 Red Hat 6.1 和 6.2 驱动的两个工作站上安装了 Jigsaw 服务器,分别使用 JDK 1.1.8 和 JDK 1.2.2,在这两种情况下它都工作正常。

入门指南

要安装 Jigsaw 服务器,您需要在系统上安装 JDK。建议从 http://java.sun.com/ 下载最新版本。

安装 JDK 后,您需要在启动文件中永久设置 PATH,以便访问 JDK bin 目录。如果您使用的是 C shell,请编辑主目录中的 ~/.cshrc 文件并添加以下行

set path=(/usr/local/jdk1.2.2/bin $path)

请注意,您需要根据自己的安装路径更改路径。然后加载启动文件 ~/.cshrc 以激活刚刚应用的更改。

% source ~/.cshrc
现在您将能够访问 Java 二进制目录,而无需键入完整路径。
下载 Jigsaw

最新的(非稳定)发行版 Jigsaw 2.1.1 可以从 W3C 主页下载。它包含 Java 源代码、文档和预编译的类。2000 年 3 月发布的 2.1.1 版本包括新功能,例如基于 XML 的序列化、Servlet 2.2 实现、新的符合 RFC2616 的缓存、使用内容协商的图像元数据提取,以及摘要身份验证和基于 ACL 的身份验证。

安装步骤

安装 JDK 并设置路径后,您可以按照以下三个步骤在 Linux 系统上安装 Jigsaw

  1. 解压缩发行文件

  2. 设置环境

  3. 构建属性文件

在以下小节中,我们将检查这些步骤中的每一个步骤。

1. 解压缩发行文件

发行版以 jigsaw-x.x.x.tar.gz 的形式出现。您需要选择一个解压缩它的位置。我将其安装在 /usr/local/Jigsaw 下。但是,您可以将其安装在您选择的目录中。由于安装目录的选择对于我们所有人来说都不相同,因此我们将此目录称为 INSTDIR。您必须将 INSTDIR 更改为您解压缩发行版的绝对路径。

要解压缩发行版,请在 shell 提示符下应用

% tar -xzvf jigsaw-x.x.x.tar.gz

这将在 Jigsaw 主目录下创建许多目录

Jigsaw/src Jigsaw 源代码Jigsaw/scripts 启动 Jigsaw 服务器和 JigAdmin 服务器的示例脚本Jigsaw/classes 预编译的类Jigsaw/lib Solaris 的本机代码支持Jigsaw/Jigsaw 运行服务器的根目录

Jigsaw/Jigsaw 目录包含

  • 服务器的配置目录

  • 管理服务器的配置目录

  • 日志文件的目录

  • 将 Jigsaw 用作缓存代理时的缓存目录

  • 导出的文件空间

2. 设置环境

接下来,我们向 Java 解释器指定 Jigsaw 类的存储位置。我们通过设置 CLASSPATH 环境变量来做到这一点。对于 Jigsaw 2.1.0 及更高版本,我们按如下方式设置它

% CLASSPATH=INSTDIR/Jigsaw/classes/jigsaw.jar:INSTDIR/Jigsaw/classes/sax.jar:INSTDIR/Jigsaw/classes/xp.jar:.% export CLASSPATH
3. 构建属性文件

最后一步是构建属性文件。我们通过切换到 Jigsaw 子目录来完成此操作

% cd INSTDIR/Jigsaw/Jigsaw

并执行

% java Install
运行 Jigsaw

完成安装过程后,我们就可以运行 Jigsaw 了。我们切换到安装目录并键入以下命令

% java org.w3c.jigsaw.Main -host host -root INSTDIR/Jigsaw/Jigsaw

其中 host 是机器的完整 IP 主机名,INSTDIR 是我们解压缩发行文件的位置的绝对路径。

或者,我们可以运行提供的脚本,该脚本将为我们启动 Jigsaw 服务器

% ./script/jigsaw.sh &

Jigsaw 将运行并生成如下调试消息

[root@byblos ]# ./scripts/jigsaw.shloading properties from: /usr/local/Jigsaw/Jigsaw/config/server.props
*** salvaging resource manager state...
*** resource store state salvaged, using: 1
*** Warning : JigAdmin[2.1.1]: no logger specified, not logging.
JigAdmin[2.1.1]: serving at http://byblos.lmc.ericsson.se:8009/*** salvaging resource manager state...*** resource store state salvaged, using: 31
Jigsaw[2.1.1]: serving at http://byblos.lmc.ericsson.se:8001/
测试安装

要验证 Jigsaw 服务器是否已启动并正在运行,请启动您喜欢的 Web 浏览器,并将其指向您工作站地址的 8001 端口,这是 Jigsaw 服务器的默认端口。瞧!我们得到了 Jigsaw 服务器主页(参见图 1),类似于 Apache 安装主页。

Jigsaw: A Revolutionary Web Server for Linux

图 1. Jigsaw 服务器主页

同样,要检查 JigAdmin 服务器是否已正确启动,我们遵循相同的步骤,但指定端口 8009,这是 JigAdmin 服务器的默认端口。

设置 Jigsaw 在系统启动时运行

现在 Jigsaw 服务器已启动并正在运行。但是,如果您重新启动计算机,Jigsaw 将不会自动启动。要设置 Jigsaw 在启动时启动,您需要执行三个步骤

1. 创建一个名为 jigsawstart 的文件,内容如下

#!/bin/sh# Jigsaw Launcher Script
#
# Note:
# The paths JIGSAW_HOME and LD_JIGSAW_LIBRARY_PATH need
# to be adjusted to reflect your own installation
# Define Jigsaw Path
JIGSAW_HOME=/usr/local/Jigsaw/
export JIGSAW_HOME

# Define Jigsaw libraries Path
LD_JIGSAW_LIBRARY_PATH=${JIGSAW_HOME}/lib
export LD_JIGSAW_LIBRARY_PATH

CLASSPATH=${JIGSAW_HOME}/classes/jigsaw.jar:${JIGSAW_HOME}/classes/sax.j
ar:${JIGSAW_HOME}/classes/xp.jar:${JIGSAW_HOME}/classes/servlet.jar
export CLASSPATH
/usr/local/jdk1.2.2/bin/java -Xms16m -Xmx128m org.w3c.jigsaw.Main
-root
${JIGSAW_HOME}/Jigsaw $*

2. 将文件保存在 /bin 或 /usr/bin 中,并通过键入 % chmod +x jigsawstart 允许对其执行权限

3. 编辑 /etc/rc.d/rc.local 并添加一个条目以启动 jigsawstart 脚本。我们需要做的就是在 rc.local 的末尾添加以下行

echo "Running Jigsaw ..."/usr/bin/jigsawstart &

此过程保证 Jigsaw 在启动时启动。

管理工具

Jigsaw 附带一个名为 JigAdmin 的管理工具。JigAdmin 是一个图形界面,它与 JigAdmin 管理服务器通信。此服务器可以管理同一台机器上运行的多个 Jigsaw 服务器,前提是这些服务器已由同一 Java 虚拟机启动。

Jigsaw 2.1.1 附带的 JigAdmin 版本是使用 Swing 组件构建的;它易于使用,具有拖放功能。此外,它还附带了广泛的文档,解释了如何运行 JigAdmin、命令行选项以及对其菜单及其功能的完整解释。

启动 JigAdmin 服务器

默认安装提供的默认配置文件旨在启动两个服务器,一个 Jigsaw 服务器实例和一个 JigAdmin 服务器。但是,要启动 JigAdmin,我们也可以使用提供的示例脚本

% ./scripts/jigadmin.sh &

我们得到了身份验证窗口(参见图 2)。用于访问服务器的域是 admin,默认用户是 admin,默认密码也是 admin。强烈建议您在首次登录后修改用户名和密码。

Jigsaw: A Revolutionary Web Server for Linux

图 2. Jigadmin 身份验证窗口

在身份验证阶段之后,我们收到 JigAdmin 主窗口(图 3),从中我们可以控制服务器配置(图 4)。

Jigsaw: A Revolutionary Web Server for Linux

图 3. JigAdmin httpd-server 的主屏幕

Jigsaw: A Revolutionary Web Server for Linux

图 4. 服务器属性屏幕截图

JigAdmin 客户端

现在 JigAdmin 服务器正在运行,我们可以使用以下命令访问它

% java org.w3c.jigadmin.Main [-root root] [url]

默认根目录是您当前的目录。因此,如果您与启动 Jigsaw 的目录在同一目录中,则不需要 -root 选项。如果您在同一台机器上运行管理服务器,使用默认端口 8009,则无需提供 URL;它是管理服务器的。但是,如果您不在根目录中,则可以使用以下命令访问管理服务器

% java org.w3c.jigadmin.Main -root INSTDIR/Jigsaw/Jigsaw/
Jigsaw 文档

Jigsaw 附带一套非常有条理且丰富的文档,分为六个部分

  • 快速入门文档,涵盖如何安装和运行服务器的基础知识。

  • 基本概念文档,讨论 Jigsaw 的设计、身份验证和访问控制。

  • Jigsaw 配置手册,涵盖安装和运行服务器的基础知识,到您可以使用 Jigsaw 完成的最复杂配置的描述。

  • 常见问题解答文档,解答有关 Jigsaw 及其用法的常见问题。

  • 程序员文档指南,从程序员的角度描述 Jigsaw,并说明如何扩展它以满足您自己的需求。

  • 用户指南。

其他 Jigsaw 软件包

W3C 发布了一个 Jigsaw 代理软件包,这是一个配置为代理服务器的即用型 Jigsaw 服务器。它配置了预安装的缓存代理模块,并附带 HTTP/1.1 服务器和客户端。Jigsaw 还支持 SSL,使用 Jigsaw-SSL 2.01 beta,它是公共领域软件,允许 Jigsaw 使用 iSaSiLk 作为 SSL 提供程序。IAIK Jigsaw-SSL 为 W3C HTTP Jigsaw 服务器架构提供了一个支持 SSLv3 的扩展,用于安全地处理任何传入的客户端请求。IAIK JigsawSSL 已更新为可在 W3C 的 Jigsaw 版本 Jigsaw 2.0.1 上运行。

结论

Jigsaw 不是您可以围绕它构建企业级 Internet 存在的 Web 服务器类型。尽管如此,如果您认真对待在 Web 协议和基础设施方面保持领先地位,您将需要一台运行 Jigsaw 的测试平台机器。

W3C 负责监督 Web 标准,任何希望符合 HTTP/1.1 和即将推出的 HTTP-NG(下一代)的人都希望使用 Jigsaw 进行一些测试,因为最新版本完全符合 HTTP 1.1 标准。我强烈建议尝试一下。

资源

Jigsaw: A Revolutionary Web Server for Linux
Ibrahim F. Haddad (ibrahim.haddad@lmc.ericsson.se) 在加拿大爱立信研究部的系统研究部门工作。他目前是蒙特利尔康考迪亚大学计算机科学博士候选人。
加载 Disqus 评论