2011-01-05 2 views
3

J'ai quelques scripts python que je voudrais exécuter et la configuration suivante: Ubuntu 10.04, Apache2, Python 2.6, mod_python et mod_wsgi installés.CGI n'exécutant pas l'erreur de serveur interne python - 500

J'ai suivi les instructions sur les sites suivants:

http://bytes.com/topic/python/answers/474462-apache-python-ubuntu

http://apache.active-venture.com/cgi-configure.html

http://modpython.org/live/current/doc-html/inst-testing.html

http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

http://wiki.apache.org/httpd/DistrosDefaultLayout

Le fichier par défaut dans les sites disponibles:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www 
    <Directory /> 
      Options FollowSymLinks 
      AllowOverride None 
    </Directory> 

    <Directory /var/www/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin"> 
      AddHandler mod_python .py 
      AddHandler cgi-script .cgi py 
      AllowOverride None 
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
      Order allow,deny 
      Allow from all 
    </Directory> 

Je reçois 500 erreur interne du serveur. J'ai également changé les autorisations des fichiers à 755

Les fichiers py imprime simplement du texte qui devrait apparaître sur la page. Que dois-je faire? Merci

[modifier]: mise à jour, il est lié à des bugs dans le fichier py journal d'erreur ci-dessous.

Traceback (most recent call last): 
    File "/usr/lib/cgi-bin/amissa2.py", line 80, in <module> 
    zoom_factor = int(parms.getfirst('zoom')) * int(parms.getfirst('zsize')) 
TypeError: int() argument must be a string or a number, not 'NoneType' 

Il semble y avoir une erreur dans la conversion de None int, ici:

zoom_factor = int(parms.getfirst('zoom')) * int(parms.getfirst('zsize')) 

Toute indication sur la façon dont cela peut être une telle conversion fait?

+2

Plus d'une question sysadmin vraiment. Vérifiez vos journaux. S'ils ne vous le disent pas assez, augmentez la verbosité. – wds

+2

Pouvez-vous fournir plus d'informations à partir de votre journal des erreurs Apache? Essayez de définir 'LogLevel debug'. – scoffey

Répondre

1

Si parms.getfirst ('zoom') ou parms.getfirst ('zsize') renvoient None, vous ne les fournissez probablement pas dans votre URL (ne sais pas ce que sont ces paramètres, juste devinant). Définir le comportement que vous voulez quand ils sont manquants (cela signifie-t-il un zoom "0", ou puisque vous multipliez, "1" a plus de sens?).

Ensuite, créez votre propre fonction de conversion qui sait traduire un None en int (en fonction de votre comportement défini) et appelez-le au lieu de int().

def convert(value): 
    if value is None: 
     return 0 # or 1, or whatever 
    else: 
     return int(value) 
1

Vous ne chargez pas le module wsgi.

LoadModule wsgi_module modules/mod_wsgi.so 

De plus, vous n'avez besoin que de mod_wsgi OR mod_python installé. Pas les deux sauf si vous avez un besoin spécifique de le faire.