开发者社区> x3d> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用Perl编写Apache模块

简介: 前言 Apache被许多大流量网站所嫌弃,但很多企业级的场景则更为适用。   Apache httpd 从 2.0 之后,已经不仅仅局限于一个 http 的服务器,更是一个完善而强大、灵活而健壮且容易扩展的开发平台。
+关注继续查看

前言

Apache被许多大流量网站所嫌弃,但很多企业级的场景则更为适用。

 

Apache httpd 从 2.0 之后,已经不仅仅局限于一个 http 的服务器,更是一个完善而强大、灵活而健壮且容易扩展的开发平台。

开发人员通过定制 Apache 模块,可以几乎无限制的扩展 Apache httpd,使其更好的与实际应用场景匹配,而又无需考虑底层的网络传输细节。这样既可以提高开发效率,节省开发成本,又能充分利用 Apache 本身的健壮性及可靠性。

普遍意义上的理解,Apache的模块开发,分为两种途径:C、Perl。

 

Apache/Perl 集成计划, 将 Perl 程序设计语言的强大功能, 与 Apache HTTP 服务器 紧密地结合到了一起。 通过 mod_perl 模块, 可以完全使用 Perl 来撰写 Apache 模块。 此外, 服务器中嵌入的持久性解释器, 消除了由于启动外部的解释器为 Perl 脚本的启动所造成的性能损失,编码难度与普通CGI基本相同,运 行速度仅比API C略逊一些。

 

MOD_PERL技术的介绍

MOD_PERL技术将PERL解析器编译到APACHE服务器中一起等待客户端请求。


MOD_PERL技术在APACHE中一共有三种代码运行方式:


PerlRun模式:这个模式主要兼容旧式CGI程序,仅仅使用APACHE中的PERL解析器对代码进行解析不进行缓冲。
Registry模式:这个模式的Perl代码在被访问过以后会被编译成为APACHE API模块并且存储在缓冲之中,为了保证运行APACHE会选择性的产生、不只一个副本在内存中。
APACHE API模式:这个模式在APACHE启动的时候就直接将代码编译驻留在缓冲之中。

配置完Apache和Perl模块后,可以用perlinfo函数查看系统环境相关变量。下图是在虚拟机中跑出来的效果,用的是XAMPP套件的老版本。

看到这图,您有何感想?是不是觉得太像phpinfo了,不!是phpinfo太像他了。

 

编写APACHE模块代码

example.pm:

package example;

use strict;
use Apache::Request;
use Apache::Constants qw(:common);

sub handler {
  my $r = shift;
  my $req = Apache::Request->new($r);

  $req->send_http_header('text/html');
  $req->print('Hello World!');

return OK;
} 

 


在HTTPD.CONF里做以下设置:

PerlModule example;
<LocationMatch "(service)$">
        SetHandler perl-script
        PerlHandler example
</LocationMatch> 

 


这样当用户访问http://yourhost/service的时候会被这个APACHE模块处理。

 

有什么用

其实这个话题是接续上篇文章 svn代码版本管理工具的,利用mod_perl 可以编写apache模块来实现自定义的authn与authz模块,以实现符合实际情况的鉴权功能。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《零基础入门:从0到1学会 Apache Flink》下载
大数据实时计算及 Apache Flink 年度Flink 年度学习资料大礼包,300+页实战应用精华总结!
12 0
为什么要学习 Apache Flink| 学习笔记
快速学习为什么要学习 Apache Flink。
35 0
《零基础入门:从0到1学会 Apache Flink》电子版下载
大数据实时计算及 Apache Flink 年度Flink 年度学习资料大礼包,300+页实战应用精华总结!
23 0
Apache Flink 是一个框架和分布式处理引擎
Apache Flink 是一个框架和分布式处理引擎
28 0
Apache Flink ML 2.1.0 发布公告
Apache Flink 社区很荣幸地宣布 Apache Flink ML 2.1.0 版本正式发布
725 0
Apache Flink 不止于计算,数仓架构或兴起新一轮变革
在大数据实时化转型大趋势之下,Flink 不只能做一件事情。
727 0
Apache Flink 进阶(三):Checkpoint 原理解析与应用实践
大家好,今天我将跟大家分享一下 Flink 里面的 Checkpoint,共分为四个部分。首先讲一下 Checkpoint 与 state 的关系,然后介绍什么是 state,第三部分介绍如何在 Flink 中使用state,第四部分则介绍 Checkpoint 的执行机制。
8722 0
Apache Flink 在同程艺龙实时计算平台的研发与应用实践
本文主要介绍 Apache Flink 在同程艺龙的应用实践,从当前同程艺龙实时计算平台现状、建设过程、易用性提升、稳定性优化四方面分享了同城艺龙实时计算平台的建设经验,供大家参考。
2798 0
Apache Flink 进阶(一):Runtime 核心机制剖析
Flink 的整体架构如图 1 所示。Flink 是可以运行在多种不同的环境中的,例如,它可以通过单进程多线程的方式直接运行,从而提供调试的能力。它也可以运行在 Yarn 或者 K8S 这种资源管理系统上面,也可以在各种云环境中执行。
27540 0
+关注
x3d
编程语言相关技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PPython高性能计算库--Numba
立即下载
《Apache Flink-重新定义计算》PDF下载
立即下载
Apache NiFi 1.0 in Nutshell
立即下载