Linux 在现实世界中的应用

作者:Kevin Pierce

当我来到 SSC(Linux Journal 的出版商)时,我被告知我必须做的第一件事是学习计算机系统。由于从未接触过 Unix,我开始尽可能多地去了解。从 MS-Windows 环境过来,我有很多东西要学习。我对我们使用的系统了解得越多,我提出的问题就越多。以下是我发现的。

我注意到的第一件事是 Linux 的多任务处理能力(我甚至不打算讨论 Win95)。SSC 的每个人都有一台 Linux 系统(工作站)放在他们的桌子上,他们每天早上登录。此外,办公室里还有两台非 Linux 系统:一台用于图形和杂志排版的 Windows for Workgroups 系统,以及一台用于运行 Progress 数据库的 Unix System V Release 4.2 系统,该数据库尚未移植到 Linux。

一旦登录到他们的本地系统,用户可以在本地执行任务(例如阅读电子邮件),或者通过 rlogin、telnet、ftp 等访问其他计算机。

我们的网络

除了少数几台通过双绞线以太网连接到双绞线集线器的计算机外,所有工作站都通过细以太网主干网连接,然后连接到细网主干网。

主干网末端是 Orion 防火墙系统,它位于内部网络和第二个外部可见网络之间,该网络通过 Xyplex 路由器和 CSU/DSU(也称为“数字调制解调器”)通过 T1 帧中继连接连接到我们的互联网服务提供商 Alternate Access, Inc.。我们的 Web 服务器 www.ssc.com 也位于这个外部可见的网络上,在我们的防火墙之外。

办公室里还有第三个网络。Windows for Workgroups (WfW) 机器与一台也连接到常规内部网络的 Linux 系统位于此网络上。这种设置防止了 WfW 系统和 Linux 系统(驱动图像照排机)之间的大量流量拖慢主网络的速度。

网络管理

通常,在我们这样的多用户环境中,每台计算机都有一个唯一的密码文件,本地于该系统。如果有人想要更改他们的密码,他们必须单独登录到每个系统以进行全办公室范围的更改。我们所有的系统都使用 NIS(网络信息服务)来集中管理所有密码和组文件、访问权限、主机地址信息以及单个服务器上的数据。NIS 透明地将单个主密码文件分发到所有系统。由于网络正在运行 NFS(网络文件系统),因此可以轻松地在系统之间访问文件。这对用户和管理员来说都更容易。

SSC 使用 sendmail 作为其邮件守护程序来监控和管理所有电子邮件消息的传递。Sendmail 是大多数复杂网络的实际标准邮件传输代理 (MTA)。虽然它不易配置,但它是所有可用邮件守护程序中最可配置和最灵活的。它确定每个电子邮件地址是本地的还是远程的,在本地传递本地电子邮件,并通过互联网(使用 SMTP,简单邮件传输协议)或 UUCP(稍后描述)将远程电子邮件发送到远程系统。

SSC 的所有外发邮件都通过单个工作站路由,以便通过 sendmail 进行传递。这集中了电子邮件系统,因此只有一个日志文件、一个守护程序、一件需要中断和修复的事情。传入邮件在 Orion 防火墙系统外部的 Web 服务器上排队,使用 smap,一个安全邮件队列程序。Smap 的作用类似于普通的邮件守护程序,并将邮件排队。然后 smap 调用 sendmail 来处理排队的邮件,将其发送到真正的内部集线器以进行本地传递。smap 客户端实现了 SMTP 的最小版本,接受来自网络的消息,并将它们写入磁盘以供将来由 smapd 传递。与匿名 ftp 类似,smap 被设计为在 chroot 下运行,但它也作为非特权进程运行,以克服特权邮件程序在可以通过网络访问的地方运行所带来的潜在安全风险。Sendmail 仍然运行,但仅在被告知运行时运行,而不是一直运行。

UUCP(Unix-to-Unix copy)传递的邮件也通过 smap 转发到 sendmail 集线器。然后 Sendmail 从 UUCP 传递的邮件中对常规 SMTP 邮件进行排序。SMTP 邮件在本地传递,UUCP 传递的邮件被假脱机到 UUCP 系统可以找到它们的目录中。由于将假脱机 UUCP 传递的邮件传递给本地接收者的调制解调器位于 Web 服务器上,该服务器位于外部可见的网络上,因此这些文件使用 tar 和 scp(rcp(远程复制)命令的安全版本)从内部系统传输到 Web 服务器。

tar(tape archive)和 scp(secure copy)每三个小时用于自动将邮件传输到 Web 服务器。然后从本地工作站删除邮件以避免重复。

通过以这种方式处理邮件,只有一台机器(Web 服务器)需要拥有调制解调器和访问/暴露于外部世界,并且线路不需要保持打开状态。

PPP(点对点协议)服务允许员工通过 Web 服务器在防火墙外部进行远程拨号访问。然后,用户可以使用 ssh(一个secure shell,它加密在被访问的内部工作站和 Web 服务器之间发送的所有数据)访问内部网络(以及他们自己的桌面工作站,如果他们愿意)。员工还可以使用 ssh 从他们的家用计算机连接到 Web 服务器,以确保完全安全的线路,或者如果他们的家用计算机上没有 ssh,则可以使用 telnet。

SSC 的所有用户主目录以及本地二进制文件目录都通过 NFS(网络文件系统)在所有工作站之间共享。使用当前系统,每次用户想要读取他们主目录中的文件时,文件都必须通过网络传输到他们的计算机。很快,我们将把所有用户目录从办公室文件服务器移动到每个用户自己的工作站,原因如下

  • 通过网络传输文件比从本地硬盘驱动器传输文件慢得多,从而导致文件访问速度变慢。

  • 而且网络具有有限的带宽(一次可以传输的信息量),消除不必要的使用将加快网络速度。

Web 服务器

SSC 的 Web 服务器是一台运行 Linux 和 Apache 服务器软件的 AMD 486DX4/100 机器。该服务器包含 SSC 的目录和产品信息,以及关于 Linux Journal 的信息,包括所有期刊的封面和目录、某些期刊的精选文章以及广告商索引。如果 Linux JournalWEBsmith 的广告商需要为其网页提供主页,我们也为他们提供空间出售。

Apache 的一大优势是它可以显示为具有不同域名和 IP 地址的不同服务器——也就是说,它是“多宿主的”。这使得我们的一台运行一个 Web 服务器的计算机可以充当 Zebu Systems, L.L.C. (http://www.zebu.com/) 和 Cucumber Information Systems (http://www.cucumber.com/) 的 Web 服务器。

该服务器自 5 月份开始运行,访问量持续增加。我们目前每天收到大约 35,000 次点击。Apache 非常高效可靠。即使机器上只有 16MB 的 RAM,我们也极少看到负载平均值超过 0.2。这意味着平均只有一个进程在等待运行 20% 的时间,而机器在其余时间处于空闲状态。

将 Web 服务器放在 Orion 防火墙系统之外,可以在 Web 服务器受到攻击时保持内部网络安全。Web 服务器从内部网络镜像,因此如果它受到攻击,可以轻松恢复。

SSC 计算机原理图

打印

我们在 SSC 所做的大部分打印工作都是使用 PostScript 完成的

PostScript 是一种页面描述语言 (PDL),由 Adobe Systems, Inc. 开发。PostScript 告诉任何内置 PostScript 的打印机如何打印由文本和/或图形组成的页面。页面必须由包含驱动程序的软件生成,该驱动程序将页面转换为 PostScript 代码;代码反过来由打印机翻译。PostScript 是高端桌面出版的实际 PDL 标准,因为,除其他原因外,它可以跨各种平台运行,非常精确,并且具有颜色功能。 Holt 和 Morgan—UNIX:开放系统词典。

我们需要打印出来的文本文件,例如发票,以 ASCII 格式完成。它们被发送到点阵打印机之一,或一台专用于打印纯文本的激光打印机。

我们在网络上有七台打印机,通过 lpd 共享。用户可以通过设置他们的 PRINTER 环境变量来选择他们的默认打印机。

许多打印机的选择是基于它们相对于使用它们的人的位置。其他打印机的选择可能是因为它们的速度。一台特殊的打印机 Tektronix Phaser III PXi 是一台蜡转印彩色 PostScript 打印机。这用于制作 SSC 产品、杂志封面和页面以及其他图形(例如网页)的彩色校样。

数据库

我们使用的数据库 Progress 不适用于 Linux。因此,数据库在 Unix System V Release 4.2 系统上运行。Progress 以字符模式运行,用户通过他们 Linux 工作站上的 rlogin 或 telnet 访问数据库。

该数据库用于存储所有客户和供应商相关的信息。这包括客户联系方式、订阅信息、销售交易、读者服务线索、Linux 顾问目录以及更多内容。我们正在将广告预订也转移到这个数据库中。其他小型数据库(例如文章跟踪)是用 Perl 编写的,并在 Linux 系统上运行。

我们使用 Progress 已经很多年了。(我们过去在 Xenix 系统上运行整个办公室。)如果让我们重新做一遍,我们会选择一种数据库方法,使其能够在 Linux 上运行所有内容,而无需在网络中使用外国 Unix 系统。虽然这不是可靠性问题,但确实意味着我们必须支持另一个操作系统。

杂志制作

当我告诉人们我在一家出版公司工作时,许多人会问:“你们的排版是用 Macintosh 吗?” 答案是“不”。我们在 Windows for Workgroups 上使用 Quark Express 和 Corel Draw!,并将该过程直接连接到我们的 Linux 网络。为了解释这一点,让我们从头到尾检查一下杂志制作过程。

首先,编辑 Michael K. Johnson 找到人为 Linux Journal 撰写关于各种主题的文章。请注意,Michael 位于北卡罗来纳州,而 SSC 的其余员工位于西雅图。这意味着 Michael 使用他的本地 Linux 系统来完成他的大部分工作,并使用他的互联网连接来访问西雅图的机器。当文章发送进来时(通过电子邮件),Michael 编辑它们并将它们发送给我们在西雅图的制作编辑。此时,他发送的文章是 Quark 标记格式——ASCII 文本,其中添加了各种转义序列,以指示段落类型、字体更改和其他格式设置。我们目前正在开发一种与 HTML(超文本标记语言,万维网的语言)密切相关的新语言。一旦这种语言完成,我们将能够自动将文章翻译成 Quark 标记格式以进行排版,并翻译成 HTML 以添加到我们的网站。

制作编辑归档文章,运行一些基本检查[例如拼写;我本人不能被信任拼写任何正确的东西——编者注],并将它们打印出来,为我们的文案编辑做准备。打印过程是使用 shell 脚本完成的,该脚本使用 sed 和 awk 将 Quark 标记文件转换为 troff 源,并将结果通过 groff 管道传输,以生成文章导入 Quark 并打印时的合理近似值。

从文案编辑处返回的文章然后由制作编辑审查,并根据需要进行更改。此步骤有时涉及联系作者进行澄清——此步骤通常通过电子邮件进行。

文章的最终版本由另一个 shell 脚本稍作修改,该脚本像第一个脚本一样,使用 sed 和 awk 来完成其工作。这是必要的,因为 Quark 要求段落必须是一条连续的行。此外,还有一些特别糟糕的 Quark 转义序列,我们已将其别名为更简单的转义序列,这些序列需要转换为真正的序列,以便被 Quark 正确解释。这些修改后的文件被写入 Linux 文件系统上的一个位置,WfW 系统可以直接访问该位置。

我们的排版是在我们的 WfW 系统上使用 Quark Express 完成的。一旦广告放置好,文章就会放入。第一次排版过程的结果是一本半成品的杂志。在 Tektronix 打印机上本地打印一份副本以供审查,并将 PostScript 图像写入 Linux 文件系统,以便 Michael 可以下载并在北卡罗来纳州打印。本地打印的副本是从 WfW 机器在连接到 Linux 的打印机上打印的;这比直接将打印机连接到 WfW 系统要快得多,就像最初所做的那样。

制作编辑合并来自 Michael 和其他审阅者的更改,并将它们发送回排版以进行最终更改。如果更改很大,则可以使用 Linux 系统上的 vi 或 emacs 将文章作为文本重新编辑,然后重新提交给排版。

在第二次排版步骤之后,打印杂志的纸质副本供我们的校对员审查。进行此周期的更改,并且排版系统将杂志的 PostScript 图像(分为 2 到 8 页的块)输出到连接到图像照排机的 Linux 文件系统。

Samba

虽然排版系统正在运行 WfW,而排版正在运行 Linux,但文件传输对于这两个部门来说是完全透明的,就像打印一样。这得益于 Samba。

从最基本的意义上讲,办公室中的一切都使用 TCP/IP 作为底层协议。Windows for Workgroups 使用 SMB(会话消息块协议),一种使用 TCP/IP 的协议。为了让 Linux 可以使用 SMB,我们运行 Samba。Samba 是 Unix 的 SMB 协议的免费实现。它由 Andrew Tridgell 于 1992 年开发,目的是将 Sun 的磁盘空间挂载到运行 Pathworks 的 PC。[有关 Samba 开发的说明,请参见 Linux Journal 第 7 期——编者注] Linux 文件系统以网络驱动器的形式出现在 WfW 中。

因此,Samba 用于无缝地将 PostScript 文件从 WfW 系统传输到驱动 AGFA 图像照排机的 Linux 机器。这本质上是一台带有激光器而不是镜头的相机;它使用激光器曝光大幅面的照相胶片。每张黑白页有一张胶片,每张彩色页有四张胶片。这些胶片就是邮寄给印刷公司的东西。

杂志完成后,文件通过 Samba 存档到 Iomega Zip 驱动器上。Zip 驱动器是一种可移动的 100 MB 磁盘驱动器,很像一个巨型软盘,它通过 SCSI 接口连接到连接到图像照排机的同一台 Linux 工作站。它可以连接到任何 SCSI-2 控制器,并且像任何其他 SCSI 设备一样工作。它比典型的硬盘驱动器稍慢,但比一些旧的 MFM/RLL 驱动器快。

ZIP 磁盘像任何其他 Linux 文件系统一样挂载在 Linux 系统上。Linux 将新驱动器视为现有驱动器的已挂载分区。然后可以将其添加到 Windows for Workgroups 系统,其中 ZIP 驱动器被视为另一个网络驱动器。

其他 SSC 产品

除了 Linux Journal,SSC 还出版一系列书籍和参考资料,主要关于 Linux 和 Unix。这些产品中的大多数都是使用 troff 和/或 groff 完成的。例外情况是 LDP(Linux 文档项目)书籍,这些书籍是用 LaTeX 完成的,以及 互联网公共访问指南,该指南是用 Quark Express 完成的。

同样,我们在 SSC 直接制作胶片以运送给印刷商。最近更有趣的创新之一是能够使用 groff 制作专色分色片。这发生在我们更新 Korn Shell 参考卡时。这张卡是四种颜色。除了让印刷商制作分色片的额外成本外,如果只有黑白输出可用,校对多色卡将非常困难。

Arnold Robbins 和 SSC 员工的工作成果产生了一种在 groff 源中直接编写颜色更改的简单方法。在 Makefile 中有两个目标,一个用于打印彩色输出,一个用于制作分色胶片,我们能够完成所需的任务。这些更改需要 groff,并且不适用于 troff,因为它们是通过在 groff 源中包含原始 PostScript 命令来完成的。

许多人可能会问,为什么我们继续使用许多人认为过时的工具来生产产品。对于那些真正使用 Unix 环境的人来说,groff 提供了一些优势。例如,我们最近的许多产品都是由远离我们西雅图办公室的作者编写的。通过使用 groff,我们可以发送小的 ASCII 文件,并使用 diff 等工具仅发送位置之间的更改。这也意味着我们不需要多个昂贵的排版程序来完成任务。

是的,我们也使用 DOS

我们的办公室经理使用 QuickBooks 来做我们的会计。为什么?因为它可用且价格低廉。她使用她 Linux 工作站上的 DOSemu 来完成此任务,使她能够快速地在 QuickBooks 和例如她的电子邮件之间来回切换。将来,我们希望将此任务转换为在 Linux 上运行的某些软件,但目前,这提供了一个合理的解决方案。

下一步是什么?

我们为 Linux 的未来规划了很多。例如,我们目前离线进行信用卡验证。我们希望编写必要的软件以直接从 Linux 系统执行此操作。我们也希望 Progress 将移植到 Linux。如果这没有发生,我们可能会使用在 Linux 上运行的数据库重写我们的数据库系统。

总之,不,我们并没有在所有事情上都使用 Linux。但我们非常接近。Linux 已被证明是廉价、易于扩展且可靠的。对于那些认为我们没有使用 Linux 来制作杂志的人,现在你们知道了。除了一个人之外,我们所有的员工每天都坐在 Linux 控制台前,我认为我们很好地实践了我们所宣扬的。

资源

本文中提到的一些工具可能未包含在您的 Linux 发行版中。

  • NIS:文档可从 sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html 获取,二进制文件可通过 ftp 从 sunsite.unc.edu 的 /pub/Linux/system/Network/admin/yp-clients.tar.gz 获取。

  • Orion:此防火墙可从 Zebu Systems 购买,http://www.zebu.com 或 (206)-781-9566,并且基于 Mazama Packet Filter 软件,www.mazama.com

  • smap:smap 是 Trusted Information System 的 Firewall Toolkit 的一部分,网址为 ftp://ftp.tis.com/pub/firewalls/toolkit/。

  • ssh:ssh 在 www.cs.hut.fi/ssh/ 有一个主页。

  • Samba:Samba 在 lake.canberra.edu.au/pub/samba/samba.html 有一个主页。

  • Apache:Apache 在 www.apache.org 有一个主页。

  • xv:xv 随附一些 Linux 发行版提供,并且可以通过 ftp 从 ftp.cis.upenn.edu 的 /pub/xv/ 获取。

LaTeX、groff、sendmail、tar、diff 和本文中提到的其他实用程序应包含在您的 Linux 发行版中。

Kevin Pierce 是 SSC 的营销助理。他在新罕布什尔州长大,在佛罗里达州立大学上学,并将大多数星期六下午留给大学橄榄球赛。

加载 Disqus 评论