设为首页 收藏本站
查看: 703|回复: 0

[经验分享] 用Perl编写Apache模块

[复制链接]

尚未签到

发表于 2015-8-2 12:46:46 | 显示全部楼层 |阅读模式
前言
  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套件的老版本。
DSC0000.png
  看到这图,您有何感想?是不是觉得太像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;

SetHandler perl-script
PerlHandler example

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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-93325-1-1.html 上篇帖子: apache mod_rewrite uri重写 http转https 下篇帖子: Apache如何添加虚拟目录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表