我试图使用KDE桌面在Linux Mint 17.2上运行mod_perl。
当我尝试执行我多年前使用的程序作为我的mod_perl测试程序时,我得到一个对话框,询问我是否要打开或保存perl文件。
我认为我的安装很接近,因为在http://localhost/server-status访问服务器状态会给我下面列出的行。
服务器版本:Apache / 2.4.7(Ubuntu)PHP / 5.5.9-1ubuntu4.14 mod_perl / 2.0.8 Perl / v5.18.2 Server MPM:prefork 服务器内置:2015年10月14日14:20:21
请注意,mod_perl包含在输出中,因此我假设模块正在加载。
来自Google搜索的大部分结果都没有关系(他们在我做apt-get时编译)或者看起来不合适(他们正在修改Apache配置文件以加载模块,而我有不同的配置文件和模块似乎已加载)。
自从我安装mod_perl系统已经有好几年了,但我知道从那时起,模块的加载和处理程序的启用都发生了变化。我的Mint 17.2系统似乎正在使用/etc/apache2/mods-available/perl.load,我相信我过去没有使用过这个文件。
我采取的与mod_perl相关的安装步骤是:
apt-get install apache2 apt-get install libapache2-mod-perl2 apt-get install libapache2-mod-perl2-dev apt-get install libapache2-mod-perl2-doc apt-get install libconfig-general-perl apt-get install libconfig-db-perl apt-get install libconfig-dbi-perl apt-get install mysql-client apt-get install mysql-server apt-get install mysql-common
我不能100%确定perl程序应该位于何处。我试过了: 在/ var / WWW 的/ var / WWW / perl的
我也不确定我的机器上是否有文档。我曾希望apt-get install libapache2-mod-perl2-doc会给我很多有用的信息。如果确实如此,我就找不到它。当我在这个软件包上进行apt-get show时,屏幕显示包括“这个软件包包含了mod_perl的附加文档,这些文档被定制为由doc-base系统索引。”我不知道这意味着什么。在试图解决这个问题大约3个小时之后,我希望能够集中解决问题,而不是分散到另一个新的探索领域。
谢谢你, 布鲁斯
编辑11-30-2015 15:54:回复"请在您的问题中编辑Apache配置的相关部分。 - ThisSuitIsBlackNot",与旧的Apache安装不同,这个系统似乎有配置分布在许多文件上。我不明白出了什么问题,所以我不知道要包括什么。
布鲁斯。
编辑12-01-2015 12:40提供的链接有很多很好的信息,但它只对那些非常了解Apache管理级别的关注和喂养的人有用。对于那些只知道如何拼写Apache并且(目前)只想让mod_perl运行的人来说,它是压倒性的并且信息丰富。
通过大量谷歌搜索,检查文件权限和所有权(www-data)我终于得到了perl文件来执行。经过大量的试验和错误,我目前在/etc/apache2/apache2.conf文件的末尾添加了以下内容:
Alias /perl/ /var/www/html/perl/
<Directory />
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /perl>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Location /perl/>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Location>
我有几个问题:
1)我不太了解Apache的内部结构,以便知道上述条目是好的,坏的还是好的和坏的混合。由于互联网帖子混合了Apache,Apache2,mod_perl,mod_perl2,好的和坏的例子,我认为我的试错文件不是最佳的。
2)从我已经很久的(2005年1月)笔记中我得到了:
If 'GATEWAY_INTERFACE = CGI/1.1' (or similar) then NOT mod_perl
If 'GATEWAY_INTERFACE = CGI-Perl/1.1' (or similar) then YES mod_perl
If mod_perl then also expect 'MOD_PERL = mod_perl/1.24 (or similar)
我的测试文件包括:
print map { "$_ = $ENV{$_}<br>\n" } sort (keys (%ENV));
执行后我在浏览器中获得的部分内容包括:
GATEWAY_INTERFACE = CGI/1.1
MOD_PERL = mod_perl/2.0.8
MOD_PERL_API_VERSION = 2
因此,我的2005年笔记和今天的输出都存在冲突。 GATEWAY_INTERFACE行似乎表明mod_perl没有运行。两条MOD_PERL行表示mod_perl正在运行。这是什么? mod_perl2正在运行吗?
3)也许我不应该包括这个,但我会。许多人不是管理员,并且希望在他们的家庭或仅限内部的办公室机器上运行mod_perl,而无需花时间成为Apache专家。为什么要找到一个好的,干净的,完全匹配的指令集来安装mod_perl&#34;标准&#34;像长期支持Mint 17.2的发行版?我不能成为第一个从下载的ISO安装Mint的非管理员,然后使用apt-get来安装mod_perl。有大量不一致的信息可用,而且目前没有知道该做什么,而忽略它的历史知识让mod_perl运行起来非常困难和耗时。