您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

在Apache服务器上运行mod_perl

添加时间:2011-2-25  添加: admin 

现在网上已经有大量的关于成功运行mod_perl模块的介绍, 该模块可以让Perl程序员更
好地控制 Apache服务器。一旦Apache服务器中内置了mod_perl的Perl解释器, Perl脚
本就可以快速执行,使得你的网页的访问者无需等待。

如果你打算扩展Apache Web server的功能,你可以试试mod_perl模块的威力。模块是个集成到一起的程序集合,可以让网络开发者扩展其服务器的功能,而无需修改服务器软件自身。一旦有了模块,你就可以增强服务器的功能,例如在指定的时间段内,可以重定向URL,或者也可以对你的服务器进行优化,以便让Perl脚本运行得更快。
现已经有大量功能强大的mod_perl模块的例子, 该模块可以让Perl程序员更好地控制其
Apache服务器。Apache服务器中内置了mod_perl的Perl解释器, 使得Perl脚本可以快
速执行,你的网页的访问者就无需等待。
我将介绍两个关于安装模块的例子,其中第二个例子将介绍mod_perl模块。一旦你了
解了这个过程,你就可以为Apache网络服务器配置其它各种不同的模块。请看
Apache Module Registry,了解一下可以下载哪些增强的功能。

模块入门

扩展使用模块的Apache是相当方便的, 只要下载打算要用的模块。要了解如何
安装和使用模块,我用如下一个简单的例子来阐明:当服务器接收到一个给定页面
的请求时,服务器返回"Hello World"。

假设你已经完成如下工作:在Apache安装时,已经带有了编译过的 mod_so模块,如果
已经完成该步,就可以添加新模块到Apache中,而无须再编译。为了判断是否已经安装
编译过的 mod_so模块,可以运行/httpd -l , 看看是否有mod_so。 如果没有,
请阅读Dynamic Shared Object的中有关技术资料,重新配制你的服务器,以便包含mod_so。

要运行Hello World模块, 先要下载mod_hello_world.c 文件,该.c文件是用来编译
成.so文件的,你要使用apxs命令来进行编译,可以把编译后的文件保存在任何地方,
你可以执行类似如下的命令:
apxs -c -o mod_babble.so mod_babble.c

为了让Hello World模块能够在你的服务器上运行,就要编译mod_hello_world,之
后,就会创建一个名为mod_hello_world.so的文件,把该文件复制到Apache的libexec目
录中,此时,我们已经完成了一半的任务,我们现在只要修改conf目录中的httpd.conf
文件:打开httpd.conf文件,找到LoadModule 行,在该部分的最后一行后面,添加如下行:

LoadModule hello_world_module libexec/mod_hello_world.so

如果你有ClearModuleList,在你的配置文件中就会有AddModule部分,(如果你
没有ClearModuleList,你可以跳过此步)在AddModule部分的末尾,添加如下行:

AddModule mod_hello_world.c

最后,在配置文件的AddModule部分后面的任何一处,添加如下内容:

<Location /hello>
SetHandler hello_world
</Location>

该行告诉Apache,任何对名为"/hello"的页面的请求,将会被转到
hello_world模块,现在,重新启动网络服务器,发出请求: http://localhost/hello.

你将在你的浏览器中看到"Hello World!" 。

选择合适的模块

我们现在遇到的最大问题是:在构造模块时,只用到C语言编写的模块, 为了让这
些程序能够在特定的服务器上运行,这些源程序在编译时还必须带上正确的编译开关。
在每次安装Apache时,都必须重新编译这些源程序。要了解使用哪些编译开关的问题,
可以通过运行Apache附带的apxs脚本来获得,但是每次在新的服务器上运行时,都得重
新编译该模块,重新编译始终是个问题。

有个模块可以解决这些问题,而且该模块还带有更多其他的功能,这就是mod_perl模块,
其功能很强大,本文只能为大家作一些该模块的简单介绍。

为什么使用mod_perl?

mod_perl 模块的提供的一个特色是:可以用Perl语言来编写Apache 模块,Perl 是
解释性语言,其优缺点并存。解释性语言的一个主要优点是:每次安装服务器时,不必重新
编译这个模块。缺点是需要一个解释器来阅读和执行实际的程序,这会降低服务器的运行速度,
通过在启动Apache服务器的同时,启动Perl解释器,这样mod_perl就克服了运行速度减慢的问题。
Perl解释器还可以对服务器上的Perl代码进行预先解释,并可以随时捕捉到它,以便一旦
要用到该段代码时,能够快速执行。

使用mod_perl
mod_perl可以从mod_perl中下载得到 。对于mod_perl的安装和编译的介绍,超出了本文的篇幅,
在网上和mod_perl模块中就提供了不少技术参考资料。为了向大家演示Perl模块的使用,
我下载并复制了Hello.pm,这是个用Perl语言写的Hello World模块。你可以在Perl 5 Module List中找到更多的Perl模块。

现在,我们需要设置Apache服务器,以便它可以找到我们希望使用的模块。一开始,
要使用mod_perl,我们需要创建一个名为startup.pl 的文件,该文件将为mod_perl所使用,
将会告诉mod_perl所有已安装程序的位置。我们将创建一个最小的startup.pl 文件,可以
用它来访问要运行的Hello World模块,要使得其他模块来说,也能够正常工作,就需要
修改startup.pl 文件。在你的startup.pl 文件中,应包含如下内容:

# Always a good thing to put at the top of every mod_perl . This will
# save many headaches as you work.
use strict;

# Tell mod_perl where to find Hello.pm module
use lib qw(path/to/module)

# The name of the module to load using mod_perl
use Apache::Hello;

# This must return TRUE, and this line accomplishes that, and conveniently
# also checks to ensure that we are actually running mod_perl with our version
# of Apache.

$ENV{MOD_PERL} or die "not running under mod_perl!";


下一步,要使得Hello World模块可以运行,就要对Apache服务器进行配置,以便
使用 mod_perl。在前面的例子中,我们使用了http://localhost/hello作为
访问用C语言编写的模块的请求。 对于Perl模块,我们使用hello_perl。要设置得正确,
就需要编辑httpd.conf 文件。在AddModule行后面的某处添加如下内容:





PerlRequire /path/to/startup.pl.

<Location /hello_perl>.
SetHandler perl-.
PerlHandler Apache::Hello.
</Location> .

PerlRequire行告诉mod_perl到何处去寻找我们先前已经创建的startup.pl文件。
标记为Location 的一节将告诉Apache服务器,对/hello_perl的请求应该用一个特殊
的方式进行处理。在该节里,存在两个指示语:SetHandler和PerlHandler。
SetHandler指示语将告诉Apache,把所有的访问请求发送到mod_perl,之后PerlHandler
就指示mod_perl应该把这些请求转发到Hello World的Perl模块。

仅剩下最后一个步骤了:把Hello.pm文件复制到适当的位置。一旦创建了startup.pl文件,
我们就规定好了Hello.pm模块的位置。我们需要在那个位置创建一个目录,把Hello.pm文件
复制到该Apache目录中,所以,如果要在startup.pl 文件中把path/to/module设置
为/usr/local/apache/perl/modules,就可以执行如下命令:

mkdir /usr/local/apache/perl/modules/Apache
cp Hello.pm
/usr/local/apache/perl/modules/Apache

这就把Hello World模块放到Apache名称空间中,确保没有其他的Perl脚本同它冲突。
此时, Apache和mod_perl都已经设置好,可以运行Hello World了。我们可以重启动服务器。

关键字:Apache 服务器 运行 mod_perl

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站