使用 Wiki 和博客简化管理
系统管理可能就像驾驶一艘船。您必须保持引擎平稳运行,及时通知船员和港口并保持更新,还要维护您的船长日志。您必须密切关注地平线,了解接下来会发生什么。在过去的几年里,出现了两种技术可以帮助您保持航向,即 wiki 和博客。
我发现系统管理最困难的方面之一是保持文档的准确和最新。记录您今天如何解决一个棘手的问题将帮助您在几个月后再次发生时记住如何解决它。如果您曾经与他人合作过,您就会意识到良好的文档有多么重要。即使您是唯一的系统管理员,您仍然会收获良好文档的好处,如果将来有其他系统管理员加入,好处会更多。
一个好的文档系统的目标应该是
让您和您的同事轻松找到相关信息。
让新员工轻松快速上手。
让创建、编辑和停用文档变得容易。
保留更改的版本以及谁进行了更改。
使用身份验证系统限制谁可以查看或编辑文档。
不幸的是,保持文档更新本身可能就是一项全职工作。记录文档虽然不是一项非常光鲜的任务,但从长远来看肯定会有回报。
这就是 wiki 的用武之地。来自维基百科:“wiki 是一种网站,允许用户添加和编辑内容,特别适合建设性的协作创作。”
这意味着 wiki 允许您在中心位置保存和编辑文档。无论您使用什么平台,您都可以访问和编辑该文档。您只需要一个 Web 浏览器。一些 wiki 具有跟踪已更改文档的每个版本的能力,因此如果对文档进行了一些错误的更改,您可以恢复到以前的版本。新用户必须克服的唯一障碍是学习您的 wiki 的特定标记语言,有时甚至这不是完全必要的。
wiki 的一个功能也是它的缺点之一。Wiki 非常自由流动,虽然这使您可以专注于快速编写文档,但它会使您的 wiki 的组织迅速失控。需要考虑如何组织 wiki,以便主题不会被搁置或丢失。我发现将首页设为所有主题的目录非常方便。无论您决定如何组织您的 wiki,请确保其他所有人都充分理解它。事实上,一个好的第一份文档可能是描述 wiki 组织的策略!
有几个开源 wiki 可用,例如 MediaWiki [有关 MediaWiki 的更多信息,请参阅 Reuven M. Lerner 在第 62 页上的文章] 和 MoinMoin,每个都有自己关于标记和布局的理念,但这里我们专注于 TWiki。TWiki 的一些优点是
Web 的概念允许 wiki 管理员将协作区域隔离到他们自己的区域,每个区域都有自己的一组授权规则和主题。
一个模块化的插件和皮肤系统,允许您轻松自定义。
完善的用户和开发者基础。
基于 RCS 的版本控制。
它是基于 Perl 的,可以使用 mod_perl 或 FastCGI。
身份验证由 wiki 外部的机制处理,例如 Apache htpasswd。
此时最新的稳定版本是 Cairo,或 TWiki20040904。顾名思义,它于 2004 年 9 月 4 日发布,并且已被证明非常稳定。但是,它确实缺少当前 beta 版本 Dakar 的一些功能,我发现这些功能非常有用。我们在此处使用的 Dakar 版本是 TWikiRelease2005x12x17x7873beta。
安装 TWiki 相对容易,但仍需要改进。我希望,随着 beta 版本的进展,我们将看到安装和升级的简易性以及更清晰的文档方面的改进。
首先,您必须创建要安装 TWiki 的目录,例如 /var/www/wiki。接下来,在该目录中解压 TWiki 发行版。然后,您必须确保有权运行 CGI 脚本的用户(通常是 apache 或 www-data)拥有所有文件并且能够写入所有文件
# install -d -o apache /var/www/wiki # cd /var/www/wiki # tar zxf /path/to/TWikiRelease2005x12x17x7873beta.tgz # cp bin/LocalLib.cfg.txt bin/LocalLib.cfg # vi bin/LocalLib.cfg lib/LocalSite.cfg # chown -R apache * # chmod -R u+w *
现在将 bin/LocalLib.cfg.txt 复制到 bin/LocalLib.cfg,并对其进行编辑。您需要编辑 $twikiLibPath 变量以指向您的 TWiki lib 目录的绝对路径,在我们的例子中是 /var/www/wiki/lib。您还必须创建 lib/LocalSite.cfg 以反映您的特定站点信息。以下是可能放入 LocalSite.cfg 的示例
# This is LocalSite.cfg. It contains all the setups for your local # TWiki site. $cfg{DefaultUrlHost} = "http://www.example.com"; $cfg{ScriptUrlPath} = "/wiki/bin"; $cfg{PubUrlPath} = "/wiki/pub"; $cfg{DataDir} = "/var/www/wiki/data"; $cfg{PubDir} = "/var/www/wiki/pub"; $cfg{TemplateDir} = "/var/www/wiki/templates"; $TWiki::cfg{LocalesDir} = '/var/www/wiki/locale';
以下是您的 Apache 配置文件的示例部分,允许此 wiki 运行
ScriptAlias /wiki/bin/ "/var/www/wiki/bin/" Alias /wiki "/var/www/localhost/wiki" <Directory "/var/www/wiki/bin"> Options +ExecCGI -Indexes SetHandler cgi-script AllowOverride All Allow from all </Directory> <Directory "/var/www/wiki/pub"> Options FollowSymLinks +Includes AllowOverride None Allow from all </Directory> <Directory "/var/www/wiki/data"> deny from all </Directory> <Directory "/var/www/wiki/lib"> deny from all </Directory> <Directory "/var/www/wiki/templates"> deny from all </Directory>
TWiki 附带一个 configure 脚本,您运行该脚本来设置 TWiki。此脚本不仅用于初始安装,还用于稍后启用插件时。此时,您已准备好配置 TWiki,因此将您的浏览器指向您的 TWiki 配置脚本,http://www.example.com/wiki/bin/configure。您可能对 Security 部分特别感兴趣,但我们稍后会访问它。在您注册您的第一个用户之前,您应该将所有设置保持原样。如果配置脚本给出任何警告或错误,您应该首先修复这些问题并重新运行脚本。单击“下一步”后,系统会提示您输入密码。将来每次运行配置脚本时都会使用此密码,以帮助确保没有不当访问。
成功完成配置后,就可以进入 wiki 了。将您的浏览器指向 http://www.example.com/wiki/bin/view,您将看到 Main web。页面中间有一个注册链接。将自己注册为用户。请务必提供有效的电子邮件地址,因为该软件使用它来验证您的帐户。验证您的用户帐户后,您需要将自己添加到 TWikiAdminGroup。返回 Main web 并单击左侧的 Groups 链接,然后选择 TWikiAdminGroup。编辑此页面,并将 GROUP 变量更改为包含您的新用户名
Set GROUP = %MAINWEB%.TiLeggett Set ALLOWTOPICCHANGE = %MAINWEB%.TWikiAdminGroup
这些行开头的三个空格至关重要。
这两行将您的用户添加到 TWikiAdminGroup,并仅允许 TWikiAdminGroup 的成员修改该组。我们现在准备为我们的 wiki 启用身份验证,因此返回 http://www.example.com/wiki/bin/configure。Security 部分下提供的几个选项很有用。您应该确保启用选项 {UseClientSessions} 和 {Sessions}{UseIPMatching}。还要将 {LoginManager} 选项设置为 TWiki::Client::TemplateLogin,并将 {PasswordManager} 设置为 TWiki::Users::HtPasswdUser。如果您的服务器支持,您应该将 {HtPasswd}{Encoding} 设置为 sha1。保存您的更改并返回到 wiki。如果您没有自动登录,则页面左上方有一个链接允许您这样做。
现在您已经成功配置了身份验证,您可能希望收紧您的 wiki,以便未经授权的人员不会将您的文档存储库变成非法数据存储库。TWiki 具有相当复杂的授权系统,该系统从站点范围的首选项一直到特定主题分层。在锁定 Main web 之前,还需要完成一些任务。一旦只有某些用户可以更改 Main web,注册新用户将失败。这是因为用户注册过程的一部分涉及在 Main web 下为该用户创建一个主题。Dakar 有一个用户 TWikiRegistrationAgent,用于执行此操作。从 Main web 中,使用左上角的 Jump 框跳转到 WebPreferences 主题。编辑主题以包含以下四行并保存您的更改
Set ALLOWTOPICRENAME = %MAINWEB%.TWikiAdminGroup Set ALLOWTOPICCHANGE = %MAINWEB%.TWikiAdminGroup Set ALLOWWEBRENAME = %MAINWEB%.TWikiAdminGroup Set ALLOWWEBCHANGE = %MAINWEB%.TWikiAdminGroup, -->;%MAINWEB%.TWikiRegistrationAgent
这只允许 TWikiAdminGroup 的成员更改或重命名 Main web 或更新 Main web 的首选项。它还允许 TWikiRegistrationAgent 用户在新用户注册时创建新用户的 home 主题。我包含了一个补丁,您也必须将其应用于 lib/TWiki/UI/Register.pm。补丁如下,但您也可以从 LJ FTP 站点下载补丁(请参阅在线资源)
--- lib/TWiki/UI/Register.pm.orig 2006-01-04 01:34:48.968947681 -0600 +++ lib/TWiki/UI/Register.pm 2006-01-04 01:35:48.999652157 -0600 @@ -828,11 +828,12 @@ my $userName = $data->{remoteUser} || $data->{WikiName}; my $user = $session->{users}->findUser( $userName ); + my $agent = $session->{users}->findUser( $twikiRegistrationAgent ); $text = $session->expandVariablesOnTopicCreation( $text, $user ); $meta->put( 'TOPICPARENT', { 'name' => $TWiki::cfg{UsersTopicName}} ); - $session->{store}->saveTopic($user, $data->{webName}, + $session->{store}->saveTopic($agent, $data->{webName}, $data->{WikiName}, $text, $meta ); return $log; }
否则,新用户的 home 目录将无法创建,新用户注册将失败。验证 Main web 已锁定后,您应该对 TWiki 和 Sandbox web 执行相同的操作。
完成 TWiki 的配置后,您应该保护文件的权限
# find /var/www/wiki/ -type d -exec chmod 0755 {} ';' # find /var/www/wiki/ -type f -exec chmod 0400 {} ';' # find /var/www/wiki/pub/ -type f -exec chmod 0600 {} ';' # find /var/www/wiki/data/ -type f -exec chmod 0600 {} ';' # find /var/www/wiki/lib/LocalSite.cfg -exec chmod 0600 {} ';' # find /var/www/wiki/bin/ -type f -exec chmod 0700 {} ';' # chown -R apache /var/www/wiki/*
正如我之前提到的,TWiki 有一个插件系统,您可以使用它。TWiki 网站上提供了许多插件。请确保您选择的插件已针对 Dakar 更新后再使用它们。
系统管理中一个有时被忽视的重要方面是让用户了解情况。大多数用户都想知道何时有新功能可用,或者何时资源宕机或不可用。让用户了解情况不仅会让用户更快乐,而且还可以让您的生活更轻松。当中央文件服务器宕机时,您最不想做的就是回复用户关于为什么他们无法访问其文件的问题。如果您已经培训您的用户首先查看中央位置以了解基础设施的状态,那么在收到问题通知后,您只需在此中央位置发布存在问题即可。邮件列表也适用于此目的,但如果邮件服务器宕机怎么办?有些人,例如您的老板或公司副总裁,可能想知道事情发生时的状态。这些更新可能不适合每天通过电子邮件发送给所有人。您可以为这些通知创建另一个邮件列表,但您也可以考虑博客。
如果您不熟悉博客,让我们回顾一下维基百科:“博客是一个网站,其中定期发布日记条目,并以倒序时间顺序显示。”
博客的概念以日记的形式存在了几个世纪,但博客最近在互联网上得到了爆炸式增长。很多时候,博客最初是作为某人的个人日记或作为报道新闻的一种方式而开始的,但博客对于系统管理员来说非常有用。
博客可以帮助系统管理员为用户提供他们正在做什么以及基础设施状态的最新状态。如果您忠实地更新您的博客,您可以轻松回顾您所完成的工作,以便您可以为您一直希望获得的加薪进行辩护。它还将帮助您跟踪您的同事正在做什么。而且,由于许多博客软件包都提供 RSS 订阅,用户可以订阅该博客并在有新帖子时收到通知。
现在有很多博客软件包,但这里我们介绍 WordPress。WordPress 速度很快,并且具有漂亮的插件和皮肤界面,可让您根据自己的喜好进行自定义。运行 WordPress 的唯一要求是 Apache、MySQL 和 PHP。我不介绍如何安装 WordPress,因为在线文档非常清晰易懂。相反,我从安装结束的地方开始,并介绍一些有用的插件。我建议从 WordPress v1.5.2 开始,即使 v2.0 当前已发布。最初的 2.0 版本存在一些问题,值得等待 v2.0.1。此外,许多插件还没有机会更新到新系统。
安装 WordPress 后,您应该做的第一件事是以管理员用户身份登录。登录后,您将看到仪表板。页面顶部是一个名为 Write、Manage、Links 等的选项菜单。您应该首先通过单击 Users 选项为自己创建一个帐户。加载完成后,主菜单下有两个标签,分别标记为 Your Profile 和 Authors & Users。单击 Authors & Users,然后向下滚动到 Add New User 部分并填写文本字段。添加用户后,它会出现在上面的 Registered Users 部分中。有几列数据,其中一列是 Promote,您应该单击它。提升用户会使该用户成为作者,并允许该用户根据其级别拥有更多权限。提升用户后,其级别将为 1。级别两侧有加号和减号,用于增加用户的级别。将其增加到 9,这是非管理员用户可以达到的最高级别。如果您需要删除已提升为作者的用户,您只需将其级别降低到 1 以下,然后删除它们即可。我已在在线资源中包含了一个链接,其中更深入地描述了每个用户级别的权限。
您可能需要考虑更改其他一些选项。在 General Options 中,有一些复选框允许任何人注册成为博客用户,并要求用户登录才能添加评论。您可能希望启用或不启用这些选项,具体取决于您的安全考虑因素和博客的开放性。在我们的站点,用户无法自行注册,但任何人都可以发布评论而无需登录。您应该浏览所有菜单及其所有选项,以针对您的站点进行调整。
WordPress 具有非常模块化的插件系统,很多人编写了许多插件。WordPress 还有类别的概念。类别可以有很多用途,但一种用途可能是为不同的用户社区创建迷你博客,或对有关基础设施特定方面的帖子进行分组。但是,您可能不希望所有用户都能看到每个类别。Userextra 插件与 Usermeta 插件结合使用,可让您精确控制此类事情。按照这些插件的安装说明进行操作后,Options 下将提供两个更多菜单,Manage 下将提供一个更多菜单,可让您细化访问权限。
您可能会发现另一个有用的插件是 HTTP Authentication 插件。此插件允许您使用外部身份验证机制(例如 Apache 的 BasicAuth)作为向 WordPress 进行身份验证的一种手段。如果您已经有一个 LDAP 目录或 Kerberos 领域用于身份验证,并且您已经启动并运行了 mod_auth_ldap 或 mod_auth_kerb,这将非常有用。
WordPress Codex 和 WordPress Plugin DB 上提供了更多适用于 WordPress 的插件。如果您觉得缺少某些功能,WordPress 网站上提供了大量示例和文档,这些插件存储库可以帮助您编写自己的插件。
我希望在对 wiki 和博客进行旋风式浏览之后,您已经开始了解它们如何有益于帮助您的商店更平稳地运行,并为您的用户提供他们可能想要的所有信息。正如有很多不同的帆可以使您的船航行一样,也有很多不同的 wiki 和博客软件包。适合您的软件包是让您的用户满意并让您高效工作的软件包。
本文资源: /article/8832。
Ti Leggett (ti@daleggetts.com) 是一名全职系统管理员。当他不工作时,可能会发现他在弹奏他的 Gibson B-25,或者做一些家居装修或木工活。