2010-11-16 17 views
2

Je suis complètement nouveau à Python - jamais utilisé avant aujourd'hui. Je suis intéressé par le développement d'applications Python pour le web. Je voudrais vérifier si mon serveur Web prend en charge WSGI ou exécuter des applications python d'une manière ou d'une autre.Débutant Python question sur la création d'une application web

Disons que j'ai un fichier .py qui affiche "Hello world!". Comment puis-je tester si mon serveur prend en charge le traitement de ce fichier?

FYI, il s'agit d'un serveur Mac OS X 10.5. Donc, je sais que Python est installé (il est installé sur Mac OS X par défaut), mais je ne sais pas s'il est configuré pour traiter les fichiers .py côté serveur et renvoyer les résultats.

BTW, je viens d'un milieu PHP, c'est un peu étranger à moi. J'ai regardé les docs de python re: wgsi, cgi, etc. mais comme je n'ai encore rien fait de concret, ça n'a pas vraiment de sens.

+1

De quel "serveur" parlez-vous? Un serveur Web est un logiciel assez spécifique. Par exemple, le serveur Apache httpd. Quel logiciel "serveur" demandez-vous? –

+0

Comme je l'ai mentionné, j'utilise le serveur Mac OS X 10.5. Cela utilise Apache par défaut (je crois). – Jeff

+0

Mac OS X peut utiliser Apache. Ce n'est pas le propos. Est-ce que ** vous ** pensez à utiliser Apache? Vous devez choisir un serveur. Quel serveur allez-vous utiliser? –

Répondre

5

Une application WSGI très basique peut se présenter comme suit:

def application(environ, start_response): 
    start_response('200 OK', [('content-type', 'text/html')]) 
    return ['Hello world!'] 

Malheureusement, si vous mettez cela en helloworld.py sur le serveur, puis accédez à l'URL/helloworld.py vous sera très probablement voir le code .

En général, vous devez ajouter des options de configuration très spécifiques au serveur (ou dans un fichier de configuration du serveur) pour l'obtenir pour servir votre python « application » correctement. Étant donné que vous utilisez mod_wsgi sur Apache 2, une configuration pourrait se présenter comme suit:

<VirtualHost *> 
    ServerName example.com 
    WSGIScriptAlias /server/location/address /path/to/helloworld.py 
</VirtualHost> 

Où/serveur/emplacement/adresse est le point final de l'URL pour parcourir.

C'est parce que python WSGI attrape toutes les URL qui lui sont transmises, et les pousse au même point d'entrée (méthode/classe application). Et à partir des informations reçues dans les paramètres, l'application doit décider quelle page retourner. Comme cette information est si spécifique à l'application, il devrait y avoir un moyen de la configurer sur le serveur, mais je n'ai pas encore trouvé de panneau de configuration d'hébergement Web qui permette la configuration des applications Python. Cela signifie généralement que vous devez contacter les administrateurs du serveur et les faire configurer pour vous.En général, lorsque vous vous inscrivez à l'hébergement, la société a généralement une page où elle vous dit exactement ce qui est supporté sur ses serveurs (généralement: php, mysql) et combien d'espace et de bande passante vous êtes autorisé. Ainsi, s'ils ne le listent pas sur leur site, il est fort probable qu'ils ne le supporteront pas. Pour contourner ce problème, vous pouvez acheter un VPS (Virtual Private Server), puis le configurer comme vous le souhaitez.

+0

Merci, ceci est utile J'ai quelques questions complémentaires si cela ne vous dérange pas? Il y a un cgi-bin partagé sur le serveur, et j'ai remarqué qu'il y a un fichier test.py qui fonctionne: http://chil.rice.edu/cgi-bin/test.py Mon fichier python donne un message d'erreur . Je me souviens avoir lu que toute modification d'un fichier python nécessite le redémarrage du serveur web (lors de l'utilisation de la méthode CGI), donc je suppose que si je redémarre le serveur, il devrait fonctionner correctement, non? En ce qui concerne WSGI, je suppose qu'il est prudent de supposer que je ne peux pas utiliser WSGI sans contacter mon administrateur système, n'est-ce pas? – Jeff

+0

Cela dépend de la façon dont ils ont configuré le système python. L'en-tête du serveur renvoyé est: Serveur - Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7l DAV/2 PHP/5.2.12. Donc je suppose qu'ils utilisent mod_python, auquel cas vous devrez redémarrer Apache pour le faire servir une version plus récente du fichier. Il existe des moyens de contourner ce problème (en utilisant le rechargement automatique du code) s'ils utilisent mod_wsgi, voir http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode. – Mike

1

À lire en premier.

How Python web frameworks, WSGI and CGI fit together

Ensuite Révisez votre question d'appeler spécifiquement sur des choses que vous ne l'avez pas encore découvert. Après avoir lu ceci, relisez la partie sur mod_wsgi étant l'une des façons dont Apache peut exécuter Python.

Après avoir relu cette partie, relisez la partie sur la façon dont Python peut être exécuté comme un script cgi. C'est un autre moyen par lequel Apache peut exécuter Python.

Après avoir relu tout cela, s'il vous plaît réviser la question d'expliquer quelle partie de la configuration Apache vous embrouille.

Pouvez-vous trouver pas mod_wsgi? Pouvez-vous ne pas trouver mod_cgi? Veuillez être précis sur les parties de la configuration d'Apache qui vous rendent confus.

+0

En ce moment, je ne suis pas intéressé par les frameworks. Je comprends la différence entre WSGI et CGI, mais pour l'instant, je ne me soucie pas vraiment de celle que j'utilise. Je veux juste savoir si le serveur que j'utilise est actuellement configuré pour exécuter des scripts python, que ce soit cgi, wsgi ou fastcgi. Vraisemblablement, je dois déterminer lesquels sont configurés pour mon serveur (le cas échéant), mais je ne sais pas comment faire cela. J'ai essayé de faire un fichier .htaccess avec ces commandes, mais le script python ne s'exécute pas. – Jeff

+0

@Jeff: Quelle partie de "mod_wsgi" vous trouble? Je pense que si vous compreniez WSGI, vous comprendrez que mod_wsgi le fait fonctionner. Si vous voulez savoir si Apache a mod_wsgi, veuillez ** mettre à jour ** la question pour être très, très spécifique sur ce que vous cherchez. En ce moment, votre question est vague et vous avez des commentaires partout. Veuillez clarifier votre question pour qu'elle soit très, très spécifique. –

+0

Je pense que nous avons des problèmes de communication ... J'ai lu les docs Python qui comparent wsgi et cgi, mais je ne prétends pas en savoir beaucoup sur le fonctionnement de mod_wsgi. J'ai simplement un script python, et je veux l'exécuter si possible. Je vais mettre à jour ma question, j'espère que cela clarifie les choses ... – Jeff

2

Si vous débutez dans le développement d'applications Web Python et Python, ignorez tous les problèmes d'hébergement pour commencer et ne commencez pas à zéro. Il suffit d'aller chercher un framework web Python complet tel que Django ou web2py et d'apprendre à écrire des applications web Python en utilisant leur serveur web de développement intégré. Vous ne vous ferez que beaucoup de mal en essayant de résoudre d'abord le problème distinct de l'hébergement Web de production.