`
sealbird
  • 浏览: 583923 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Linux环境中的Mod_perl编程介绍

    博客分类:
  • perl
阅读更多
您正在浏览的Linux|Unix是Linux环境中的Mod_perl编程介绍
1. 介绍性指南
mod_perl 是个庞大而复杂的工具,它内建了许多模块帮助你方便地构建动态网站。这篇指南的目的是帮助你构建一个良好的 mod_perl 模块,并从中理解 mod_perl 的实现技术。我并不推荐使用这里介绍的技术来建立一个大型站点,尤其对于一个刚刚涉足 mod_perl 的人来说。但我推荐大家可以深入看一下它的一些内建的方案,比如 Mason, AxKit, EmbPerl, Apache::ASP 和 PageKit 等等。

1.1. 你需要什么?
本指南假设你已经有过安装和测试 mod_perl 的经验。以及较新版本的 Apache 的安装经验。因为有可能你需要在你的机器上实现时适当的修改本文提供的配置。我们需要你安装一些模块并且需要进入 Apache 的配置目录作修改。所以最好你有 root 权限来做这些事情。当然你还需要一个文本编辑器。

1.2. 切入正题
mod_perl 模块也是 Perl 模块,但它有较为特别的设计。最方便的创建一个 Perl 模块的方法就是使用标准的 Perl 分发自带的工具 h2xs 。你可以在命令行模式键入 h2xs 来看看它的参数列表。现在,到一个适当的目录开始一个新项目,键入:

h2xs -A -X -n Apache::Tutorial::First

h2xs 将会创建目录 Apache, 以及其他一些子目录.现在进入最深一级的目录看看:

cd Apache/Tutorial/First

在这个新目录里面,你可以看到 5 个文件: Changes, First.pm, MANIFEST, Makefile.PL 和 test.pl。它们的作用如下:

Changes

这个文件作为你的项目的修改日志(changelog)文件

First.pm

这是主模块文件,包含你的 mod_perl 句柄代码(handler code)。

MANIFEST

本文件用于自动构建 tar.gz 类型的模块版本分发。这样你就可以把你的模块拿到 CPAN 发布或者分发给其他人。它包含了你在这个项目中所有文件的列表。

Makefile.PL

这是标准的 Perl Makefile 构造器。用于创建 Makefile.PL 文件来编译该模块。

test.pl

针对该模块的一些测试脚本。默认情况下它只是检查模块的编译和载入

好了,现在我们开始把 First.pm 变为可工作的 mod_perl 模块。使用文本编辑器打开该文件,修改后的内容如下:

package Apache::Tutorial::First;

use strict;

use vars qw/$VERSION/;

use Apache::Constants;

$VERSION = 0.01;

sub handler {

my $r = shift;

$r->send_http_header('text/html');

print "<html><body>Hello World</body></html>";


return OK;

}

1;

不要忘记文件末尾的"1;",对于 Perl 来说,一个模块最后返回的非零值表示该模块已经被成功编译。

1.3. 安装你的模块
h2xs 工具使我们的模块安装工作极为方便。在和你的 First.pm 文件相同的目录中。、,键入:

perl Makefile.PL

make

make test

如果 make test 成功的话,你需要以 root 身份执行:

make install

这样你就把你的模块安装到了 perl 的库目录(library directory)。

1.4. 添加该模块为 Apache 的一个句柄(handler)现在我们需要进入 Apache 配置目录来修改配置文件,使我们的模块作为 Apache 内容处理阶段的处理器。打开 httpd.conf 文件,在末尾加入如下配置:

<Location /mod_perl_tutorial>

SetHandler perl-script

PerlHandler Apache::Tutorial::First

</Location>

然后保存配置文件,并且重新启动 apache 服务器:

apachectl stop

apachectl start

现在使用浏览器访问 http://localhost/mod_perl_tutorial ,你将如期的看到显示 "Hello World" 页面。

2. 这里都发生了些什么? 好,在这里都发生了什么事情呢?

当 Apache 启动的时候,它读取它的配置指令并把适当的命令传递给相应的处理该命令的模块。这里有两个相关的指令 SetHandler 和 PerlHandler.

第一个指令 SetHandler 由 mod_mime 模块处理,该指令表示使用什么模块作为处理请求的主要部分。这里所设置的 perl-script 表示使用 mod_perl 来处理请求。

第二个指令 PerlHandler 由 mod_perl 模块来处理,它只是简单的说明使用我们的模块来处理请求的主要部分。有一点需要注意,无论何时在你有一个 PerlHandler 时,你需要相应的 SetHandler perl-script 配置指令。这样才能使你的 mod_perl 代码起作用。我总是认为这是一个弱点,但这将涉及 Apache 内部的处理机制,所以在将来这也很难改变。

现在请求来了,Apache 查看用什么模块来处理相应的 URI 并且在这里决定使用 mod_perl,而 mod_perl 知道它必须把请求发送给我们的模块,并调用我们模块的 handler() 函数作为 Apache::Request 对象的第一个参数。而我们的 handler() 函数的返回值决定了下一步 Apache 将要做什么。现在我们知道返回值 OK 意味着一切成功。 OK 是个从 Apache::Constants 模块导出的常量。

3. 调试
如果你没有看到 "Hello World", 那你可能看到了一个错误页面,或者其他什么完全不同的。第一步去查看错误日志看看到底是什么发生了错误。我习惯于在浏览器中请求后立即查看错误日志。你可以使用 tail 工具:


tail -f /path/to/apache/logs/error_log

(使用你的真实 error_log 路径替换上面的路径。如果你不肯定它在哪里,查看你的 httpd.conf 文件的 ErrorLog 指令部分)

现在重新载入页面,然后 error_log 将告诉你什么地方出现了问题。更多的关于 perl 调试,请参见 perldebug.

4. 加入更多
现在如果你想要针对上面的情况作一些修改,该如何做呢?不幸的,唯一一种安装模式如下:

修改你的 First.pm 文件

重新以 root 身份运行 make install

重新启动 Apache

这也许很麻烦,特别是重新启动 Apache。针对这个问题,我们可以另外安装一个特别设计的模块来避免每次这样麻烦的做。首先你需要从 CPAN 下载并安装 Apache::Reload 模块(除非你已经使用 mod_perl 1.26 或者更高版本)。在这里 http://search.cpan.org/search?dist=Apache-Reload 下载。

解开 tar.gz 文件并进入新目录,执行:

perl Makefile.PL

make

然后到 root 身份执行:

make install

现在再次打开 httpd.conf 文件,加入:

PerlInitHandler Apache::Reload

这将测试所有有所改变的模块并在必要时自动重新载入新模块。这对于开发来说很有用,但会有性能损失,所以在开发完成之后,就将该特性关闭。
分享到:
评论

相关推荐

    mod-perl developers cookbook

    通过这本书,读者可以轻松地自学如何在Apache环境中使用mod_perl进行高效开发。 #### 标签:mod_perl perl - **关键词解释**: - **mod_perl**:一个使Perl脚本能够以模块的形式嵌入到Apache Web服务器中的工具,...

    perl语言编程和perl语言入门

    这本教程可能详细解释了Perl中的数据类型,如标量、数组、哈希以及引用,这些都是Perl编程的基础。此外,它可能还讨论了文件和目录操作,这是在Unix/Linux环境下常见的任务。高级主题如Perl的编译器工具如PerlCC,...

    Perl编程思想

    ### Perl编程思想 #### CGI技术 **1.1 什么是CGI?** CGI(Common Gateway Interface)是一种标准,它定义了Web服务器程序与信息服务器(通常为HTTP服务器)之间如何进行通信。通过CGI,Web服务器能够执行外部...

    Mod_python_3.2.8中文手册.doc

    《Mod_python 3.2.8 中文手册》是一份详细介绍如何使用 Mod_python 将 Python 语言集成到 Apache 服务器中的技术文档。该手册的主要目标是提升 Web 应用的性能,提供更好的可移植性和历史背景。 1. 性能优势: Mod...

    CGI_doc.rar_CGI编程_doc

    在本压缩包中,"CGI_doc.rar_CGI编程_doc",包含了一份关于CGI编程的详细文档,特别是针对Unix环境下的开发实践和网络编程技术。 CGI编程的核心在于,当用户通过浏览器发送请求到Web服务器时,服务器会启动一个CGI...

    mod_python-3.2.x.rar 3.2全集 含win32 linux各版本

    这个压缩包"mod_python-3.2.x.rar"包含了不同版本的mod_python,适用于Windows(win32)和Linux操作系统,支持Python 2.2、2.3和2.4版本。 **Apache HTTP Server** Apache HTTP Server是全球最广泛使用的开源Web...

    ASP_ACCESS_SQL_Injection_Test.rar_asp access注入_linux_sql注入_注入_注入

    虽然ASP通常与Windows环境关联,但通过适当的软件栈,如Apache和mod_perl,也可以在Linux上运行ASP应用。因此,这个测试工具可能也适用于检测在Linux环境下运行的ASP应用的SQL注入漏洞。 在进行SQL注入测试时,安全...

    perl-5.14.1.tar.gz

    Perl是高级的、通用的、解释型的、动态的编程语言,它的全称是 Practical Extraction and Reporting Language。Perl 5.14.1 是 Perl 的一个...理解这些概念和步骤对于在Linux环境中进行Perl开发和系统管理至关重要。

    ule_13_httpd.rar_Linux/Unix编程_Unix_Linux_

    在“ule_13_httpd.txt”文件中,很可能是详细介绍了如何在Linux环境中安装、配置和管理Apache服务器。 1. **安装Apache**:在大多数Linux发行版中,可以通过包管理器(如apt-get for Debian/Ubuntu或yum for CentOS...

    如何在RedHat下的Apache 2.2中启用Perl?

    在Red Hat Linux操作系统中配置Apache 2.2以支持Perl是一项常见的任务,这对于那些需要在Web服务器上运行Perl脚本的开发者来说至关重要。Perl是一种功能强大的脚本语言,广泛用于系统管理、网络编程以及Web开发等...

    Linux_cgi-app_WebServer.tar.gz_Linux/Unix编程_Unix_Linux_

    在IT行业中,Linux和Unix操作系统是服务器端编程和系统管理的重要平台。CGI(Common Gateway Interface)应用程序则是这些操作系统上构建动态Web服务的关键技术之一。本文将深入探讨Linux下的CGI应用以及与Web服务器...

    CGI.rar_Linux cgi_Théa_appweb

    对于初学者来说,理解Linux环境下的CGI编程是一项挑战,但也是提升Web开发技能的重要步骤。"CGI.doc"文档很可能是详细的教程或指南,涵盖了从基础概念到实际配置、编程的方方面面。建议仔细阅读,结合实践,以加深...

    Linux System Poster 2001

    Apache由Apache Group创建,现由Apache Software Foundation维护,除了核心的Apache服务器项目外,还有针对Perl、JavaServer Pages和XML的项目,如mod_perl、mod_jk和PHP,用于在Apache服务器上生成动态内容。...

    Linux环境下的Apache服务器httpd-2.2.20.tar.gz

    总之,`httpd-2.2.20`代表了Linux环境中经典的Apache服务器部署,它的安装和管理涉及了Linux系统管理、网络服务配置和Web应用开发等多个IT领域的知识。虽然现在有更多现代的Web服务器选择,但Apache的历史地位和广泛...

    Installation-of-Apache.rar_Linux/Unix编程_WORD_

    在Linux/Unix环境中进行Apache的安装和配置是IT专业人员必备的技能。通过熟练掌握这一过程,你可以为个人项目或企业级部署搭建强大的Web服务器。而“Installation of Apache.doc”文档很可能是对这一过程的详细步骤...

    linux 下lampp配置

    总的来说,配置Linux下的LAMPP环境是一个涉及多个步骤的过程,需要了解各个组件的特性和配置选项,以构建一个稳定、安全且高效的Web开发环境。随着技术的发展,确保定期更新和维护这些组件是非常重要的。

    apache 相关工具模块

    通过链接(由于当前无法访问,只能根据一般情况推断)可能会讨论Perl语言在Apache环境中的应用,尤其是在正则表达式方面的使用。Perl正则表达式是一种强大的文本处理工具,常用于处理HTTP请求、解析日志文件、动态...

    一种面向中小型企业的WebMIS架构方案

    4. **编程语言**: 采用CGI/Perl进行动态网页开发,Perl具有优秀的字符串处理能力,且与Apache和MySQL集成良好,适合处理用户提交的数据和生成动态网页。 【系统体系结构】 系统采用B/S(Browser/Server)架构,...

Global site tag (gtag.js) - Google Analytics