2010-12-16 6 views
1

J'ai 2 serveurs web différents sur une machine Debian Lenny. L'un exécute FastCGI (TRAC) et l'autre serveur Web exécute PHP et quelques scripts CGI. J'ai donc actuellement les 2 modules Apache2 activés (cgi et fcgi) et la configuration de 2 vhosts en conséquence. Je n'ai aucun autre intérêt particulier pour ces deux modules fonctionnant en même temps.Perl CGI ou CGI :: Fast sous Apache 2.2 sur Debian Lenny

Donc, je veux garder le seul module Apache fastcgi en cours d'exécution car il semble être le plus efficace.

Pourriez-vous confirmer que les évaluations suivantes sont correctes ou correctes?
1- Je n'ai rien à faire/changement pour le site TRAC (déjà en cours d'exécution fcgi)
2- Je vais devoir régler l'autre serveur Web vhost à définir avec un gestionnaire de scripts fastcgi
3- Je vais avoir à changer uniquement les modules perl de "utiliser CGI" à "utiliser CGI :: Fast"
4- Je serai capable de garder le reste des scripts CGI existants sans autres changements
5- Je ne sais pas besoin d'utiliser CGI :: Apache, mais CGI :: FastCGI (i/o le module actuel CGI) dans les scripts de serveur Web

J'espère que mon point est clair que tout est un peu étranger à moi ...

Thx

EDIT:
thx pour les conseils à Naveed et J-16,
Voici ce que je l'ai fait pour le faire fonctionner si elle peut aider les autres:

  • hum, installé CGI :: Fast avec CPAN, alors ça marche mieux ..
    Sur Debian avec libperl déjà installé

    perl -MCPAN -e shell 
    cpan> install CGI::Fast 
    
  • changé de nom de fichier * .cgi * .fcgi,

  • inclus la FastCGI en boucle comme ci-dessous par Naveed conseillé,
  • configuration apache concerné vhost avec le gestionnaire de droit fastcgi (Voir fastcgi doc)
  • activé le module FastCGI Apache (a2enmod FastCGI) et désactivé le module cgi,
  • vérifié le fichier fastcgi.conf dans les paramètres Apache,
  • redémarré Apache,
  • vérifié FastCGI en cours d'exécution comme un processus sous Apache (ps -afx),
  • Correction de quelques problèmes de script, déjà en .. mais nouvellement apparue lors de l'exécution FastCGI, comme conseillé (erreurs détectées en vérifiant les journaux Apache),
  • EDIT: adapté le code de téléchargement de fichier que le script initial ne fonctionne plus (ne comprends toujours pas pourquoi), donc je devais remplacer la boucle while par une telle personne:

    open(FILE,">$upload_dir/$file_name") 
    while ($bytes_count = read($file_query,$buffer,2096)) { 
    $size += $bytes_count; 
    print FILE $buffer; 
    } 
    close(FILE); 
    
  • fait.

Le monde n'est pas encore parfait mais cela fonctionne finalement.

Répondre

6

Vous devrez faire un peu plus que simplement changer de CGI pour utiliser CGI :: Fast. Assurez-vous enveloppez vous des scripts CGI avec une boucle while, comme la documentation indique http://p3rl.org/CGI::Fast

use CGI::Fast; 
while (CGI::Fast->new()) { 
    # The original CGI code goes in here 
} 
+1

aussi, si vous relayez des variables globales non initialisées (pouah) dans votre cgi, vous pouvez avoir à réparer .. –

+0

Thx à Vous deux. – hornetbzz

Questions connexes