Webmin:新手和专家皆宜
引用他们的网站,“Webmin 是一个用于 Unix 系统管理的基于 Web 的界面。” 几年前,当我寻找注册域名 webmin.com 时,我发现了 Webmin。我有一个很酷的控制面板的想法,可以帮助管理我的 Linux 服务器集群,我感到很恼火,因为有人先获得了这个域名,直到我开始查看他们提供的下载软件。在那之后,我就迷上了它。
Webmin 提供基于 Web 界面的目标并非独一无二。市面上有很多工具,包括开源和商业工具,都具有相同的目标。Webmin 从众多工具中脱颖而出的原因是,它对经验丰富和经验不足的 Linux 管理员都很有用。在解释它是如何完成如此艰巨的任务之前,让我们看看如何安装该软件以及可以使用它做什么。
在我们深入研究 Webmin 的功能集之前,我应该稍微解释一下它的设计。Webmin 基本上是用 Perl 编写的大量 CGI 的集合。它在您安装时指定的端口上运行自己的 Web 服务器,允许您将 Webmin 的安全性与您的真实 Web 服务器分开管理。受支持平台的完整列表在网站上,其中包括 Red Hat、Solaris、Debian、*BSD、HP-UX、IRIX、AIX、DEC、SCO 和 Mac OS X。
Webmin 的独特之处在于其模块化设计。每个服务或功能都通过一组模块公开。这意味着,如果您想要从 Webmin 控制的应用程序不受支持,您可以使用 Webmin API 构建一个新的模块,使 Webmin 能够控制它。Webmin 附带 50 个标准模块,还有更多模块可用,因此您有大量的源代码示例来帮助您入门。虽然 Webmin 本身是在 BSD 许可证下发布的,但您构建的模块可以根据您选择的任何许可证发布。这使该工具对来自开源社区和商业供应商的提交保持开放。
安装非常简单;访问 www.webmin.com/webmin 并下载 RPM 或 tarball。如果您使用 tarball,则需要在解压缩后运行 setup.sh。此程序会为您处理安装。如果您使用 tarball,请注意一个技巧:确保将其解压缩到您希望这些文件存在的位置。安装 Webmin 后,不要删除您刚解压缩的 Webmin 目录,否则 Webmin 将无法工作。如果您想稍后卸载 Webmin,则包含一个卸载脚本,该脚本将删除初始目录以及 Webmin 放在您驱动器上的所有其他文件。
现在您已经安装了 Webmin,您需要打开 Web 浏览器并登录到您在安装 Webmin 时配置使用的 IP 地址/可解析的服务器名称和端口(通常为 10,000)(请参阅图 1)。登录后,您应该看到 Webmin 的索引页,其中包括几个类别选项卡,其中分组了各种 Webmin 模块(请参阅图 2)。例如,“Webmin”选项卡是所有常规主题、用户、模块等的配置设置所在的位置(这些图中使用了默认主题)。其他选项卡分组包括系统、服务器、网络、硬件和其他。
“系统”选项卡处理与管理计算机或服务器本身相关的任务。这包括设置磁盘配额、设置 NIS、更改 PAM、查看 syslog、添加用户、管理 cron、设置 NFS 甚至修改启动时服务或重启服务器。
“服务器”选项卡将所有服务器服务配置模块分组在一起。您可以在这里找到 Apache、BIND、DHCP、sendmail、Squid 和许多其他相关模块(请参阅图 3)。
“网络”选项卡是新增功能,在 Linux 上,它提供了一个很好的 GUI ipchains 配置模块,以及各种网络实用程序(如 ping、traceroute、whois 和 dig)的子类别。
当然,“硬件”选项卡处理与硬件直接相关的事项。您可以在这里找到有关磁盘分区、系统时间、网络接口配置、LILO 甚至软件 RAID 的信息。
最后一个选项卡是一个大杂烩类别,其中包含一个基于 Java 的 ssh/Telnet 客户端、基于 Java 的文件管理器、名为“自定义命令”的特殊用户可定义模块、系统日志查看器、Perl 模块部分以及基于 Web 的系统和服务器状态监控模块。“自定义命令”模块允许您构建一个简单的 Webmin 界面,使您可以运行任何您想要的命令。如果您需要 Webmin 执行不需要完整模块的特定操作,这将非常有用。图 4 显示了一些快速轻松创建的自定义示例。
这是一个配置 Apache 中新的虚拟托管网站的分步指南。本指南将向您展示如何设置文档根目录、cgi-bin 和日志记录。它看起来比实际情况复杂得多。(我发现编写指向和点击界面的说明比仅仅指向和点击需要付出更多的努力。)
在本示例中,用户 ID “dirk” 已经存在,我们将创建的虚拟主机/域名是 test.com。它还假设您正在使用 Wu-FTPd,并且您设置的域名已经在 DNS 中解析。首先创建将包含网站的 HTML 文件、日志文件和 CGI 脚本的目录(文件夹)。转到主 Webmin 页面并单击“其他”选项卡。接下来,单击“文件管理器”。
使用文件管理器导航到网站管理员的主目录。管理员的主目录是用户使用 FTP 连接到服务器时将进入的目录。此用户的主目录是 /home/username。双击左列中的主目录(文件夹)。双击主目录内网站管理员的用户名。
现在您需要为网站创建必要的目录。单击“新建文件夹”按钮(带有文件夹图标的“新建”按钮)以创建域的主目录(例如,/home/dirk/test.com)。双击您创建的目录(例如,test.com)以移动到其中。现在,在您刚创建的目录中创建三个文件夹(htdocs、logs 和 cgi-bin)。在我们的示例中,我们将创建以下目录:/home/dirk/test.com、/home/dirk/test.com/htdocs、/home/dirk/test.com/logs 和 /home/dirk/test.com/cgi-bin。
现在,返回到用户的主目录。在右列中,单击一次网站的目录(例如,test.com),然后单击页面顶部的“信息”按钮。在“信息”窗口中,将用户和组更改为正确的用户 ID(例如,dirk)。将“将更改应用于”部分中的弹出菜单更改为“此目录和所有子目录”。单击“保存”。
通过单击页面底部的“返回索引”返回到主 Webmin 页面。单击“服务器”选项卡,然后单击“Apache Web 服务器”。如果您是第一次在 Webmin 中单击“Apache Web 服务器”,它将要求您允许 Webmin 检查 Apache 的配置(只需单击“配置”)。
现在滚动到页面底部,您将看到一个用于添加新虚拟站点的表单。在“地址”文本字段中输入网站的 IP 地址。如果您正在进行基于名称的托管,请确保选中“添加名称虚拟服务器地址”框。“文档根目录”应为 /home/userid/domain/htdocs(例如,/home/dirk/test.com/htdocs)。在“服务器名称”文本字段中输入网站的名称(例如,www.test.com),然后单击“创建”。
滚动浏览“虚拟服务器”列表,直到找到您创建的网站。单击该网站的“虚拟服务器”。要设置您的 cgi-bin 文件夹,请单击“CGI 目录别名”行中的“CGI 程序”。在“从”文本字段中,输入 /cgi-bin/。在“到”文本字段中,输入 /home/userid/domain/cgi-bin/。这必须以“/”结尾(例如,/home/dirk/test.com/cgi-bin/)。单击“保存”。
单击“日志文件”。在“访问日志文件”中,在上方写有“文件或程序”的文本字段中输入 /home/userid/domain/logs/access_log(例如,/home/dirk/test.com/logs/access_log)。如果您想要一个包含点击次数和引用站点信息的日志,则在“访问日志文件行”的“格式”列中,将复选框从“默认”切换到文本字段旁边的复选框,并在文本字段中输入“combined”。单击“保存”,然后单击“网络和地址”。在“服务器管理员电子邮件地址”文本字段中输入网站的网站管理员的电子邮件地址。然后选中文本字段旁边的框,然后单击“保存”。
您现在已经设置了网站,但在它上线之前,还有最后一个重要的步骤。在右上角有一个名为“应用更改”的链接;单击它以激活您的更改。
Webmin 提供了许多安全功能。第一道防线是用户 ID/密码身份验证系统,该系统完全独立于 /etc/passwd 文件中保存的用户 ID 列表。这意味着可以在不授予用户任何其他操作系统级别系统权限的情况下授予用户对 Webmin 的访问权限。Webmin 还完全支持 SSL。如果您安装了 Perl SSL 模块,则可以加密您的所有 Webmin 会话,以防止攻击者通过监视会话来获取有关您系统的信息。
Webmin 还允许对各种可用模块进行细粒度控制。例如,您可以授予用户对整个 DNS 服务器的控制权,而无需让他们访问 Apache 配置,或者将他们限制为仅在 DNS 模块中他们拥有的域(请参阅图 4)。如果您需要将任务委派给其他管理员,则这种限制和重新分配控制的能力可能会派上用场。最后,Webmin 还可以配置为记录通过界面进行的所有更改,此功能对于故障排除非常有用。
您可能已经看出来了,我是 Webmin 的忠实粉丝。我喜欢该许可证允许我获取源代码并做我想做的事情。我喜欢模块系统让我构建新事物或添加其他人构建的模块的事实。我目前正在测试 Webmin 的 LTSP 模块,以帮助管理一些不守规矩的 I-Openers。能够将任务转移给经验不足的管理员(室友)并知道他们不会偏离我为他们提供的区域,减轻了我的工作量。
如果 Webmin 只能提供这些,我也会印象深刻。然而,Webmin 架构还有一个最终的好处。Webmin 直接与系统上的所有文件一起工作以影响其更改,这意味着它不使用数据库或其他方式来存储以任何方式非标准的信息。因此,我可以手动编辑 Apache 的 httpd.conf,而无需担心这会导致 Webmin 出现问题。从支持的角度来看,这意味着我可以将 Webmin 安装在服务器上并将其交给其他人。如果该人出现问题,我仍然可以使用我的所有脚本和 vi 知识来排除问题。
命令行友好性和没有将配置推送到平面文件的主后端数据库是控制面板设计人员常常忘记的事情。他们最终构建了一个系统,要求所有事情都必须通过控制面板完成,否则它会崩溃。Webmin 允许我根据自己的方便混合搭配管理风格。例如,我倾向于直接进行 Apache 配置更改。然而,BIND 是另一回事。BIND 以出了名的挑剔而闻名,所以我使用 Webmin 作为 BIND 的便捷前端。它为我提供了所有深奥的选项,并大大降低了排版错误导致解析错误的风险。对我来说,令人惊奇的是 Webmin 如何完美地融入我的管理工具箱。我不必使用它,但它总是在那里。
新管理员会因为 Webmin 的功能深度而喜欢它。指向和点击界面意味着您不必将所有内容都记在脑海中,这对于 Linux 服务器管理新手来说可能是一项艰巨的任务。Webmin 的核心模块公开了他们支持的服务几乎所有的特性和功能。这意味着您可以轻松添加以前不知道存在的配置选项。
我对它的唯一告诫是,虽然 Webmin 组织良好且功能齐全,但它不适合绝对的初学者。如果您不知道 DNS 的 A 记录是什么,那么 Webmin 也帮不了您。Webmin 将底层 Linux 映射到 Web 界面,因此有时当您获得如此多的灵活性和强大功能时,您必须牺牲易用性。一旦您了解了服务的基础知识,Webmin 就可以成为一个很棒的工具——只是不要指望它会为您总结 O'Reilly 关于 BIND 的书。

Dirk J. Elmendorf 是 Rackspace Managed Hosting 的联合创始人之一,并担任首席技术传播官。他还担任研发负责人,帮助开发和评估他在传播角色中推广的新产品和服务。