Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

Le Forum

Vous n'êtes pas identifié.

  • Index
  •  » Debian
  •  » LAMP avec Perl ou Comment executer un script Perl via un module Apache

#1 25 Jul 2010 13:30:14

Didier100
Prêcheu(r|se) du libre
 
Date d'inscription: 11 Aug 2005
Messages: 138

LAMP avec Perl ou Comment executer un script Perl via un module Apache

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:

Code:

apt-get update
apt-get install perl

Jusqu'à la pas de problème.

Puis il faut installer le module perl pour Apache2

Code:

apt-get install libapache2-mod-perl2

pour s'assurer que le module perl (dans Apache2) est bien activé on exécute la commande suivante:

Code:

a2enmod perl

Il est temps d'effectuer quelques vérifications:

afficher la version de Perl qui est installé

Code:

perl -v

puis pour lister les modules chargé dans apache2:

Code:

apache2ctl -M

exemple:

Code:

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.

Code:

chmod u+x  nom_du_script.pl

Voici un petit script de test:

Code:

#!/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

Code:

        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:

Code:

       <Files ~ "\.(pl|cgi)$">
          SetHandler perl-script
          PerlResponseHandler ModPerl::PerlRun
          Options +ExecCGI
          PerlSendHeader On
        </Files>

J'ai redémarré Apache2

Code:

/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

 
  • Index
  •  » Debian
  •  » LAMP avec Perl ou Comment executer un script Perl via un module Apache

Pied de page des forums

Powered by FluxBB