Página 1 de 1

Cómo configurar mod_perl en el Apache

NotaPublicado: 2006-11-10 14:33 @648
por perlo
¿Cómo se configura el mod_perl en el Apache? ¿Alguien sabe cómo hacerlo?

NotaPublicado: 2006-11-10 15:40 @694
por explorer
Si usas Linux, y una distribución moderna, no tienes que hacer prácticamente nada, ya que la instalación de mod_perl guardará y configurará los ficheros de Apache para admitirlo.

Básicamente, los pasos, después de instalar la librería mod_perl.so o mod_perl.dll, es hacer que Apache lea un fichero de configuración (que suele estar dentro de la carpeta mods-available) en la que aparezca:

Código: Seleccionar todo
#PerlModule Apache2

PerlRequire "/etc/apache2/startup.pl"
#  PerlFreshRestart On
Alias /perl/ /var/www/perl-scripts/
<Location /perl/>
        SetHandler perl-script
        PerlResponseHandler ModPerl::Registry
#       PerlHandler ModPerl::Registry
        Options +ExecCGI +Includes
</Location>
<Location /perl-status>
        SetHandler  perl-script
        PerlHandler Apache2::Status
</Location>
PerlSetVar StatusOptionsAll On
PerlSetVar StatusTerse On
PerlSetVar StatusTerseSize On
PerlSetVar StatusTerseSizeMainSummary On

#NO HACE FALTA ESTO!!!
#PerlModule B::TerseSize
En donde

* PerlRequire sólo es necesario si queremos que se ejecute un script al principio en donde se cargarán los módulos que necesitarán el resto de scripts.
* Alias y Location indican el lugar donde colocaremos los scripts que queremos ejecutarlos bajo mod_perl. Dentro de Location está lo principal: la línea SetHandler indica que lo que está dentro de esa carpeta se debe ejecutar como un perl-script, por lo que lo hará a través de mod_perl y no como un simple CGI.
* perl-status es interesante para ver estadísticas de uso y ocupación de memoria.
* Con PerlSetVar se pueden activar algunas opciones interesantes

Consulta

NotaPublicado: 2006-11-13 06:36 @316
por perlo
Gracias por contestar, pero ahora, ¿cómo me doy cuenta de que está funcionando el mod_perl , y no el viejo?

Saludos

NotaPublicado: 2006-11-13 06:50 @326
por explorer
Si antes las URL eran del tipo
http://tudominio.net/cgi-bin/script.pl

ahora es
http://tudominio.net/perl/script.pl
Deberás cambiarlas en tus páginas web.

/perl es el camino indicado por el Alias que apunta a /var/www/perl-scripts, y /perl es también la 'Location' que ha registrado ese lugar como sitio donde ejecutar scripts Perl.

NotaPublicado: 2006-11-13 13:53 @620
por perlo
Me aparecen unos errores
Invalid command 'PerlFreshRestart', perhaps mis-spelled or defined by a module not included in the server configuration

Starting httpd:
[Mon Nov 13 15:46:57 2006] [warn] The Alias directive in /etc/httpd/conf/httpd.conf at line 622 will probably never match because it overlaps an earlier Alias

[Mon Nov 13 16:53:18 2006] [error] Can't locate Apache2.pm in @INC (@INC contains: /usr/lib/perl5/5.8.7/i386-linux /usr/lib/perl5/5.8.7 /usr/lib/perl5/site_perl/5.8.7/i386-linux /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.7/i386-linux /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.6/i386-linux /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl . /etc/httpd) at (eval 2) line 3.\n
[Mon Nov 13 16:53:18 2006] [error] Can't load Perl module Apache2 for server localhost:80, exiting...

Me falta instalar algún otro módulo en especial, ¿¿el apache2 ya lo instalé?? ¿que estoy haciendo mal, alguna cosa que no creé?? Si tienen alguna pista......yo no me doy cuenta como solucionarlo.
Gracias por vuestra ayuda,

NotaPublicado: 2006-11-13 17:05 @753
por explorer
El primer error es muy claro y te lo dice: no entiende la variable 'PerlFresRestart' porque quizás está definida en un módulo que no ha sido cargado. Eso significa que el módulo mod_perl.so no ha sido cargado por el servidor web. Deberás agregar a la configuración la opción de cargar ese módulo. En un Linux moderno se suele hacer con el programa a2enmod desde la línea de comandos y siendo root.

El segundo error dice que ya existe un Alias /perl en algún otro sitio.

El tercer error dice que no encuentra el módulo Apache2.pm en el sistema. Este módulo se usaba para ajustar la variable @INC, pero ya no es necesaria en las últimas versiones de mod_perl. Localiza el script que está ejecutando esa línea y coméntala o bórrala.