Comment avez-vous mis en place des scripts Python pour travailler dans Apache 2.0?
J'ai essayé de suivre un couple de googlé des tutoriels sur la configuration de mod_python, mais a échoué à chaque fois. Avez-vous une bonne, étape par étape, solide comme le roc howto?
Ma boîte de dev est OS X, la production Centos.
Vous devez vous connecter pour publier un commentaire.
Il y a deux principales façons de Python sur Apache. Le plus simple serait d'utiliser des CGI et en écriture normale des scripts Python, tandis que la deuxième est l'utilisation d'un framework web comme Django ou des Pylônes.
À l'aide de CGI est simple. Assurez-vous que votre fichier de configuration d'Apache est un cgi-bin mis en place. Si non, suivez leur documentation (http://httpd.apache.org/docs/2.0/howto/cgi.html). À ce point tout ce que vous devez faire est de placer vos scripts Python dans le répertoire cgi-bin et la sortie standard deviendra la réponse HTTP. Reportez-vous à la documentation de Python pour plus d'info (https://docs.python.org/library/cgi.html).
Si vous souhaitez utiliser un framework web, vous aurez besoin pour l'installation de mod_python ou FastCGI. Ces étapes dépendent du cadre que vous souhaitez utiliser. Django fournit des instructions claires sur la façon de configurer mod_python et Django avec Apache (http://www.djangoproject.com/documentation/modpython/)
Oui, mod_python est assez déroutant à mettre en place. Voici comment je l'ai fait.
Dans httpd.conf:
et dans le répertoire de votre application:
Répéter la configuration de chaque programme en python que vous souhaitez avoir en cours d'exécution en vertu de mod_python.
Êtes-vous en cours d'exécution Python sur UNIX ou Windows?
Une alternative à mod_python et FastCGI est mod_wsgi. Vous pouvez en savoir plus à modwsgi
J'ai construit et installé ce sur Solaris sans problèmes. J'avais déjà essayé avec mod_python, mais a couru dans des problèmes avec les bibliothèques partagées dans le cadre de la construction. Il y a bon installer docs disponibles.
Le problème pour moi n'était pas dans Apache, mais dans la compréhension de la façon dont mod_apache utilise en fait le .py fichiers. Au niveau du Module de déclarations (y compris ceux dans un
if __name__=='__main__'
section) sont pas exécutées, j'ai supposé que le stdout de l'exécution du script à la ligne de commande serait ce que le serveur de sortie, mais ce n'est pas la façon dont il fonctionne.Au lieu de cela, j'ai écrit un module de niveau de la fonction appelée
index()
, et s'il avait retourner comme une chaîne de caractères dans le code HTML de la page. Il est également possible d'avoir d'autres au niveau du module de fonctions (par exemple,otherFunction()
) qui peuvent être accessibles que les autres segments de l'URI (par exemple,testScript/otherFunction
pour le fichiertestScript.py
.)Évidemment, cela fait plus de sens que mon original stdout conception. Meilleure capacité de les utiliser Python comme langage de script et pas un gigantesque markup language.