摘要:文章记录了我初学perl 时的一些内容,如:如何安装perl、配置apache 让perl以cgi 方式运行、以及如何安装mod_perl等等——所以本文只适合perl 的初学者:-)
perl is so popular that almost all platform has it's perl distribution.如果你有兴趣、勇气以及经验的话,你可以下载Perl Source Code 并自己编译perl;如果你象我一样懒得动手的话则可以到ActiveState下载已经打包好的二进制版本的ActivePerl来安装。
我下载的是5.8.0版本的ActivePerl,你在看到这篇文章的时候可能已经有了更高版本的distribution 了。
ActivePerl(5.8.0)中包含以下模块:
建议你象我一样把perl 安装到d:\usr\local\perl 目录下。安装完之后在d:\usr\local 目录下为perl创建一个快捷方式perl-5.8.0——为的是方便以后升级;拷贝bin目录下的perl.exe 到d:\usr\bin 目录下;设置如下环境变量:
注:建议大家尽量把apache、php、perl、jdk 之类的工具安装到"$:\usr\local\"目录下(仿照unix/bsd/linux 的目录结构,并为自己创建home 目录,如"$:\home\lhelper\"),而不是象大部分书籍中所写的"c:\"——要知道windows 也是可以识别 "/home/lhelper/workspace/" 之类的目录的。另建议不要把"$"设置为"c",设置为"d" 应该是个比较不错的选择——这样当你不得不重新安装windows 操作系统的时候只要把环境变量备份一下,"c:\" 你可以随便处理,这些工具并不需要备份,系统重装之后把环境变量重新设置一下就可以投入使用了。
到dos/命令提示符下执行"perl -v" 验证一下环境变量的设置是否正确:
D:\>perl -v
This is perl, v5.8.0 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2002, Larry Wall
......
perl 是被用于开发cgi 程序的主要语言之一,借助apache 的mod_cgi 模块,经过简单设置就可以让你的perl 程序以cgi 方式运行了——当然如果你的工作是webmaster 的话,那么前面一句话也许并不适合你;另外如果你想提高perl 的运行效率那你就需要mod_perl 的支持了。
要apache 允许cgi 程序的执行有多种方法:
出于安全方面的原因,系统管理员有时会把cgi 的执行权限限制到某个目录下,即通过ScriptAlias 进行限制,如:
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
有时候很难把所有的cgi 程序都汇总到一个目录下,这时可以借助Options 和 AddHandler 来对更高一级目录来进行设置,使apache 可以选择性的执行目录下的cgi 程序,如:
......
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
......
<Directory /home/lhelper/public_html>
Options Indexes ExecCGI
AllowOverride None
</Directory>
......
AddModule mod_cgi.c
......
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
......
NameVirtualHost 192.168.0.87
<VirtualHost 192.168.0.87:80>
ServerName home.lhelper.org
DocumentRoot /home/lhelper/public_html
ErrorLog /home/apache/logs/home.lhelper.org-error.log
CustomLog /home/apache/logs/home.lhelper.org-access.log combined
<IfModule mod_cgi.c>
ScriptLog logs/script.log
ScriptLogLength 10385760
ScriptLogBuffer 1024
</IfModule>
<Directory />
Options Indexes ExecCGI
AllowOverride None
</Directory>
</VirtualHost>