Comment puis-je utiliser pour gérer perlbrew perl installations destinées à des applications web?
-
05-10-2019 - |
Question
J'utilise perlbrew pour gérer plusieurs versions de Perl sur une Fedora Linux carnet. Je l'ai utilisé avec grand avantage pour exécuter des scripts de ligne de commande en utilisant principalement App :: cmd .
Je veux maintenant passer à l'exécution d'applications Web écrites en utilisant en utilisant différents Perls installés dans mon $HOME
. Je suis familier avec l'exécution d'applications web Perl à l'aide de $HOME
s user_dir
d'Apache ou la création d'hôtes virtuels mais je suis incapable de trouver une manière propre d'intégrer cela et le Perls gérés perlbrew. Plus précisément, je besoin d'aide pour comprendre et trouver des réponses à ces questions:
- Comment installer mod_perl sous perlbrew?
- En supposant que cela est fait, comment puis-je configurer mon VirtualHost pour qu'il ramasse le perl correct qui est en cours?
- Si cela est impossible, (ce dont je doute) je peux au moins utiliser des installations locales pour lancer la vanille CGI ?
Je vous remercie de votre attention.
La solution
Je ne pense pas que ce soit un bon usage pour perlbrew, qui se déplace autour des liens symboliques sous son propre répertoire. L'astuce est de commutation du module mod_perl autour. Rappelez-vous, mod_perl va être binaire incompatible entre les versions principales de Perl, et que vous devrez compiler contre apache pour chaque version de Perl (et apache) que vous souhaitez utiliser.
perlbrew a vraiment deux grandes choses pour vous:
- Installe perl, qui est trivialement facile à faire vous-même.
- Commutateurs autour
perl
est donc symlinks quelle que soit la version que vous voulez.
Si vous renoncez à ce dernier, perlbrew ne fait pas vraiment beaucoup pour vous. Je ne pense pas que la fonction symlink est particulièrement utile.
Je pense que perlbrew est très bien pour ce qu'elle est, mais quand vous commencez à faire des choses en dehors de son champ d'application limité, il est temps de ne pas l'utiliser. Il est censé être un outil pour vous faire économiser du temps et des maux de tête, donc si ce n'est pas l'accomplissement de cet objectif, ce n'est pas le bon outil pour votre situation.
Dans cette situation, où j'appuie une application web unique, grand, je lui donne sa propre installation de perl que je ne laisse rien d'autre usage.
Pour vos questions:
-
démarquage espace réservé
-
Vous ne devriez pas avoir à configurer une substance de
VirtualHost
. Si vous utilisez mod_perl, perl est déjà là-bas et vous ne recevez pas de choisir un perl. Si vous utilisez des trucs de CGI, vous spécifiez le perl sur la ligne tralala. Vous devrez assurer apache choix les répertoires bibliothèque à droite, mais je pense que les poignées perlbrew que. Vous pourriez avoir à utiliserSetEnv
ou quelque chose de similaire dans votre httpd.conf. -
Pour CGI vanille, pointez juste le droit chemin (lien symbolique) quelle que soit la version par défaut de perlbrew est. Le programme CGI utilisera simplement ce que perl points de chemin à.
Autres conseils
Voir la réponse de brian d foy pourquoi ne pas attendre à utiliser perlbrew pour basculer entre les versions de mod_perl. Je pense aussi que vous devrez exécuter plusieurs serveurs Apache, si vous avez besoin de plusieurs différentes versions de Perl mod_perl.
Cependant, l'utilisation perlbrew comme un moyen facile de construire Perl est à mon humble avis une chose valable de le faire, et il y a peu d'instructions disponibles pour savoir comment exécuter mod_perl sous perlbrew.
Tout d'abord assurer perl est construit avec le soutien bibliothèque partagée, en passant le drapeau -Duseshrplib (sinon sur les systèmes 64 bits, vous obtiendrez un échec de la compilation confusion au sujet -fPIC):
perlbrew install perl-5.16.3 -Duseshrplib
Installer le développement des bibliothèques Apache pour votre système. Sur Debian, cela diffère en fonction du Apache que vous MPM utilisez. Pour le MPM prefork:
sudo apt-get install apache2-prefork-dev
Ou pour le travailleur MPM:
sudo apt-get install apache2-threaded-dev
Ensuite, vous avez besoin d'options pour construire et installer mod_perl2 dans le bon endroit. Notez que cela signifie cpanm ne parviendra pas à le construire, mais vous pouvez l'utiliser pour mettre la main sur la source:
cpanm mod_perl2 # fails
cd ~/.cpanm/latest-build/mod_perl-2.0.8/ # adjust mod_perl version
Régler la version de Perl ci-dessous en conséquence. (L'option MP_APXS est de donner la bonne voie pour les systèmes basés sur Debian, que vous pourriez ne pas avoir besoin.)
perl Makefile.PL MP_APXS=/usr/bin/apxs2 \
MP_AP_DESTDIR=$HOME/perl5/perlbrew/perls/perl-5.16.3/
make
make install
Enfin, modifiez la ligne LoadModule dans votre fichier de configuration Apache (chemins en conséquence le réglage):
LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so
Votre installation mod_perl va maintenant exécuter la version de Perl que vous voulez. Installez tous vos modules CPAN requis et allez-y.