Archivo

Archivo del autor

mod_perl en el Apache de MacOSX

martes, 15 de junio de 2010 Comentarios desactivados

He estado varios dias tratando de poder arrancar un despliegue de PAPI similar al que tenemos en el GPoA SIR en mi Mac con el objetivo de poder depurar nuevas caracteristicas del protocolo (del que ya haremos un post mas adelante). La cuestion era que no habia manera de que el mod_perl que viene con el sistema fuera capaz de arrancar dentro del Apache2 que tambien forma parte del MacOSX estandar.

Al final he encontrado que el bundle de Apache2 contiene un ejecutable de 64 bits:

file /usr/sbin/httpd
/usr/sbin/httpd: Mach-O universal binary with 4 architectures
/usr/sbin/httpd (for architecture ppc7400):	Mach-O executable ppc
/usr/sbin/httpd (for architecture ppc64):	Mach-O 64-bit executable ppc64
/usr/sbin/httpd (for architecture i386):	Mach-O executable i386
/usr/sbin/httpd (for architecture x86_64):	Mach-O 64-bit executable x86_64

Mientras que el bundle de Perl solo contiene un ejecutable de 32 bits:

file /usr/bin/perl
/usr/bin/perl: Mach-O universal binary with 2 architectures
/usr/bin/perl (for architecture ppc7400):	Mach-O executable ppc
/usr/bin/perl (for architecture i386):	Mach-O executable i386

Para que el Apache2 pueda ejecutar modulos Perl es necesario arrancarlo en modo 32 bits:

sudo arch -arch i386 /usr/sbin/httpd

Y para que el Apache2 arranque en modo 32 bits desde el panel de las Preferencias del Sistema hay que modificar /System/Library/LaunchDaemons/org.apache.httpd.plist para que tenga este aspecto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>org.apache.httpd</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/arch</string>
<string>-arch</string>
<string>i386</string>
<string>/usr/sbin/httpd</string>
<string>-D</string>
<string>FOREGROUND</string>
</array>
<key>SHAuthorizationRight</key>
<string>system.preferences</string>
</dict>
</plist>
Categories: PAPI Tags: