不错的mod_perl编程的简单应用实例介绍

2019-10-01 14:50:05王振洲

  $r->send_http_header('text/html');
  print 
  "<html><body>Hello World</body></html>";
  return OK;
}
1;
不要忘记文件末尾的”1;”,对于Perl来说,一个模块最后返回的非零值表示该模块已经被成功编译。 
安装你的模块 
h2xs 工具使我们的模块安装工作极为方便。在和你的 First.pm 文件相同的目录中。键入: 
perl Makefile.PL
make
make test如果 make test 成功的话,你需要以 root 身份执行: 
make install这样你就把你的模块安装到了 perl 的库目录(library directory)。 
添加该模块为 Apache 的一个句柄(handler) 
现在我们需要进入 Apache 配置目录来修改配置文件,使我们的模块作为 Apache 内容处理阶段的处理器。打开 httpd.conf 文件,在末尾加入如下配置: 
<Location /mod_perl_tutorial>
  SetHandler perl-script
  PerlHandler Apache::Tutorial::First
然后保存配置文件,并且重新启动 apache 服务器: 
apachectl stop 
apachectl start现在使用浏览器访问http://localhost/mod_perl_tutorial,你将如期的看到显示 “Hello World” 页面。 
当 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 模块导出的常量。
调试 
如果你没有看到 “Hello World”, 那你可能看到了一个错误页面,或者其他什么完全不同的。第一步去查看错误日志看看到底是什么发生了错误。我习惯于在浏览器中请求后立即查看错误日志。你可以使用 tail 工具:tail -f /path/to/apache/logs/error_log(使用你的真实 error_log 路径替换上面的路径。如果你不肯定它在哪里,查看你的 httpd.conf 文件的 ErrorLog 指令部分)