管理多个厨师
Vien ici,François!看看这个。什么?你说这是什么?这是我们的新内联网。你觉得怎么样?Mon Dieu!你不能告诉我,因为你不知道什么是内联网?我真庆幸我们的客人还没到,François。你知道,在 Chez Marcel 这里工作,他们自然会认为你是这些方面的专家。
François,内联网可以被认为是您自己的私有互联网,一个联网环境,用户可以在其中共享信息、参与讨论并使用网络技术尽可能轻松地获取信息。它实际上可以是很多东西——提供对公司文档访问的数据库、招聘信息的资讯中心、讨论区或查找最新冰球比赛结果的地方,non?内联网是共享信息的地方。它可以采取多种形式,但内联网的本质是一个高科技公告板,它允许您发布简单的通知以及整个多页文档。与大多数公司午餐室的软木板不同,一个优秀的基于网络的内联网具有几乎无限的空间。
François,为什么我跟你说话的时候你不看着我?啊!Mes amis。欢迎来到我的餐厅。François!去酒窖pour du vin。Vite!把 1990 年的 Vosne-Romanée Les Beaux Monts 拿来。没有什么比勃艮第葡萄酒更适合讨论网络了,non?Merci,François。
请坐,mes amis。在你们到来之前,我正在向 François 展示这家餐厅的一个特殊功能。虽然我们喜欢为您带来来自世界各地的美味佳肴,但有时是我们自己的厨房在创造美味,non? Sally Tomasevic,主厨,编写了一个我们称之为 Grand Salmar Station 的内联网软件包。这个软件包真正出色之处在于它几乎是自我管理的。内联网解决方案的一个常见问题是它们需要技术人员来监督项目。至少,有人必须编写 HTML、维护结构并处理过时的信息。不幸的是,有时这个人(以及他们的奉献精神)可能很难找到。
啊,François,你回来了。Merci。请为我们的客人倒酒。Mes amis,如果我告诉您,您可以部署一个内联网,并将其交给您的用户,让他们在无需培训的情况下进行维护,您会怎么想?他们不需要懂任何 HTML,也不必编写任何一行代码。厨师 Sally 正是创建了这样一个软件包。它甚至更好。Grand Salmar Station 将自动创建和维护所有链接,甚至会在您无需动手指的情况下使旧帖子或过时信息过期。任何新添加的项目都会神奇地出现在内联网的“最新消息”页面上以突出显示。通常,这样的添加和删除需要用户干预,并且必须验证和重新创建链接。使用这个内联网就没问题了。它为您完成所有工作。
它是一个公告板、一个灵活的新闻中心、一个互联网参考列表、一个办公室目录和一个文档管理系统,集于一体。最棒的是,Grand Salmar Station 在 GPL 许可下免费分发。

图 1. Grand Salmar Station 首页
对于这个食谱,您将需要以下配料:Linux 系统(但这已经是理所当然的了,non?)、Apache Web 服务器、Perl、PostgreSQL 和最新的 Grand Salmar Station 源代码。
Grand Salmar Station 完全用 Perl 编写,并使用 PostgreSQL 作为其数据库。您可能还记得以前来我们餐厅时见过的 PostgreSQL。我们的菜单曾推出过基于这个优秀数据库的应用程序,因此您可能已经非常熟悉它了。您甚至可能已经将其作为日常流程的一部分运行。如果您没有,我将给您做一个简单的介绍。对于其他人,在您等待的时候,我可以推荐一点布里干酪吗?您会在稍后找到内联网的烹饪说明。
PostgreSQL 是一个高级多用户关系数据库管理系统 (RDBMS),与其源代码一起免费分发。PostgreSQL 最初于 1985 年编写,并由全球许多开发人员共同开发,它速度快、功能强大、支持大多数(如果不是全部)SQL 标准,最重要的是,它是免费的。您可能甚至不必去寻找 PostgreSQL,因为它通常作为大多数主要 Linux 发行版的一部分打包。在您的发行版 CD 上查找,它可能已经在那里了。事实上,在某些系统上,PostgreSQL 是默认安装的一部分,使其更加容易。
在 Chez Marcel,我们喜欢用开源软件烹饪,non?我们喜欢从源代码开始工作。因此,对于这个食谱,我们将用最新鲜的配料构建 PostgreSQL。最新版本可通过访问网站 https://postgresql.ac.cn/ 获取,或者正如我刚才提到的,只需从您自己的发行版 CD 中获取即可。
下载最新的软件包后,我将其解压缩到一个临时位置,将目录更改为源代码目录并进行编译。以下是步骤
tar -xzvf postgresql-7.0.3.tar.gz cd postgresql-7.0.3/src ./configure make make install
发行版目录(在本例中为 postgresql-7.0.3)有一个不错的 INSTALL 文件,您可能想花点时间阅读一下,因为其中有一些与 configure 脚本相关的选项,您可能会觉得有用。例如,默认情况下,PostgreSQL 将安装在 /usr/local/pgsql 目录中,您可能会觉得这个位置不太合适。口味各异。
编译完成后,PostgreSQL 必须知道如何找到其库。您可以随时修改您的环境变量,将 /usr/local/pgsql/lib 包含在 LD_LIBRARY_PATH 中,但更简单的方法可能是将路径添加到 /etc/ld.so.conf 文件中。这是一个文本文件,用于告诉系统在哪里搜索库。因为它只是纯文本,只需将路径添加到您的库中并以 root 用户身份运行以下命令
ldconfig
如果您决定从您的 CD 安装 PostgreSQL 二进制文件,则在安装过程中将创建一个 postgres 用户。否则,创建一个 postgres 用户,其主目录为 PostgreSQL 安装目录。然后,为用户分配密码并以 postgres 身份登录。如果您和我一起构建了数据库,您将位于 /usr/local/pgsql 目录中。下一步是创建一个数据目录
mkdir data要首次初始化数据库,请使用以下命令
$ bin/initdb -D /usr/local/pgsql/data当然,那是您刚刚完成创建的数据目录,n'est-ce pas?
您会看到许多消息闪过,因为 PostgreSQL 报告了它正在做的事情。时间还不够吃一顿正餐,但也许可以吃一个蜗牛,啜饮一口葡萄酒,non?同时,将设置一些默认权限。此外,将创建一个默认数据库以及 PostgreSQL 自己的数据库 (pg_database),用于用户和其他数据库信息。然后创建几个视图,之后您应该会收到类似这样的消息
Success. You can now start the database server using: /usr/bin/postmaster -D /var/lib/pgsql or /usr/bin/pg_ctl -D /var/lib/pgsql start
两者都可以工作,但第二个是更好的选择,因为它会将进程启动到后台为您运行。您还需要将其添加到您的启动项中,以便在系统启动时运行。
现在,是时候创建一些可以访问您的数据库的用户了。如果您以 root 用户身份安装(为了访问 Perl 目录、CGI 目录等),则必须添加 root 用户,以及用户“nobody”。这通常是您的 httpd 服务器运行的用户。有些人有一个名为“www”的用户来运行 Web 服务。我将使用“nobody”作为我的用户,您可以根据您的服务器配置使用任何用户。首先以您的 postgres 用户身份登录,并执行以下命令将用户“root”和“nobody”添加到您的 PostgreSQL 系统
$ createuser root
系统将提示您输入 root 的 UID(接受默认值),以及是否允许 root 用户创建数据库。回答“y”。当被问及是否允许 root 用户创建用户时,我再次回答“y”。现在,对用户 nobody 执行相同的操作。唯一的区别是我对是否允许 nobody 创建数据库的问题回答“n”。根据您使用的 PostgreSQL 版本,关于是否允许用户创建其他用户的问题可能会这样措辞
Is user whoever a superuser?答案仍然是“n”或“no”。
现在,进入 Perl 部分。为了更轻松地使用 Perl 进行数据库访问编程,开发了 DBI 模块。DBI 代表数据库接口,它由一组例程组成,这些例程为 SQL 数据库提供标准钩子。DBD 是 Perl 5 与数据库系统接口的应用程序编程接口 (API)。其目的是提供一组一致的模块和调用,以便数据库访问代码具有可移植性,而无需过多麻烦。
现在,由于存在许多数据库格式(PostgreSQL、MySQL、Sybase、Oracle 等),因此在访问和与这些各种数据库通信时会存在一些差异。这就是 DBD 模块发挥作用的地方。DBD 是数据库依赖模块。它们通过简单的后缀来标识它们支持的数据库。例如,DBD-Pg 是 PostgreSQL 的 DBD 模块。同时,DBD-Informix 是 Informix 数据库的 DBD 模块。
本质上,DBI 模块对于所有各种数据库都是通用的,但 DBD 模块必须(并且是)特定于数据库的。
DBD 和 DBI 模块都可以在 CPAN FTP 站点找到,这是一个 Web 上庞大的 Perl 资源。由于这两个模块位于略有不同的目录中,我将为您提供这两个模块,首先从 DBI 模块开始。请参阅 ftp://ftp.cpan.org/CPAN/modules/by-module/DBI/。
DBD 模块可以在 CPAN 站点的 ftp://ftp.cpan.org/CPAN/modules/by-module/DBD/ 找到。在撰写本文时,最新的 DBI 版本是 DBI-1.14,而 DBD 发布版本号是 DBD-Pg-0.95。当涉及到这些模块时,尤其是如果您使用的是最新的 PostgreSQL,那么获取最新版本可能是有意义的。原因是模块会随着它们引用的数据库一起增长和发展。最新的 PostgreSQL 数据库最好由最新的 DBD-Pg 提供服务。
首先安装 DBI 模块,方法是将发行版解压缩到某个临时目录中,并按照以下步骤操作
cd /usr/local/temp_dir tar -xzvf DBI-1.14.tar.gz cd DBI-1.14 perl Makefile.PL make make test make install
要安装 DBD 模块,过程类似。请注意,现在更新版本的 DBD 模块要求您在安装发生之前设置几个环境变量。这些是 POSTGRES_LIB 和 POSTGRES_INCLUDE
export POSTGRES_LIB=/usr/local/pgsql/lib export POSTGRES_INCLUDE=/usr/local/pgsql/include现在,您可以运行安装
cd /usr/local/temp_dir tar -xzvf DBD-Pg-0.95.tar.gz cd DBD-Pg-0.95 perl Makefile.PL make make test make install
啊,la pièce de résistance。首先从 Salmar 网站 http://www.salmar.com/gss/ 下载最新版本。然后,将其解压缩到一个临时目录中。同样,它带有一个可爱的小 README 文件,您可能想仔细阅读一下。对于没有耐心的人,这就是您要做的全部工作
tar -xzvf sciintra.tar.gz cd installintra
在我们开始实际安装之前,我们必须暂停并修改一个小小的配置文件。这是一个名为 sciintra_conf.pl 的小型文本文件,您可以使用您喜欢的文本编辑器对其进行编辑。以下是您将在文件中找到的内容。
首先要做的是确保您的 Perl 可执行文件的路径是正确的。它将是 /usr/bin/perl 或 /usr/local/bin/perl。现在,向下到最后三行,填写您的 Apache 服务器的文档根目录和 cgi-bin 目录的路径。您在上面看到的是文件的默认配置。如果这符合您自己的系统配置,那么您不必更改任何内容。
现在,是时候完成我们的安装了
./install
脚本会立即执行几个健全性检查,特别是确保您已运行 PostgreSQL 并安装了 Perl。一旦满意,它会问您一个有趣的小问题
Do you also wish to install the phonebook (Y/N) ?也许是给您的电话?您能听到音乐吗,mes amis?啊,回忆。回想一下 2000 年 6 月的《Linux Journal》杂志。“Chez Marcel”的小厨房为“Linux 名人堂?”特刊推出了一本内联网电话簿。好吧,如果您安装了我们的小电话簿,那么您可以回答“N”表示否,否则,为什么不安装这个出色的小电话簿呢?然后它将从 Grand Salmar Station 内联网菜单中可用,它将非常棒,就像这款可爱的小西拉葡萄酒一样。Pardonner moi,请允许我小酌一口。啊,真棒。
接下来,系统会询问您是否要安装内联网。嗯,mes amis。这就是我们来这里的原因,non?只需回答“Y”即可。然后安装程序会调用一个 Perl 脚本来完成其余的安装。您快完成了,mes amis。还有一件事。
正如我在介绍中提到的,Grand Salmar Station 可以自动清理自身。如果您决定发布一个对日期敏感的项目,该软件可以在特定日期后自动从内联网中删除该项目。要激活此功能,请添加以下命令以使用 cron 运行
/usr/local/apache/cgi-bin/scimaint/dailyclean.pl
如果您愿意,您可以将其复制到其他位置。我们稍后将讨论管理员的安全方面。
内联网有两个不同的面孔。每个人都看到并有权访问的内容,以及一些严格供管理员查看的小项目。管理员菜单可以通过您喜欢的浏览器在 http://yourmachine_name/scimaint/admin/ 访问。
从这里,您可以设置各种配置参数。第一个选项允许您创建、修改或删除帖子类别。您将在菜单上看到“更新类别”。帖子类别标题是您的用户在查看内联网的公共界面时将看到的内容。默认类别是“新闻”,但您可以将其设置为文档。新闻项目将显示在用户菜单的“所有新闻”下,而文档将显示在“所有文档”下。两者都将短暂地出现在“最新消息”菜单中,但您可以在此时决定覆盖该默认设置。
您还可以定义允许谁在此处发布内容。您的选择是在仅允许管理员还是将其设为公共类别并让每个人都参与。请查看图 2,了解您的厨师创建的特殊类别。
您此时的另一个选择是是否允许互联网链接。链接可以指向互联网上任何其他站点、内部站点,或者本地网络上某处的公司文档。然后,您可以决定发布顺序:按字母顺序还是按日期顺序,升序或降序。最后,您可以指定系统是否会自动处理这些链接的过期和删除。
Grand Salmar Station 提供了许多其他选项。例如,您可以更改内联网的样式——本质上是它的外观和感觉。您会发现发行版中包含六种样式,名称很异国情调,如“海滩时光”、“铜壶”和“蓝色天空”。Mais oui,当然您可以创建自己的样式。然后,您可以将您选择的任何样式传播到整个内联网。
电话簿也可以从这里进行管理(如果您选择安装它),其他内联网默认设置(如过期日期)也可以从这里进行管理。探索。享受。并且,bien sur,请务必阅读随附的文档,也可以从管理员菜单中获得。
如果您想了解用户将看到的内容,请使用 http://yourmachine_name/scimaint/admin/demoreset.html 生成演示数据库以及一些示例条目。Ah, oui。用户——他们有自己的内联网路径:http://yourmachine_name/sciintranet/。
请查看图 3,了解他们的“最新消息”屏幕的预览。
Mon Dieu, mes amis。已经很晚了,non?François,请在我们的客人离开之前为他们续杯葡萄酒!我希望,mes amis,您会喜欢使用我们的内联网。Sally 和我为此感到非常自豪,我们希望您也会觉得它很有用。与此同时,我必须感谢您今晚的到来。喝完你们的酒,放松一下,并确保下次在 Chez Marcel 与我们相聚。您的餐桌将永远为您等候。
A votre santé! Bon appétit!
