免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2866 | 回复: 2
打印 上一主题 下一主题

Win32平台Apache 2.0.52配置mod_perl的经验分享 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-03 08:59 |只看该作者 |倒序浏览
1、安装前,确保你已经安装了Perl解释器,我机器上安装了ActivePerl 5.8。可以去http://www.perl.org下载,
最终地址:
http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.4.810-MSWin32-x86.zip (ZIP包)
http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.4.810-MSWin32-x86.msi (MSI)

还有5.6版本的Perl,下载页面:
http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl

安装后,查看系统环境变量的PATH项,如果没有perl的路径,自己添加。一般是安装时自动添加的。

2、下载mod_perl源代码,Apache2需要下载1.9或者2.0的,推荐下载2.0
http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz

3、将mod_perl-2.0-current.tar.gz解压,比如H:\mod_perl-2.0-current
开始编译:
H:\mod_perl-2.0-current>;perl Makefile.pl MP_AP_PREFIX=D:\Server\Apache2

这里的D:\Server\Apache2是你安装Apache的路径。

编译时会提示
Install apxs now? [yes]
默认是yes,输入y后回车继续。
编译完成后,你应该得到mod_perl.so。
接下来在命令行执行:
H:\>;ppm install http://theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd

4、配置Apache:
修改https.conf,加入:

  1. LoadModule perl_module modules/mod_perl.so
  2. LoadFile "D:/Server/perl/bin/perl58.dll"
  3. PerlRequire "D:/Server/Apache2/conf/extra.pl"
复制代码

这里的extra.pl内容为:

  1. use Apache2 ();
  2. use ModPerl::Util ();
  3. use Apache::RequestRec ();
  4. use Apache::RequestIO ();
  5. use Apache::RequestUtil ();
  6. use Apache::ServerRec ();
  7. use Apache::ServerUtil ();
  8. use Apache::Connection ();
  9. use Apache::Log ();
  10. use Apache::Const -compile =>; ':common';
  11. use APR::Const -compile =>; ':common';
  12. use APR::Table ();
  13. use Apache::compat ();
  14. use ModPerl::Registry ();
  15. use CGI ();
  16. 1;
复制代码

httpd.conf中加入:

  1. Alias /perl/ "E:/wwwroot/perl/"
  2. <Location /perl>;
  3.      SetHandler perl-script
  4.      PerlResponseHandler ModPerl::Registry
  5.      Options +ExecCGI
  6.      PerlOptions +ParseHeaders
  7. </Location>;
复制代码

在AddHandler那里加入:

  1. AddHandler perl-script .pl .cgi
复制代码

重启Apache2。

5、设置perl虚拟目录的everyone权限,加上执行权限。
在你的虚拟目录物理路径中建议一个测试的perl脚本:
test.pl

  1.   ##  printenv -- demo CGI program which just prints its environment
  2.   ##
  3.   use strict;
  4.   print "Content-type: text/html\n\n";
  5.   print "<HTML>;<BODY>;<H3>;Environment variables</H3>;<UL>;";
  6.   foreach (sort keys %ENV) {
  7.     my $val = $ENV{$_};
  8.     $val =~ s|\n|\\n|g;
  9.     $val =~ s|"|\\"|g;
  10.     print "<LI>;$_ = \"${val}\"</LI>;\n";
  11.   }
  12.   #sleep(10);
  13.   print "</UL>;</BODY>;</HTML>;";
复制代码

通过http://localhost/test.pl访问,你应该可以看到

Environment variables
COMSPEC = "C:\WINDOWS\system32\cmd.exe"
DOCUMENT_ROOT = "E:/wwwroot/www/"
GATEWAY_INTERFACE = "CGI/1.1"
HTTP_ACCEPT = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*"
HTTP_ACCEPT_LANGUAGE = "en-us"
HTTP_CONNECTION = "Keep-Alive"
HTTP_HOST = "localhost"
HTTP_USER_AGENT = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)"
MOD_PERL = "mod_perl/1.99_17"
PATH = "D:\Server\Perl\bin\;D:\Program Design\MinGW\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\Server\JAVA\jdk1.5.0\bin;D:\Server\cvsnt"
PATHEXT = ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH"
QUERY_STRING = ""
REMOTE_ADDR = "127.0.0.1"
REMOTE_PORT = "4346"
REQUEST_METHOD = "GET"
REQUEST_URI = "/perl/hello.cgi"
SCRIPT_FILENAME = "E:/wwwroot/perl/test.pl"
SCRIPT_NAME = "/perl/test.pl"
SERVER_ADDR = "127.0.0.1"
SERVER_ADMIN = "webmaster@wwcec.net"
SERVER_NAME = "localhost"
SERVER_PORT = "80"
SERVER_PROTOCOL = "HTTP/1.0"
SERVER_SIGNATURE = "
Apache/2.0.52 (Win32) mod_perl/1.99_17 Perl/v5.8.4 PHP/5.0.2 mod_python/3.1.3 Python/2.3.4 Server at localhost Port 80
\n"
SERVER_SOFTWARE = "Apache/2.0.52 (Win32) mod_perl/1.99_17 Perl/v5.8.4 PHP/5.0.2 mod_python/3.1.3 Python/2.3.4"
SystemRoot = "C:\WINDOWS"
TEMP = "C:\WINDOWS\TEMP"
WINDIR = "C:\WINDOWS"

这是系统的一些信息。此时,你的mod_perl应该配置成功。

随便写一个脚本:
hello.pl

  1. print "Content-type:text/html";
  2. print "Hello World";
复制代码

运行后可以看到Hello World

6、注意的问题:
(1)编译的时候,会出现找不到库的错误,我没管,我的目的是得到mod_perl.so
(2)这一步不能少,否则,PerlRequire "D:/Server/Apache2/conf/extra.pl"会出错。

  1. ppm install http://theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd
复制代码

对mod_perl了解不多,不知道这么配置是否正确,欢迎批评指正。
Mail:fzj_w@yahoo.com.cn

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-11-04 18:19 |只看该作者

Win32平台Apache 2.0.52配置mod_perl的经验分享

最近終於說服老闆..讓我用mod_perl..
所以做了點研究...
你的測試用script看不出mod_perl的能力..

  1. #!/usr/bin/perl
  2. use strict;
  3. my $r = shift;
  4. $r->;send_http_header('text/plain');

  5. my %query_string=$r->;args;
  6. for(keys %query_string){
  7.   print "$_ =>; $query_string{$_}\n";
  8. }
复制代码

上面這個如果可以正成運作..那就表示沒問題了...

PS:另外我在AIX下面無法安裝libapreq-1.3....
    裝了兩天裝不起來...:<

论坛徽章:
0
3 [报告]
发表于 2004-11-04 20:10 |只看该作者

Win32平台Apache 2.0.52配置mod_perl的经验分享

好难哦!~```````
看了半天就是不懂!~````
想请大虾们能解释一下吗!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP