分享
 
 
 

在Apache服务器上运行mod_perl

王朝perl·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

现在网上已经有大量的关于成功运行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 script. 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 script 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-script.

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了。我们可以重启动服务器。

一旦服务器重启动之后,在你的浏览器位置栏打入 http://localhost/hello_perl,你可以看到如下信息:

Hello, I see you see me with Lynx/2.8.3dev.8 libwww-FM/2.14

本文介绍了如何添加外部模块到现有的Apache服务器中, 在网上,除了用C语言

和Perl语言编写的模块之外,也有一些用 Python 语言写的模块可供你下载,并配置到Apache服务器中,

本文也介绍如何自己编写模块,并配置到Apache服务器中的资料。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有