南非企业使用 Linux 进行连接
Linux 是我发现的在整个公司(我的雇主 Stocks & Stocks I.T.)中促进互联网和内网系统扩展的最佳工具。
我从澳大利亚来到南非后,我的首要任务是开发和实施一个系统,该系统允许普通互联网用户从公司旗下的连锁酒店和度假村获得准确的实时酒店客房可用性详情。 这是我必须处理的问题清单
覆盖南非的 WAN
受防火墙保护的系统
TCP/IP 作为主要协议
Motorola 路由器
需要立即处理的问题是
每个酒店/度假村都使用 Novell Netware 3.12,仅运行 IPX/SPX。
每个酒店/度假村的房间数据库大小约为 300KB。
每个酒店/度假村都使用 64KB 线路连接(最佳情况)。
每个人都想着 Windows。
我搭建的第一个原型系统是一个中央 Linux Web 服务器,如下所示
Pentium 133 64MB RAM, S3-Trio 64 with 4MB RAM, ADI 17-inch monitor (Microscan), 1.2GB EIDE HDD, 8x CD-ROM, 3Com 3C509b NIC (network interface card), Ergo keyboard/mouse (Microsoft)
Linux Slackware 1.2.13, NSCA HTTPd v1.10
拥有 64MB 内存、17 英寸显示器和其他“好东西”的原因是,这个系统也可以用于任何主页/内网页面的 Web 开发。
在每家酒店,我唯一可用的系统是 Windows 95,我在其上使用了一个调度系统,以便每天早上 6 点左右将房间数据库发送到中央 Web 服务器。 Windows 95 机器也用作 Novell 和 TCP/IP 之间的桥梁。 这为互联网用户提供了可能最多 24 小时前的房间可用性统计信息。 房间数据库采用 DBase-IV 格式,为此我编写了一个 C 应用程序来搜索并返回给定所需房间和日期详细信息的统计信息。
该系统似乎在一段时间内运行良好,直到 Windows 95 机器开始莫名其妙地关闭、锁定等,没有任何明显原因。 也是在这个时候,“高层管理”决定,获得“实时”客房可用性统计信息是一项优先事项。
我觉得在当前的设置下,实时统计是不可能的,因为它意味着在平均人感到厌烦并跳转到另一个网页之前,需要通过 64KB 线路将 300KB 的数据发送到中央 Linux 服务器。
对于当前原型,整个过程被颠倒了过来。 在仍然保留中央 Web 服务器的同时,我用小型、高效的 Linux 机器 (2.0.29) 替换了 Windows 95 机器。 这些 Linux 机器现在通过来自中央 Web 服务器的安全 shell 在本地处理可用性请求。
为了提供备份,我保留了每台机器上现有的 Windows 95 系统,并使用 FIPS(First Interactive Partitioning System)创建了一个新分区,我在该分区上安装了 Linux。 “远程”机器的详细信息如下
Pentium 100 (Generic Clone), 8MB RAM, 800MB HDD, 3Com 3C509b NIC (no monitor, no keyboard, no mouse)
Linux 2.0.29 (Slackware), Secure Shell (ssh), ncpfs (支持 Novell 使用的 NCP 协议的网络文件系统)
ncpfs 用于在启动时将包含房间可用性数据库的 Novell Netware 卷挂载到本地目录。 应该强调的是,如果没有 ncpfs,这个项目就不可能成功进入“实时”阶段。
酒店客房可用性检查过程现在如下(本地 = 中央 Web 服务器,远程 = 所需酒店的 Linux 系统)
本地:获取房间/日期详细信息 (HTML POST 表单)。
本地:CGI 应用程序处理 POST 数据并执行。
本地:使用 ssh 登录到相应的远程 Linux 机器。
远程:搜索位于 Novell Netware 服务器上的数据库。
远程:退出搜索,0 = 成功,1 = 失败。
本地:ssh 通过其退出值返回搜索结果。
本地:CGI 应用程序根据数据库搜索结果生成包含正确响应的 HTML 文件。
整个过程的计时不到 10 秒,我认为这是一个可以接受的数字(考虑到线路上的现有流量很大)。 值得注意的是,使用 ssh 远程执行进程大大改进了操作。ssh 为所有事务提供公钥加密,并且比 rsh 更容易设置。
现在酒店预订系统已经以令管理层满意的方式启动并运行,是时候开始开发内网了。 我们的主要目标是
提高生产力
易用性
提高速度
内网可以用来完成的应用程序包括
电话/电子邮件簿
评论/建议/抱怨列表
公告牌
培训课程注册
文具/电脑商店
所有应用程序均以 ANSI-C 编写。 这些应用程序没有实际的 HTML 文件,因为 HTML 是通过应用程序动态创建的。 虽然这增加了更新页面所需的时间(必须编辑、编译等),但与由此产生的简洁性相比,这是一个很小的权衡。 作为一种次要的替代方案,我启用了一些应用程序来读取外部文件,解析它(查找任何可替换的标记)并将其重定向到 stdout。 这也产生了更多的开销,但提供了更轻松的 HTML 页面维护。
为了提供数据库功能和重要的 HTML POST/GET 表单处理,创建了两个 ANSI-C 对象/库。 所有库均以 ANSI C 编写,并使用 gcc 编译。
几周后,是时候将 Web 服务器升级到 Apache 1.2b10,以获得更好的速度和安全性。 从 NSCA 升级到 Apache 相对轻松,只需对 /conf/*.conf 文件进行一些修改以反映我的新目录结构。
Java 是“需要考虑的事情”列表中的下一项。 对我来说,Java 是一个很棒的想法,它提供了 C 长期以来几乎一直在提供的东西。 然而,从瘦客户端回到“中等瘦”客户端的想法并不是我很感兴趣的事情。 Linux 是一个可靠、功能强大的操作系统。 我完全相信它有能力处理我们运行的 CGI 应用程序的负载。 通过坚持使用瘦客户端应用程序来减少管理工作,远远超过了必须处理每个应用程序事务而导致的服务器负载增加——这就是我们选择 Java 的原因。
接下来,需要一个 FTP 类型的文件仓库。 由于内网中运行的大多数客户端都是基于 Windows 的,因此很少有人热衷于使用 FTP。 安装 Samba 是为了缓解这种“障碍”。 Samba 使所有 Windows 3.1、95、NT 和 OS/2 用户都可以访问他们的文件、应用程序、驱动程序和实用程序。 当然,匿名 FTP 仍然设置好了,以防万一我不是公司里唯一的同类。
我现在使用我最强大的 Linux 机器来生成图像和动画,使用 POV-Ray 3.0,这显着改善了内网页面的外观。 我目前正在制作一个小的(15 秒)动画,用作 Stocks & Stocks 的“介绍”。 迄今为止,以下是公司 Linux 安装统计信息
七台机器用于酒店远程访问支持/可用性响应
两台用于 Web 应用程序和图形开发
三台服务器
虽然对于像 Stocks 这样规模的公司来说,总共十二台机器可能看起来不多,但必须考虑到只有五台 NT 机器和一台 AS/400。 (好吧,一台 AS/400 通常就足够了。)
Linux 系统的故障率实际上为 0%。 迄今为止,只发生过一次故障,唯一的原因是电源被闪电击中。 一旦我安装了 Linux 机器,只要用户(我)不做任何恶意的事情(例如删除 agetty 或 getty——这是另一个故事),就没什么好担心的。
有些人可能觉得 Linux(以及任何 UNIX 系统)与 Windows 相比,界面有点“用户不友好”。 然而,Stocks & Stocks 选择 Linux 是因为它提供了一项 Windows 不具备的东西——可靠性。 对我来说,Linux 是“管理员友好的”。
Paul Daniels 是一位澳大利亚人,现在居住在南非,并在 Stocks & Stocks 公司担任系统管理员。 可以通过电子邮件 jdaniels@stocks.co.za 与他联系。