perl web-applications perlbrew public-html

¿Cómo uso perlbrew para administrar instalaciones perl dirigidas a aplicaciones web?



web-applications public-html (2)

Consulte la respuesta de brian d foy para saber por qué no debe esperar usar perlbrew para cambiar entre las versiones de mod_perl. También espero que necesite ejecutar varios servidores Apache, si necesita varias versiones diferentes de Perl bajo mod_perl.

Sin embargo, usar perlbrew como una forma fácil de construir Perl es IMHO, una acción válida, y hay pocas instrucciones disponibles sobre cómo ejecutar mod_perl bajo perlbrew.

Primero, asegúrese de que Perl se haya creado con el soporte de la biblioteca compartida, al pasar el indicador -Duseshrplib (de lo contrario, en los sistemas de 64 bits obtendrá un error de compilación confuso sobre -fPIC):

perlbrew install perl-5.16.3 -Duseshrplib

Instala las librerías de Apache de desarrollo para tu sistema. En Debian, esto difiere según el MPM de Apache que esté utilizando. Para el MPM prefork:

sudo apt-get install apache2-prefork-dev

O para el trabajador MPM:

sudo apt-get install apache2-threaded-dev

Entonces necesitas algunas opciones para construir e instalar mod_perl2 en el lugar correcto. Tenga en cuenta que esto significa que cpanm no podrá compilarlo, pero puede usarlo para controlar la fuente:

cpanm mod_perl2 # fails cd ~/.cpanm/latest-build/mod_perl-2.0.8/ # adjust mod_perl version

Ajuste la versión de Perl a continuación en consecuencia. (La opción MP_APXS es ​​proporcionar la ruta correcta para los sistemas basados ​​en Debian, que tal vez no necesite).

perl Makefile.PL MP_APXS=/usr/bin/apxs2 / MP_AP_DESTDIR=$HOME/perl5/perlbrew/perls/perl-5.16.3/ make make install

Finalmente, cambie la línea LoadModule en su archivo de configuración de Apache (ajustando las rutas en consecuencia):

LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so

Su instalación mod_perl ahora ejecutará la versión de Perl que desee. Instala todos tus módulos CPAN requeridos y ponte en marcha.

He estado usando perlbrew para administrar varias versiones de perl en una notebook Linux Fedora. Lo he usado con gran beneficio para ejecutar secuencias de comandos de línea de comandos principalmente utilizando App::cmd .

Ahora quiero pasar a la ejecución de aplicaciones web escritas usando CGI::Application utilizando diferentes perls instaladas en mi $HOME . Estoy familiarizado con la ejecución de aplicaciones web de Perl en $HOME s utilizando el user_dir de Apache o la creación de hosts virtuales, pero no puedo encontrar una forma clara de integrar esta y las perls gestionadas por perlbrew. Específicamente necesito ayuda para comprender y encontrar respuestas a estas preguntas:

  1. ¿Cómo instalar mod_perl bajo perlbrew?
  2. Suponiendo que esto se haga, ¿cómo configuro mi VirtualHost para que recoja el perl correcto actual?
  3. Si esto no es posible, (lo cual dudo) ¿puedo al menos usar instalaciones locales para ejecutar CGI vainilla?

Gracias por su atención.


No creo que este sea un buen uso para perlbrew, que se mueve alrededor de enlaces simbólicos en su propio directorio. El truco es cambiar el módulo mod_perl. Recuerde, mod_perl será incompatible con los binarios entre las versiones principales de perl, y tendrá que compilarlo contra apache para cada versión de perl (y apache) que quiera usar.

Perlbrew realmente hace dos cosas grandes para ti:

  • Instala perl, que es trivialmente fácil de hacer por tu cuenta.
  • Cambia alrededor de enlaces simbólicos para que perl sea ​​la versión que quieras.

Si renuncias a eso último, Perlbrew realmente no está haciendo mucho por ti. No creo que la función de enlace simbólico sea particularmente valiosa.

Creo que Perlbrew está bien por lo que es, pero cuando empiezas a hacer cosas fuera de su alcance limitado, es hora de no usarlo. Se supone que debe ser una herramienta para ahorrarle tiempo y dolor de cabeza, por lo que si no cumple con ese objetivo, no es la herramienta adecuada para su situación.

En esta situación, donde estoy soportando una aplicación web grande y única, le doy su propia instalación de Perl que no permito que ninguna otra cosa use.

Para tus otras preguntas:

  1. marcador de posición

  2. No deberías tener que configurar cualquier cosa de VirtualHost . Si está utilizando mod_perl, perl ya está allí y no puede elegir un perl. Si está utilizando cosas CGI, especifique el perl en la línea shebang. Tendrá que asegurarse de que apache recoja los directorios de la biblioteca correctos, pero creo que Perlbrew se encarga de eso. Es posible que tenga que usar SetEnv o algo similar en su httpd.conf.

  3. Para CGI de vainilla, simplemente apunte a la ruta derecha (enlace simbólico) para cualquiera que sea la versión predeterminada de Perlbrew. El programa CGI solo utilizará cualquier perl al que apunte ese camino.