Vous n'êtes pas identifié.
Serveur web avec Debian lenny 5.x
Je souhaite exécuter certains de mes scripts Perl en passent par Apache2 comme on fait pour les scripts PHP.
J'ai déjà réussi dans le passé (sur un autre serveur) à activer le module Perl d'Apache sans trop y galérer.
Cette fois ci par contre ça fait une journée que je galère pour pouvoir exécuter un script Perl en passent par Apache et je viens enfin d'arriver à le faire marcher après des nombreux essais et une multitude de recherches sur le web.
Je souhaite partager le résultat de mes recherches pour aider ceux qui se trouveront dans le même cas comme moi ou un cas similaire.
L'installation de Perl était vite fait mais au lieu de exécuter mes scripts Perl j'ai eu en permanence une fenêtre de téléchargement qui s'affichait. Cela m'est déjà arrivé à plusieurs reprises avec des nouvelles installations PHP. Mon problème principal était donc de faire disparaitre cette fenêtre de téléchargement!
Je commence par le début!
Alors première chose est de vérifier si Perl est bien installé sur le serveur, voire le mettre à jour:
apt-get update apt-get install perl
Jusqu'à la pas de problème.
Puis il faut installer le module perl pour Apache2
apt-get install libapache2-mod-perl2
pour s'assurer que le module perl (dans Apache2) est bien activé on exécute la commande suivante:
a2enmod perl
Il est temps d'effectuer quelques vérifications:
afficher la version de Perl qui est installé
perl -v
puis pour lister les modules chargé dans apache2:
apache2ctl -M
exemple:
root@sd-1xxxxx:/etc/apache2/sites-enabled #apache2ctl -M Loaded Modules: core_module (static) log_config_module (static) logio_module (static) mpm_prefork_module (static) http_module (static) so_module (static) alias_module (shared) auth_basic_module (shared) authn_file_module (shared) authz_default_module (shared) authz_groupfile_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) [b]cgi_module (shared)[/b] deflate_module (shared) dir_module (shared) env_module (shared) mime_module (shared) negotiation_module (shared) [b]perl_module (shared)[/b] php5_module (shared) rewrite_module (shared) setenvif_module (shared) ssl_module (shared) status_module (shared) userdir_module (shared) Syntax OK root@sd-1xxxxx:/etc/apache2/sites-enabled #
Vous pouvez aussi essayer d'exécuter un script test en passent DABORD par votre console de commande pour voire si Perl fonctionne correctement. Car si Perl ne fonctionne pas en Console de commande il risque pas d'exécuter vos scripts en passent par votre navigateur web!
Si vous passez par la console il faut pas oublier de rendre votre script exécutable avant de le lancer.
chmod u+x nom_du_script.pl
Voici un petit script de test:
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, world!\n";
Et maintenant la dernière étape la configuration du fichier "virtualhost" Apache2 de votre nom de domaine.
J'avait cette partie de code dans mon fichier
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> # AllowOverride None AllowOverride All Options FollowSymLinks +ExecCGI AddHandler cgi-script .cgi .py .pl .sh Order allow,deny Allow from all </Directory>
mais rien à faire mes scripts Perl ne voulent pas s'exécuter ... mais télécharger!
Je ne sais pas pourquoi ça ne fonctionne plus? .....???.... je cherche toujours à comprendre ???
J'ai remplace ses lignes de code par celles ci:
<Files ~ "\.(pl|cgi)$"> SetHandler perl-script PerlResponseHandler ModPerl::PerlRun Options +ExecCGI PerlSendHeader On </Files>
J'ai redémarré Apache2
/etc/init.d/apache2 restart
et quel bonheur plus de fenêtre de téléchargement et les scripts s'exécutent en fin!
Maintenant comme tout fonctionne voici un superbe script qui utilise aussi du perl et qui permet d'offrir à vos visiteurs un test de bande passante upload et download. http://www.brandonchecketts.com/open-source-speedtest
Dernière modification par Didier100 (25 Jul 2010 15:51:41)
Hors ligne