锻造坊 - 使用 Bricolage 发布
如果您出版在线报纸或杂志,您可能已经研究过内容管理系统 (CMS)。CMS 软件通过处理用户、组、权限、编辑职责和站点范围模板等各种问题,可以轻松跟踪网站上的许多页面。您的网站页面越多,或者在其上工作的人员越多,您就越有可能从 CMS 中受益。
许多公司应运而生以满足这种需求,提供声称可以完成除编写网站内容之外的所有事情的 CMS 软件。(尽管考虑到某些网站的写作质量,您有时不得不怀疑。)这花了一些时间,但是现在可以使用许多开源 CMS 软件包,它们可以满足即使是最复杂的网站要求。Bricolage 是最强大和最受欢迎的软件包之一,它将 Apache 的 mod_perl 模块、PostgreSQL 关系数据库和 HTML::Mason 模板系统结合到一个简洁的软件包中 (sourceforge.net/projects/bricolage)。
在本专栏的前几期中,我们研究了 Mason 系统的一些基本配置,包括可以设置为在某些事件发生时触发的警报。然而,到目前为止,我们忽略了 CMS 最重要的任务,即,将内容发布到实际的网站。本月,我们跟踪一篇文章从构思到发布的过程,沿着 Bricolage 发布途径进行。
这一切的第一步是在其上发布内容时创建一个网站。我在我的服务器上创建了一个名为 output.lerner.co.il 的虚拟主机,它有自己的目录用于错误日志和访问日志。然后,我在我的 Apache 配置文件中添加了一个适当的 VirtualHost 指令,如下所示
<VirtualHost 69.55.225.93> ServerName output.lerner.co.il ServerAdmin reuven@lerner.co.il DocumentRoot /usr/local/apache/ ↪v-sites/output.lerner.co.il/www CustomLog /usr/local/apache/v-sites/ ↪output.lerner.co.il/logs/access-log combined CustomLog /usr/local/apache/v-sites/ ↪output.lerner.co.il/logs/referer-log referer ErrorLog /usr/local/apache/v-sites/ ↪output.lerner.co.il/logs/error-log </VirtualHost>
现在,当我的服务器收到对 output.lerner.co.il 的请求时,它会在 output.lerner.co.il/www 目录中查找,而不是在主文档根目录中查找,主文档根目录通常定义为 /usr/local/apache/htdocs。
在我们使用 Bricolage 将任何文章发布到 Web 之前,我们必须告诉 CMS 新文件应该存放在哪里。在 Bricolage 中,这是通过“分发”标题下的“目标”菜单选项完成的。您可以创建多个输出目标,从而可以使用单个 Bricolage 实例拥有多个站点。对于员工制作几种不同报纸的出版商来说,情况可能就是这样。每个输出目标都可以在本地文件系统上,也可以在通过 FTP 访问的远程站点上。
单击“新建目标”以创建新的发布目标。大多数小型站点只需要一个通道,该通道允许将所有文档导出到磁盘上站点的 DocumentRoot。然后,您必须指出几件事:1) 网站是否与 Bricolage 系统位于同一台计算机上,或者是否必须使用 FTP 将文件复制到远程计算机,以及 2) 应该将哪些输出通道设为私有。我们假设 Bricolage 服务器和最终 Web 服务器在同一台计算机上——但在更大规模的环境中,尤其是在性能成为问题的情况下,将它们分开是明智的。第一个新目标屏幕如图 1 所示。
尽管 Bricolage 允许您定义新的输出通道,但现在请保留默认的 Web 通道。输出通道和目标之间的区别起初可能有点令人困惑。将输出通道视为逻辑目标,将目标视为物理目标,然后意识到您可以以各种不同的方式混合和匹配它们。您可以有多个输出通道到一个目标,或者一个输出通道到多个目标。
一旦您提供了有关新目标的一些基本信息,您必须至少定义一个操作(“移动”),然后定义最重要的部分,即服务器部分。在服务器部分,您指示文件最终应存放在哪个服务器上。正如我们已经表明我们正在复制文件而不是使用 FTP,我们只需要填写目标路径名,该路径名应与 Apache 虚拟主机的 DocumentRoot 匹配,文档将在该虚拟主机中可用。
现在我们已经创建了一个输出通道,我们可以返回并创建一个新故事,戴上我们的记者帽。(请记住,这些菜单中的每一个通常都旨在供杂志社的不同人员或群体使用。)单击“故事”菜单中的“新建故事”,为其提供最少的标题、类别(/,除非您定义了其他类别)和优先级(正常)。您还可以设置发布日期,这不仅指示故事应何时发布到 Web,还指示故事应通过哪个 URL 可用。Salon.com 的长期读者可能已经注意到每个故事的 URL 都包含发布日期;毫不奇怪,从 Salon 开发的 CMS 发展而来的 Bricolage 延续了这一传统。
当您填写完这些基本信息后,单击“创建”按钮。现在您有机会创建文章的文本,添加段落(一次一个段落,或使用批量编辑按钮用空行分隔)。当您的故事完成后,您可以使用页面底部的“签入”按钮将其提交到编辑台,将其发送到编辑台。
不幸的是,基于 Web 的界面的性质以及 Bricolage 提供的灵活性意味着 Bricolage 的界面通常有点复杂,迫使您使用许多不同的“提交”按钮。幸运的是,按钮的标签清晰地标记,这意味着即使您最终保存了您的故事而不是将其签入到编辑台,您可能也不会意外删除该故事。也就是说,新的 Bricolage 用户最好在假设所有“提交”按钮都是相同之前阅读按钮上的标签。
现在我们已经将文章提交到编辑台,我们再次换帽子,假装是必须审阅故事的编辑。单击“故事”菜单中“工作台”子标题下的“编辑”菜单,您将获得当前签入编辑台的所有故事的列表(图 2)。已发布的故事在其标题栏中有一个 P。签出的故事(即可供编辑更改的故事)可以编辑。但我们现在不打算编辑故事,因为我们知道作者是一个始终如一地完成句子并仔细复核其工作的人。现在,我们将其发送到发布台,在那里对内容进行最后一次审核,然后发送到 Web。我们通过在“移动到”菜单上选择“发布”,然后单击“移动资产”来执行此操作。
然后我们可以转到发布台,在那里项目在发布到 Web 之前进行最后一次审核。请注意,Bricolage 内置了对文字编辑和法律审查的支持。如果您的组织结构比默认设置更复杂,您也可以创建新的工作台。
在许多方面,发布台与其他工作台相同;它允许您向故事添加注释、查看故事的编辑轨迹,甚至查看更改日志。您还可以在发布台编辑故事,方法是将其签出并单击“编辑”链接。然而,发布台最重要的部分是额外的复选框(标记为“发布”,不足为奇)和一个标记为“发布已检查”的按钮(图 3)。
当您单击“发布已检查”时,Bricolage 为您提供了指示故事应何时发布的选项。这与故事的发布日期不同。例如,您可能希望日期为 2 月 1 日的故事在 1 月 31 日可用。或者,您可能希望它仅在 2 月 7 日可用。单击“发布资产”按钮会将此过程落实到位,Bricolage 报告它已发布有问题的文章(或多篇文章)。果然,我们的文档已发布到我们之前分配给它的 URL——在本例中,作为 DocumentRoot 中的 index.html。
当印刷报纸或杂志发布故事时,无法更改已显示的内容。但在 Web 上,您只需修改有问题的文章,每个人都会立即看到更改。忽略这种技术能力引发的新闻伦理问题,Bricolage 可以轻松地更正故事,然后在站点上重新部署它。
要修改已发布的故事,请转到“活动故事”菜单项,该菜单项会显示当前可用故事的列表。您可以选择签出一个故事,并使其可供当前用户编辑。(Bricolage 的版本控制系统确保一次只有一个人可以编辑文件。)然后,您可以编辑文件并将其发送到编辑台,就像您最初编写故事时一样。和以前一样,编辑台必须将其传递到发布台;从那里可以将其发布到 Web。
如果您以前只在小型网站上工作过,那么这项任务可能看起来过于复杂。毕竟,Web 的美妙之处不就在于我们可以更改文档并立即看到这些更改的结果吗?的确,内容管理系统为网站的运作引入了一系列权衡。您不能再简单地修改磁盘上的文件;您必须登录、签出文件、进行修改、将其签回并发送到发布台,发布台甚至可能拒绝您的更改。
但是,尽管此过程可能很复杂且官僚,但它比另一种选择要好,另一种选择是多个人争夺文件的所有权,或者不同的人试图在实时站点上编辑文件——有时以不同的方式。CMS 旨在减慢您的速度,就像安全带旨在防止您移动太多一样。但在这两种情况下,限制旨在通过阻止您伤害自己来帮助您。此外,这种官僚作风可以在紧要关头为您节省时间,因为文档的每个先前版本始终可用。因此,如果您不小心删除了重要故事的一半,您可以恢复到 Bricolage 存储在其数据库中的先前版本。
Reuven M. Lerner,一位长期的 Web/数据库顾问和开发人员,现在是伊利诺伊州芝加哥市西北大学学习科学专业的一年级研究生。您可以通过 reuven@lerner.co.il 与他联系。