为什么选择mod_perl?
在这篇文章中,我将初识mod_perl,激发您尝试它的兴趣,并展示一些由启用mod_perl的Apache提供支持的知名网站的示例。
什么是mod_perl?
mod_perl是Apache/Perl集成项目的心脏,该项目将Perl编程语言的全部功能和Apache Web服务器结合在一起。
从一开始,Apache就被设计成可以通过添加“模块”来扩展。模块可以完成任何你需要的事情,例如重写HTTP请求、限制对某些页面的访问和执行数据库查询。模块通常用C语言编写,这可能很费时。mod_perl是一个模块,允许你通过使用Perl来做所有这些事情,以及更多,使开发比C语言更快。Apache是互联网上最受欢迎的Web服务器,mod_perl是扩展它的最受欢迎的模块之一。
为什么mod_perl如此受欢迎?
如果你喜欢Perl,而你最喜欢的Web服务器是Apache,那么你第一眼就会喜欢mod_perl。一旦你尝试了它的实际应用,你就不会回头看了——你会发现mod_perl有你需要的一切。但即使你发现有些东西缺失,也请提出。在你数到三之前,有人会为你做出它。当然,这将使你想要回报。最终,你将贡献一些自己的东西,这将节省大量mod_perl社区的时间,使他们可以为其他人创建更多东西。
你明白了——mod_perl赋予用户力量,用户反过来赋予mod_perl力量,mod_perl反过来赋予用户力量,用户反过来……。这就像你在学校学过的或某个时候将学到的核反应一样简单 :)
使用mod_perl,你可以完全用Perl编写Apache模块。这使得你能够轻松地做在常规CGI程序中更难或不可能做的事情,例如运行子请求、编写你的身份验证和日志处理程序。
mod_perl的主要优势是功能和速度。你完全访问Web服务器的内部工作,可以在HTTP请求处理的任何阶段进行干预。这允许对各个阶段进行定制处理;例如,URI到文件名的转换、授权、响应生成和日志记录。
在启动和编译时间上有很大的节省。将Perl解释器嵌入到服务器中可以节省为任何需要运行Perl代码的HTTP请求启动外部解释器的很大开销。至少同样重要的是代码缓存:模块和脚本仅在服务器第一次启动时加载和编译一次。然后,在服务器余生的其余时间里,脚本将从缓存中提供,因此服务器只需要运行预编译的代码。在许多情况下,这和运行编译的C程序一样快。
运行时的开销很小。特别是,在mod_perl下,不需要为每个请求启动一个单独的过程,这通常是其他Web服务器扩展的做法。最广泛使用的此类扩展机制是通用网关接口(CGI),它完全被处理请求处理响应生成阶段的Perl代码所取代。与mod_perl捆绑的两个通用模块用于此目的:Apache::Registry
,它可以透明地运行现有的未经修改的Perl CGI脚本;Apache::PerlRun
,它做类似的工作,但允许你运行在一定程度上“更脏”的脚本。
mod_perl 允许您使用 Perl 配置您的 Apache 服务器和处理器(使用 PerlSetVar
指令和 <Perl> 部分)。这使得管理拥有许多虚拟主机和复杂配置的服务器变得轻而易举。嘿,您甚至可以定义自己的配置指令!
mod_perl 的速度和稳定性如何?
许多人问,“mod_perl 能带来多少性能提升?” 好吧,这完全取决于您如何使用 mod_perl —— 以及您问的是谁。开发者报告说,速度提升从 200% 到 2000%。最好的办法是亲自尝试看看!(详见 mod_perl 媒体文章 和 成功案例 以获取事实)。
每天每秒钟,全球有成千上万的网站都在使用 mod_perl 为数以百万计的网页提供服务。Apache 和 mod_perl 是编写过的最经过测试的程序之一。当然,它们不断被开发和改进,但您不必在“发展的前沿”上工作——您可以使用稳定的产品来构建您的网站,让其他人为您测试新版本。
我想向您展示一些由 mod_perl 驱动的众多繁忙和受欢迎的网站中的几个。千言万语也无法替代亲身体验。访问这些网站,感受其中的差异。它们将让您相信 mod_perl 是无与伦比的!
- ValueClick – http://www.valueclick.com/ 每天从大约 20 台机器处理超过 7000 万次请求。每个响应都是动态的,包含各种计算、存储、记录、计数——您能想到的。他们所有的“应用”编程都是用 Perl 完成的。
- Singles Heaven – http://singlesheaven.com 是一个拥有 35,000+ 会员的 配对网站,并且还在增长。该网站由 mod_perl、DBI、
Apache::DBI
(提供 DB 连接的持久性)和 MySQL 驱动。速度极快,用 mod_perl 聊天是一种享受。每个页面由大约 10 个 SQL 查询生成,因为它在每个页面上进行许多动态检查——比如检查新邮件、被各种看门狗监视的用户等等。您不会感觉到这些查询实际上是在发生,速度就像 “Hello World” 脚本一样快。 - Internet Movie Database (Ltd) – http://www.moviedatabase.com/ - 每天处理大约 200 万次页面浏览。所有数据库查找都在 Apache 内通过 mod_perl 处理。每个请求还通过几个 mod_perl 处理器,然后使用 mod_perl SSI 即时重新格式化输出,以嵌入广告横幅并根据使用的域名提供不同的网站视图。
- CMPnet – http://www.cmpnet.com, 一个技术信息网络每天处理大约 60k 次页面浏览。
- CitySearch.com – http://www.citysearch.com/ 为全球 100 多个城市提供在线城市指南,citysearch.com 帮助人们找到和计划他们想做的事情,然后让他们采取行动,提供本地交易,例如在线购买活动门票和预订酒店和餐厅。其流量超过每月 1 亿次页面浏览。
有多少网站运行着启用 mod_perl 的 Apache 网络服务器?
根据 Netcraft(http://netcraft.com)的数据,截至 2001 年 8 月——有 1800 万个主机运行着免费的 Apache 网络服务器,这大约是所有调查中注册主机的 60%!
这是“互联网网站服务器份额”的图表。图表在此。关于mod_perl呢?https://web.archive.org/web/20020206221356/http://perl.apache.org/netcraft/ 报告称,运行mod_perl的网站占用了2,823,060个主机名和283,180个唯一的IP地址。这实际上是一个低估,因为当扫描运行Web服务器的宿主时,只检查了知名端口(80、81、8080以及一些其他端口)。如果一个服务器运行在不寻常的端口上,那么除非所有者手动将其添加到Netcraft数据库中,否则它不会进入统计范围。下面是mod_perl使用增长的图表
最新数据请参阅 https://web.archive.org/web/20020206221356/http://perl.apache.org/netcraft/。
未来之路
你可能对Apache 2.0的发布感到兴奋,这是最好的Web服务器的下一代。这个Web服务器新版本的主要新功能是线程化进程,这应该会使服务器更具可扩展性,当然,还有非常受欢迎的过滤层。
你可能对最近发布的Perl 5.6的发布也不感到少兴奋,它的主要新功能是(几乎)稳定的线程支持,这是在先前的Perl版本中就存在但相当不稳定的东西。
这一切与mod_perl有什么关系呢?mod_perl 2.0目前正在开发中,将极大地受益于Apache和Perl的新特性。最重要的改进将是进程大小的减少——解析的Perl操作码树将几乎完全在同一个进程的线程之间共享。
你相信巧合吗?Perl 5.6和Apache 2.0都在2000年3月同一周发布。这在我看来非常可疑。如果你发现了明显的阴谋,请让我知道。
当然,我们面前还有许多困难。在所有我们的应用程序都能从线程功能中受益之前,还需要时间。主要原因在于,从CPAN提供的Perl模块大多数不是线程安全的。但你不必绝望。你可以关闭不是线程安全的Perl代码的线程,或者使用不是线程安全的模块。
我想要mod_perl,我从哪里得到它?
mod_perl的家园是 http://perl.apache.org。从该网站,你可以下载最新的mod_perl软件和各种文档;找到商业产品和免费第三方模块;阅读成功故事;并了解更多关于mod_perl的信息。
订阅mod_perl列表非常重要。如果你想了解mod_perl发生了什么,如果你想了解正在开发的新功能,如果你想影响和贡献,或者如果你只是想得到帮助,那么你不想错过这个邮件列表。要订阅列表,请发送一个空邮件到 [email protected]。
有关于mod_perl的书籍和文档吗?
Lincoln Stein和Doug MacEachern编写了 用Perl和C编写Apache模块。您可以从 O’Reilly 和 Amazon.com 在线购买。你可以在mod_perl主页上找到大量关于mod_perl的文档:http://perl.apache.org/。
我喜欢mod_perl,我想知道谁编写了这个伟大的免费产品!
嗯, Doug MacEachern是应该受到责备的人 :). 他是将mod_perl带给mod_perl社区的人。他是mod_perl项目的Linus。
但是,正如您所知,在一个大型社区中,总有一群乐于助人的人,还有来自世界各地的开发者,他们修补 mod_perl,为它开发整个 Perl 模块,调试服务器并推广它。我恐怕贡献开发者的名单太长了,无法在这里一一列举。但是,欢迎您加入 mod_perl 邮件列表,看看这些人如何行动。我向您保证,您不会后悔这个展示,因为您将要学到的不仅仅关于 mod_perl 的知识。自己去看看吧。
参与其中
如果您正在使用 mod_perl 或计划使用它,那么订阅用户 mod_perl 邮件列表是个好主意。您需要发送一封空邮件到 [email protected] 来完成订阅。
如果您对参与 mod_perl 2.0 的发展感兴趣,那么欢迎您加入我们。还有很多功能需要实现,大量的测试需要进行。所以如果您是一位知识渊博的开发者,或者即使您是新手,也有很多工作要做。我们得到的帮助越多,就越快将 mod_perl 2.0 带入生产状态。您可以通过发送邮件到 [email protected] 订阅开发者的邮件列表。
如果您熟悉 mod_perl,那么您可能已经知道我维护的庞大的 mod_perl 指南,这是在许多人的帮助下完成的(http://perl.apache.org/guide/)。然而,mod_perl 2.0 有很多变化,因此已经启动了新的文档项目。欢迎您查看 http://perl.apache.org/ 网站上的更新,并通过发送邮件到 [email protected] 订阅文档邮件列表,以保持最新。
参考文献
Apache 网站的网址:http://www.apache.org/
mod_perl 网站的网址:http://perl.apache.org/
CPAN 是综合 Perl 存档网络。主站点的网址是 http://cpan.org/。 CPAN 在全球超过 100 个站点进行了镜像。(http://cpan.org/SITES.html)
标签
反馈
这篇文章有什么问题吗?请通过在 GitHub 上打开问题或拉取请求来帮助我们。