这篇文章旨在拯救那些遭受*无法在 Ubuntu 上为 Perl 正确设置 Apache2 的人。 (特定于您的 Linux 机器的系统配置将在方括号中提及,例如 [this])。
不正确设置 Apache 2 的可能结果:
- 浏览器尝试下载 .pl 文件,而不是执行并给出结果。
- 禁止。
- 内部服务器错误。
如果一个人以合理的智慧遵循以下描述的步骤,他/她可以克服上述错误。
在开始这些步骤之前。转到/etc/hosts文件并添加IP地址/域名`例如:
127.0.0.1 www.BECK.com
第一步:安装apache2
第二步:安装mod_perl
第三步:配置apache2
打开sites-available/default并添加以下内容,
<Files ~ "\.(pl|cgi)$">
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
Options +ExecCGI
PerlSendHeader On
</Files>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory [path-to-store-your-website-files-like-.html-(perl-scripts-should-be-stored-in-cgi-bin] >
####(The Perl/CGI scripts can be stored out of the cgi-bin directory, but that's a story for another day. Let's concentrate on washing out the issue at hand)
####
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ [path-where-you-want-your-.pl-and-.cgi-files]
<Directory [path-where-you-want-your-.pl-and-.cgi-files]>
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .pl
Order allow,deny
allow from all
</Directory>
<Files ~ "\.(pl|cgi)$">
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
Options +ExecCGI
PerlSendHeader On
</Files>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory [path-to-store-your-website-files-like-.html-(perl-scripts-should-be-stored-in-cgi-bin] >
####(The Perl/CGI scripts can be stored out of the cgi-bin directory, but that's a story for another day. Let's concentrate on washing out the issue at hand)
####
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ [path-where-you-want-your-.pl-and-.cgi-files]
<Directory [path-where-you-want-your-.pl-and-.cgi-files]>
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .pl
Order allow,deny
allow from all
</Directory>
第四步:
将以下行添加到您的 /etc/apache2/apache2.conf 文件中。
AddHandler cgi-script .cgi .pl
<Files ~ "\.pl$">
Options +ExecCGI
</Files>
<Files ~ "\.cgi$">
Options +ExecCGI
</Files>
<IfModule mod_perl.c>
<IfModule mod_alias.c>
Alias /perl/ /home/sly/host/perl/
</IfModule>
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
</Location>
</IfModule>
<Files ~ "\.pl$">
Options +ExecCGI
</Files>
第五步:
非常重要,或者至少我猜是这样,只有在做了这一步之后,我才开始工作。
AddHandler cgi-script .cgi .pl
<Files ~ "\.pl$">
Options +ExecCGI
</Files>
<Files ~ "\.cgi$">
Options +ExecCGI
</Files>
<IfModule mod_perl.c>
<IfModule mod_alias.c>
Alias /perl/ /home/sly/host/perl/
</IfModule>
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
</Location>
</IfModule>
<Files ~ "\.pl$">
Options +ExecCGI
</Files>
第 6 步
非常重要,或者至少我猜是这样,只有在做了这一步之后,我才开始工作。
给你添加以下/etc/apache2/sites-enabled/000-default文件
<Files ~ "\.(pl|cgi)$">
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
Options +ExecCGI
PerlSendHeader On
</Files>
第 7 步:
现在将您的 Perl 脚本作为 test.pl 添加到您之前在第 3 步中提到的 [path-where-you-want-your-.pl-and-.cgi-files]。
使用chmod 授予.pl 文件的权限,然后在浏览器的地址栏中输入webaddress/cgi-bin/test.pl,就可以了。
(现在,这篇文章中的许多内容都是多余的。请忽略它。)