自从我小时候第一次帮助父亲在工作中操作卡片分类机以来,我就一直生活在计算机和电子产品的世界里,我从不害怕尝试新事物(或破坏它们)。多年来,除了 Vista 之外,我运行过每个版本的 Windows,但我在 Commodore Amiga 1000 上,或者在我的 386 上运行 OS/2 Warp 时,玩得很开心。我的第一次 Linux 体验是在工作中的 Web 服务器上使用 Red Hat 5。由于我从小就接触 TRS-DOS 和 Commodore BASIC 之类的东西,我感觉就像在家里一样。
直到一位同事向我介绍了带有 GNOME 的 Red Hat 6,我才真正迷上 Linux,从那以后,我开始旋风般地尝试不同的发行版,包括 Mandrake Linux、纯 Debian 和 Knoppix。我有一段时间双启动 Windows 2000 和 Knoppix,发现我越来越少启动 Windows,除非我需要管理 Windows 服务器。
很快我就如此迷恋 Linux,以至于我想看看我能做些什么来完全摆脱 Windows。当时我正在双启动 Mandrake,并且之前使用 Borland Delphi 做了很多开发工作,我开始尝试 Free Pascal 和 Lazarus。我清点了我使用的应用程序,发现我真正需要 Windows 的唯一东西就是 Microsoft Money。我看过 GnuCash,它对我来说太像一个商业会计软件包了。我决定自己编写一个,并且由于我对 Linux 充满热情,所以我决定它将是开源和免费的。我花了两个星期编写了第一个版本,并将其命名为“CheckBook Tracker”。
当我在 2003 年将其发布到 Freshmeat.net(现在是 freecode.com)时,这对我来说是完全有道理的,但令我惊讶的是,有很多人问我“你到底为什么要免费赠送这个?”或“是什么让你想要免费制作它?”我的回答总是“鼓励人们使用 Linux。”我使用了 CheckBook Tracker 大约七年时间来平衡我的支票簿,直到我停止开支票。不幸的是,它现在是一个已死的项目,但源代码仍然在那里。我偶尔会收到一些人的电子邮件,内容与我为 Lazarus 创建的自定义小部件有关,我在该项目中使用了这些小部件。
在我的 IT 支持职业生涯中继续前进,我开始为客户安装基于软盘的 Internet 防火墙,使用一种特殊的微型 Linux,并开始看到在业务中使用 FOSS 的优势。即使 Linux 桌面仍然不适合普通人,但如果您需要解决技术问题,通常您可以找到一个开源项目来解决该问题。
从业务中的 Linux 入门
2004 年,我加入 EvriChart, Inc. 担任 IT 总监。后来,当公司规模足够大到可以证明其合理性时,我的头衔改为 CIO。这给了我独特的机会,可以在早期阶段按照我想要的任何方向推动整个 IT 基础设施的发展。起初,我们有六名员工和一个构建用于降低电话费用的 Asterisk 电话系统。我停止了双启动,并完全取消了工作桌面上的 Windows。我仍然运行 Mandrake 10.1,并在 2006 年决定切换到 Ubuntu 6.06 Dapper Drake。从那时起,我大部分时间都坚持使用 Ubuntu。最初是因为桌面管理工具似乎更容易。现在我正在慢慢地将事情转移到 Fedora,因为我们更多地嵌入了业务应用程序,例如 OpenLDAP、Gluster、PXE 和 Puppet。
随着我们在 EvriChart 扩展我们的技术,我总是首先考虑 Linux 以寻求解决方案。在过去的 10 年中,由于这一点,我们估计节省了 40 万美元以上的软件许可证和专用硬件。其中很大一部分归功于服务器操作系统许可证和存储系统,但也归功于我们自己用 PHP 编写的软件,而不是许可商业产品。
虽然我们确实有一些机器运行 Windows,但这始终是根据需要决定的——例如驱动特定的企业扫描硬件或要求特定版本的 Microsoft Office 的高管。我们基于 OpenLDAP 身份验证和 Samba 服务器构建了我们的域基础设施,以验证少数 Windows 用户。我们有几个内部开发的应用程序,我们用于图像处理和工作流程,这些应用程序都是基于 Web 服务器的,并且主要用 PHP 编写,因此它们与客户端无关。我们像乐高积木一样使用 Linux 和 OSS,将不同的项目拼接在一起,并使用一些脚本粘合剂,使我们能够以非常少的时间和精力拥有完全定制的系统。
Windows 和专有的文档管理系统无法跟上
我们在图像处理中完全切换到 Linux 的早期驱动因素之一是我们正在使用的基于 Windows 服务器的文档管理系统。我们达到了一个临界点,过去几年我们在商业应用程序上花费了超过 2.5 万美元,但它就是无法跟上——我们需要每天清除数据才能保持生产运行,否则它会被自身的重量压垮。这促使我们开发了自己的解决方案,再次使用 Linux 和各种开源应用程序,就像积木一样,我们将它们与一些 PHP 代码和一个 Web 界面捆绑在一起。从那里,我们构建了 DocStore 文档管理存储引擎。
由于我们没有受到任何遗留系统的束缚,我们能够从头开始使用更现代的技术来开发它。我们研究了 Flickr 和 Facebook 如何运行其基础设施,我去了弗吉尼亚州参加了 Reddit 的 Alexis Ohanian 和 Steve Huffman 的演讲,以了解他们如何处理其网站产生的巨大流量。与 Alexis 讨论基础设施设计教会了我很多关于找出瓶颈所在并在瓶颈周围进行开发的知识。因此,我们设计了一个单一的文档存储库,如果需要,只需向系统中添加更多积木,即可处理美国每家医院的所有文档存储需求。
为了实现高可用性,我们尝试了几个系统,但最终确定了 ZFS 和 Gluster 的组合用于文件存储,并进行异地复制的在线备份,以及 Galera 和 MariaDB 用于数据库管理,同样也进行异地复制。所有数据都使用 AES-256 加密,我们不仅能够承受驱动器故障,而且能够承受服务器故障甚至整个数据中心故障。
我们的五个地点使用 OpenVPN 连接在一起,除了外围的自定义 iptables 防火墙外,我们还实施了自定义 iptables + Packetfence NAC 系统用于内部网络控制。我们全部在商品服务器硬件上使用 Linux 完成,成本仅为一小部分——我们的网络上没有单个专有的“黑匣子”设备。在过去的一年中,我征求了报价,以用商业数据存储产品替换我们的一些 HA 基础设施,发现仅复制我们使用大约 20,000 美元的硬件和 Linux 完成的工作的最低报价约为 300,000 美元。
Linux 非常容易,任何人都可以安装它,甚至不小心也能安装!
我们使用 PXE 网络安装服务器和 Puppet 系统,使我们能够在不到 10 分钟的时间内完全自动地设置新的 Linux 桌面。我们每隔一段时间就会经历增长阶段,突然需要部署多个新桌面,而这种自动化系统为我们的员工节省了大量工作时间。
有一天,该系统让我们感到惊讶,当时一位用户的 Windows 安装在她笔记本电脑上损坏了,她不小心安装了 Linux。当她的笔记本电脑无法从硬盘驱动器启动时,它会自动从网络启动。当她看到 PXE 安装菜单时,她只需按回车键,即可安装一个 Linux 桌面,其中包含我们所有的默认网络安全设置和应用程序。然后,她使用她的网络帐户登录了该桌面,并给我发送电子邮件说她的 Windows 已更新,她想知道为什么她的 Microsoft Office 现在看起来如此不同,以及“Outlook 去哪儿了?”我们对 Linux 现在是如此容易安装和配置,即使在笔记本电脑上也能意外安装,这件事大笑了一场。
我的个人设置
我的个人设置包括 Gnome 3、Chrome、LibreOffice、PhpStorm、MySQL Workbench 和 ClusterSSH。我使用的大多数工具都是基于 Web 服务器的,例如用于开发工作的 Jira 和 Stash,用于管理和监控的 phpLDAPadmin、CUPS、BandwidthD、Ganglia 和 LogAnalyzer。我还使用 ownCloud,它为我在设备之间同步我的 KeePassX 数据库文件。
我是一位狂热的游戏玩家,我真的很高兴 Linux 最近在游戏领域崭露头角并取得了长足的进步。我运行 Valve 的 Steam 平台,最近在我的业余时间,你可以发现我在线玩 Ark: Survival Evolved、Killing Floor 2 或 Unreal Tournament 2015 alpha 测试版。我目前拥有 61 款通过 Steam 购买的商业 Linux 游戏,供我自己以及我的孩子和孙子孙女玩,虽然我仍然在家中安装了 Windows 用于游戏和摄影工作,但我期待着有一天我不再需要它。
对我来说,Linux 是关于选择、控制和学习新事物。我认为这就是为什么对某些人来说它不是那么“容易”的原因之一。有些人喜欢只有一个按钮的鼠标,因为这样可以减少困惑。就我个人而言,我宁愿使用 20 个按钮的鼠标来获得更大的灵活性,并花两个小时使其按照我的方式工作。是的,我运行 Gnome 3 是因为我喜欢它,而不是因为我必须这样做。
本文是名为“我的 Linux 故事”系列文章的一部分。要参与并分享您的 Linux 故事,请通过以下方式联系我们:open@opensource.com。
4 条评论