2017-06-05 6 views
0

Je suis python en cours d'exécution -m HTTPServer sous Macintosh OS X.Comment trouver l'emplacement du fichier de configuration httpd.conf contrôlant le comportement du module httpserver 2.7 de python.

Voici le code Python 2.7 mise en œuvre du HTTPServer:

import CGIHTTPServer 
import BaseHTTPServer 

class Handler(CGIHTTPServer.CGIHTTPRequestHandler): 
    cgi_directories = ["/cgi"] 

PORT = 9999 

httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler) 
print "serving at port", PORT 
httpd.serve_forever() 

Quand je tape dans le navigateur Web http://localhost:9999/adder.html, je veux savoir l'emplacement du fichier de configuration httpd.conf contrôlant le comportement du module httpserver 2.7 de python.

Il existe également un processus apache24 httpd démon exécuté simultanément. Je suppose qu'ils utilisent tous deux des fichiers httpd.conf différents dans des endroits différents. Le fichier httpd.conf correspondant au processus apache24 httpd démon est gelé en root readpermission que je ne peux pas modifier pour rendre le script cgi python 2.7 exécutable sous les auspices du module cgi comme indiqué ci-dessous dans l'extrait de cette URL, Python script does not run through CGI on Apache2 parce que les spécialistes des technologies de l'information de l'Université Lesley ont bloqué des utilisateurs comme moi de l'exécution de la commande du système d'exploitation sous le nom de sudo.

Sans le cgi_module, le code même qui est chmod + x ne sera pas exécutable, cette ligne décommenter:

LoadModule cgi_module libexec/apache2/mod_cgi.so

Et changer votre répertoire pour ressembler à ceci (le mien fonctionne comme ça):

AllowOverride None Permettre de tous Exiger que tous les options accordées ExecCGI AddHandler script cgi .py

Sans cette modification du fichier httpd.conf responsable, je reçois le texte suivant un message absurde:

adder.cgi d'ouverture, vous avez choisi d'ouvrir adder.gui qui est un fichier binaire (5.0KB) de httpd: //localhost.9999. Voudriez-vous sauvegarder ce fichier? Annuler ou Enregistrer

au lieu de voir adder.cgi lancer un processus enfant.

Je fais l'hypothèse que le module httpserver 2.7 de python peut référencer un httpd.conf non-par défaut dans le sous-répertoire par rapport au répertoire de travail courant.

S'il vous plaît laissez-moi savoir si vous avez besoin de plus de données de moi. Merci d'avoir regardé cette question.

+0

https://stackoverflow.com/questions/17618084/python-cgihttpserver-default-directories –

+0

Je vais tester ces astuces utiles ce matin et rendre compte de mes découvertes. https://stackoverflow.com/questions/17618084/python-cgihttpserver-default-directories, https://docs.python.org/2/library/cgihttpserver.html et http: // tasdikrahman.me/2015/10/20/Exécution-CGI-Scripts-with-CGIHTTPServer/ –

Répondre

0

Après avoir lu l'article ServerFault https://serverfault.com/questions/168132/setting-up-cgihttpserver-on-osx intitulé "Mise en place CGIHTTPServer sur OSX", mon Python 2.7 script CGI en utilisant/usr/bin/env python a été servi avec succès sur un ordinateur de bureau Mac OS X en cours d'exécution CGIHTTPServer quand je navigué http://127.0.0.1:8000/WWW/test.py.

Apparemment, la classe CGIHTTPServer.py ne lit pas à partir du fichier de configuration du serveur Web Apache httpd.conf. Au lieu de cela, les informations contenues dans httpd.conf sont "intégrées" dans le code source de la classe CGIHTTPServer.py.

+0

Pourquoi lancer un processus enfant python sur Windows est-il plus lent que sur macintosh os x? –