scriptalias script run execcgi enable python apache apache2

python - execcgi - run cgi script on apache server



¿Cómo se configuran los scripts de Python para que funcionen en Apache 2.0? (4)

Sí, mod_python es bastante confuso de configurar. Así es como lo hice.

En httpd.conf:

LoadModule python_module modules/mod_python.so <Directory "/serverbase/htdocs/myapp"> AddHandler mod_python .py PythonHandler myapp PythonDebug On

y en su directorio de aplicaciones:

$ /serverbase/htdocs/myapp$ ls -l total 16 -r-xr-xr-x 1 root sys 6484 May 21 15:54 myapp.py

Repita la configuración para cada programa python que desee ejecutar bajo mod_python.

Traté de seguir un par de tutoriales en Google para configurar mod_python, pero fallaron cada vez. ¿Tienes un buen, paso a paso, sólido howto?

Mi cuadro dev es OS X, producción - Centos.


¿Estás ejecutando Python en UNIX o Windows?

Una alternativa a mod_python y FastCGI es mod_wsgi. Puede encontrar más información en modwsgi

Lo construí e instalé en Solaris sin problemas. Anteriormente había probado mod_python pero tuve problemas con las bibliotecas compartidas como parte de la compilación. Hay buenos documentos de instalación disponibles.


El problema para mí no estaba en la configuración de Apache, sino en entender cómo mod_apache realmente usa los archivos .py. Las sentencias a nivel de módulo (incluidas las de una if __name__==''__main__'' ) no se ejecutan: supuse que el stdout de ejecutar el script en la línea de comando sería lo que el servidor generaría, pero no es así como funciona.

En cambio, escribí una función de nivel de módulo llamada index() , y la devolvió como una cadena del HTML de la página. También es posible tener otras funciones a nivel de módulo (por ejemplo, otherFunction() ) a las que se pueda acceder como segmentos adicionales en el URI (por ejemplo, testScript/otherFunction para el archivo testScript.py ).

Obviamente, esto tiene más sentido que mi concepción original de stdout. Mejor capacidad de usar realmente Python como lenguaje de scripting y no como un lenguaje de marcado enorme.


Hay dos formas principales de ejecutar Python en Apache. Lo más simple sería usar CGI y escribir scripts de Python normales, mientras que el segundo es usar un framework web como Django o Pylons.

Usar CGI es sencillo. Asegúrate de que tu archivo de configuración de Apache tenga una configuración de cgi-bin. De lo contrario, siga su documentación ( http://httpd.apache.org/docs/2.0/howto/cgi.html ). En ese punto, todo lo que necesita hacer es colocar sus scripts de Python en el directorio cgi-bin y la salida estándar se convertirá en la respuesta HTTP. Consulte la documentación de Python para obtener más información ( https://docs.python.org/library/cgi.html ).

Si desea utilizar un marco web, deberá configurar mod_python o FastCGI. Estos pasos dependen del marco que quiera usar. Django proporciona instrucciones claras sobre cómo configurar mod_python y Django con Apache ( http://www.djangoproject.com/documentation/modpython/ )