锻造车间 - Slash
网络日志(也称为博客)的普及程度已经增长了数年,并且没有减弱的迹象。尽管许多网络日志作者继续使用第三方服务(如 LiveJournal 和 Blogger)记录他们的想法,但在您自己的服务器上运行网络日志正变得越来越容易。在过去的几个月中,我们研究了几个提供此功能的不同软件包,包括 COREBlog(一个 Zope 产品)和 Blosxom(一组用 Perl 编写的 CGI 程序)。
上个月,当我们研究 XOOPS 时,我们了解了一种略有不同的网络日志系统。XOOPS 及其同类产品 PHPNuke 和 PostNuke 一样,允许用户创建内容管理和在线社区,以及管理用户和组。XOOPS 可以轻松地为系统上的每个用户提供其自己的个人网络日志。
尽管 XOOPS 可能很受欢迎,但社区软件中无可争议的鼻祖是 Slash,它为流行的 Slashdot.org 和 use.perl.org 网站提供支持。Slash 主要用于传播新闻文章和评论,但它具有强大的网络日志功能,系统上的每个用户都可以使用。有些人会争辩说 Slashdot 本身就是一个社区创作的网络日志,我发现这种说法也有一定的说服力。最重要的是,此网络日志功能已与其他站点元素结合在一起。因此,当您看到来自其他用户的特别有见地或乏味的评论时,您可以立即查看该用户的日志以了解更多信息。
本月,我们将了解一个简单的 Slash 站点的安装和配置,该站点内置了对用户和网络日志(或在 Slash 术语中称为日志)的支持。下个月,我们将更仔细地研究 Slash 上可用的网络日志功能,以及如何配置和更改它以满足我们的特定需求。
Slash 的主要分发和讨论站点是 Slashcode。当我在 2004 年 4 月初撰写本文时,最新的帖子标题为“使 Slash 安装友好”,作者在其中询问是否有清晰简单的 Slash 安装说明。不幸的是,答案似乎是否定的。出现这种情况有以下几个原因
Slash 文档和说明将大多数人指向官方发布的 .tar.gz 包,而这些包已经过时两年多了。
最新的 CVS 版本是免费提供的,并且是最新的,但可能不稳定,除非您知道要获取哪个标记版本。
安装过程相当手动,在几个关键点上都有出错的可能。
Slash 的文档质量有些不足。
即使您安装了最新的工作代码副本,完整的 Slash 安装也需要安装 mod_perl、Template Toolkit、MySQL 以及许多其他 Perl 模块和独立工具,每个工具都有自己稍微奇怪和非标准的选项。
如果您是 mod_perl、MySQL 和 Apache 方面的专家,那么安装 Slash 是一个稍微麻烦但可以完成的过程。如果您不是专家,结果可能值得,但您应该期望在此过程中学习到很多关于这些技术的知识。您可能会发现自己转向 IRC 频道和网站以寻求支持和想法。
安装 Slash 的第一步是安装 Apache、mod_perl 和 MySQL。任何现代版本的 MySQL 都可以正常工作;真正的问题在于 Apache 和 mod_perl,对于初学者来说,安装它们可能很棘手。幸运的是,安装过程的这一部分多年来没有发生重大变化,这意味着您可以按照 InstallSlash 网站上的 MySQL、Apache 和 mod_perl 安装说明进行操作(请参阅在线资源部分)。如果您的系统上既未安装 Perl 也未安装 expat,您也应该按照 InstallSlash 说明进行操作。请记住,在 Red Hat 和 Fedora 系统上,您不仅需要安装 expat RPM,还需要安装 expat-devel RPM。您还需要定义一个 MySQL 数据库,站点信息可以存储在其中;默认情况下,这称为 slashdb。
编译 Apache 和 mod_perl 时的一个主要麻烦是需要定义 EVERYTHING=1。这会激活 mod_perl 的所有钩子,从而允许 mod_perl 覆盖 Apache 的所有默认行为,包括身份验证、授权、URL 重写和日志记录。如果不定义 EVERYTHING=1,mod_perl 只能生成内容。如果您的系统已安装 mod_perl,则可能未在定义 EVERYTHING=1 的情况下编译它,这意味着您需要自己重新编译它。
Slash 说明还建议系统管理员在编译时设置 PERL_MARK_WHERE=1,尽管 mod_perl 代码和文档表明此指令会从错误日志中删除大多数未定义的值警告。我忽略了此建议,并在我现有的 mod_perl 安装上使用了 Slash,并且没有注意到任何不良影响。
最后,您应该使用自动 CPAN 工具在您的系统上安装来自 CPAN(一个包含免费提供的 Perl 模块和文档的全球服务器网络)的 Bundle::Slash 包。实际上,Bundle::Slash 不包含任何代码;它列出了运行 Slash 所需的模块。这样,您可以免于记住(并键入)所有必须安装的 Slash 相关模块。您可以在以 root 身份登录时通过键入以下内容来安装这些模块
# perl -MCPAN -e 'install Bundle::Slash'
如果您以前从未使用过 CPAN,系统将要求您定义许多 CPAN 相关参数,包括可以从中检索模块的最近 CPAN 存档。第一次可能会有点棘手,但您可能可以接受默认值而不会造成任何后果。
安装这些 CPAN 模块的一个复杂部分是 DBIx::Password,它在安装时会要求提供一些特定于站点的信息。InstallSlash 说明指示您应该键入什么来响应提示。如果您出于安全或个人喜好的原因决定更改值,请务必记住您使用的名称。
Bundle::Slash 下载中最困难的部分是 Template Toolkit 安装。Template Toolkit 是 mod_perl 的流行且功能强大的模板系统,它用于以一致且高效的方式显示 Slash 站点内的各种页面。
此时,您需要下载并安装 Slash 代码本身。InstallSlash 说明将引导您完成最新打包版本 (2.2.6) 的下载和安装过程,该版本位于 SourceForge 上。但是,正如我上面指出的,自 2.2.6 发布以来的两年中发生了大量开发,这些改进仅在 CVS 版本中可用。您可以使用以下命令从 CVS 检索最新版本并将其保存在名为 slash 的目录中
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net: ↪/cvsroot/slashcode co -r T_2_3_0_148 slash
与此同时,从 SourceForge 检出最新的 CVS 版本也有其自身的缺陷,因为您有安装最近检入但未测试的代码的风险。最好的解决方案是使用标记版本。正如经验丰富的 CVS 开发人员所知,CVS 中的每个文件都有自己的修订号,例如 1.5 或 2.8 或 3.1.1.2。这些修订号反映了单个文件的修订,与整个项目无关。因此,尽管软件项目可能会以 2.0 版本发布到公众,但单个文件几乎肯定没有 2.0 的修订号。要为项目中所有文件的当前状态分配一个集体名称(或编号),您必须使用标记,有时称为符号修订。假设您具有写入权限,您可以使用以下命令标记当前目录 release-2-0 中的所有文件
cvs tag release-2-0
标记不能包含某些字符,包括句点和逗号。这就是为什么我们需要使用连字符而不是句点来表示我们软件的 2.0 版本。这就提出了一个问题,您可以或应该检索哪个标记。就 Slash 而言,代码正在缓慢地向 2.3.0 版本迈进,开发人员已将标签标准化为类似于 T_2_3_0_XXX 的形式,其中 T 代表已测试,XXX 随着每个新标签递增。截至撰写本文时,最新的标签是 T_2_3_0_148;可以使用以下命令检索它
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net: ↪/cvsroot/slashcode co -r T_2_3_0_148 slash
此命令创建一个名为 slash 的目录,并将所有 Slash 相关代码、库和文档放入其中。特别有用的是 INSTALL 文件,它是旨在与您刚刚检出的 CVS 版本配合使用的最新版本说明。我按照此文件中的说明,键入make install以安装所有 Slash 组件。安装过程中的一条消息指示要添加到 Apache 配置文件末尾的命令。这确保 Apache 在启动时包含适当的 Perl 模块,从而显着减少 mod_perl 的内存占用和执行时间。
Slash 的优点之一是它可以轻松地使用相同的代码处理多个站点。也就是说,如果您决定要为 Perl、Python、Tcl 和 Ruby 创建单独的在线社区,Slash 可以为您处理。每个社区都需要自己的主机名,但它们可以彼此完全不同。换句话说,安装 Slash 站点与安装 Slash 软件是分开的程序。一旦软件安装完成(默认情况下在 /usr/local/slash 中),您可以通过运行以下命令创建新站点
/usr/local/slash/bin/install-slashsite -u USER
此处,USER 是您在安装 DBIx::Password 时创建的同一个虚拟用户。默认情况下,此用户是 virtslash。install-slashsite 会询问更多问题,包括管理员用户名和密码,然后告诉您使用 apachectl 程序(通常安装在 /usr/local/apache/sbin 中)停止并启动 Apache。您不应使用 apachectl 的 restart 命令。尤其是在使用 mod_perl 时,您应始终停止 Apache,暂停几秒钟以使进程完全退出,然后再重新启动它。
当我尝试运行install-slashsite时,我发现至少缺少一个 CPAN 模块 (LWP::Parallel::UserAgent)。安装它并没有花费太长时间,但我很沮丧地发现 Bundle::Slash 和 make install 都没有注意到或修复此问题。
您的 Slash 站点现在可以使用了。在我的机器上,在我的私人家庭网络上名为 chaim-weizmann,我可以通过访问 http://chaim-weizmann 查看我的站点。
当然,新安装的 Slash 站点不是很令人兴奋。如果您使用您提供给 install-slashsite 的管理员用户名和密码登录,您将获得许多选项和菜单,这些选项和菜单提供了对系统的相当多的控制。许多菜单很难找到,新的 Slash 管理员需要一段时间才能了解在 Web 站点或磁盘上的模板和程序中进行不同更改的位置。slashguide.pod(Slash 站点维护的良好介绍)位于 Slash 的 CVS 版本附带的 docs 目录中。
但是,如果您对原始 Slashdot 站点有所了解,您应该能够立即开始发布故事和征求评论。以站点管理员身份登录后,单击主页顶部的“新建”链接。输入主题、标题、部门、介绍副本(显示在主页上)和扩展副本(显示在单个故事页面上)。您甚至可以设置投票或将故事链接到现有投票。一旦故事获得批准,它将对全世界可见。可以选择允许网站访问者发表评论,甚至可以充当版主。事实上,Slash 故事的社区审核和元审核是 Slash 引入的最有趣的想法之一。
Slash 比我们迄今为止讨论过的任何其他软件包都更难安装。这部分是由于作者对技术的选择,因为 mod_perl 本质上比 XOOPS 或 Zope 使用的 PHP 更难安装。与此同时,Slash 提供的社区和网络日志功能比其他软件包更多,以处理高负载而闻名,并且继续保持在相当高的水平。
如果您不害怕弄脏双手,并且如果您想要 Slashdot 站点提供的功能,那么 Slash 可能是社区或个人编写的网络日志的不错选择。下个月,我们将研究 Slash 允许人们制作的个人日志,以及允许人们对系统上的其他用户进行分类的朋友系统,从而创建一个反映现实世界的虚拟社区。
本文资源: /article/7545。
Reuven M. Lerner,一位长期的 Web/数据库顾问和开发人员,现在是西北大学学习科学项目的一年级研究生。他的网络日志位于 altneuland.lerner.co.il,您可以通过 reuven@lerner.co.il 与他联系。