Re: mod_perl installed via yum but not used by application (RedHat 6.5 Apache 2.2.15 mod_perl 2.0.4)

André Warnier <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
BOUX Frederik wrote:
> Hello,
> 
> I am using OTRS on a RedHat 6.5 with apache2 and mod_perl2. We are using these packages (yum info feedback):
> 
> Installed Packages
> Name        : httpd
> Arch        : x86_64
> Version     : 2.2.15
> Release     : 39.el6
> 
> Name        : mod_perl
> Arch        : x86_64
> Version     : 2.0.4
> Release     : 11.el6_5
> 
> We noticed a performance difference with the Development server. I can see in htop that the apache user is spawning /usr/bin/perl processes to run all the perl scripts instead of handling them in an httpd process. So I placed the following script in the same directory as my index.pl to see if mod_perl was being used:
> 
> #!/usr/bin/perl
> print "Content-type: text/plain\n\n";
> print "Server's environment\n";
> foreach ( keys %ENV ) {
> print "$_\t$ENV{$_}\n";
> }
> 
> Dev shows these two variables that are completely missing on Sandbox:
> 
> MOD_PERL_API_VERSION 2
> MOD_PERL mod_perl/2.0.4
> 
> So I'm pretty sure mod_perl isn't being used . But as far as I can tell everything is configured:
> 
> 1) /etc/httpd/conf.d/perl.conf contains the line: LoadModule perl_module modules/mod_perl.so
> 
> 2) /etc/httpd/conf/httpd.conf contains an Include: Include conf.d/*.conf
> 
> 3) this is the default .conf from OTRS but I can't find a mistake:
> 
> # Setup environment and preload modules
> Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl
> 
> # Reload Perl modules when changed on disk
> PerlModule Apache2::Reload
> PerlInitHandler Apache2::Reload
> 
> # general mod_perl2 options
> <Location /otrs>
> #        ErrorDocument 403 /otrs/customer.pl
>     ErrorDocument 403 /otrs/index.pl
>     SetHandler  perl-script
>     PerlResponseHandler ModPerl::Registry
>     Options +ExecCGI
>     PerlOptions +ParseHeaders
>     PerlOptions +SetupEnv
> 
>     <IfModule mod_version.c>
>         <IfVersion < 2.4>
>            Order allow,deny
>            Allow from all
>         </IfVersion>
>         <IfVersion >= 2.4>
>             Require all granted
>         </IfVersion>
>     </IfModule>
>     <IfModule !mod_version.c>
>         Order allow,deny
>         Allow from all
>     </IfModule>
> </Location>
> 
> # mod_perl2 options for GenericInterface
> <Location /otrs/nph-genericinterface.pl>
>     PerlOptions -ParseHeaders
> </Location>
> 
> </IfModule>
> 
> 
> 
> And yet the module is loaded:
> 
> [user@server httpd]$ httpd -M | grep perl
> Syntax OK
> perl_module (shared)
> [user@server httpd]$ httpd -l
> Compiled in modules:
> core.c
> prefork.c
> http_core.c
> mod_so.c
> 
> 
> Anyone who can spot a mistake or who has additional steps to troubleshoot why mod_perl isn't being used?
> 

Just a little comment : when you restart your server, the first line in the error log 
should clearly show if mod_perl is included or not.

Also, if it isn't, then all the mod_perl specific configuration lines above should trigger 
an Apache error when it starts (and it would not start).
Errors such as
"PerlOptions" : unknown directive at line xxx ...

Unless your server actually starts with another configuration file set than the one you 
think..
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.