Estoy tratando de configurar MOD_WSGI en mi cuadro de Ubuntu. Encontré pasos que decían que tenía que hacer los siguientes pasos que encontré en http://ubuntuforums.org/showthread.php?t=833766
- sudo apt-get install libapache2-mod-wsgi
- sudo a2enmod mod-wsgi
- sudo /etc/init.d/apache2 restart
- sudo gedit / etc / apache2 / sites-available / default y actualice el directorio
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews ExecCGI AddHandler cgi-script .cgi AddHandler wsgi-script .wsgi AllowOverride None Order allow,deny allow from all </Directory>
- sudo /etc/init.d/apache2 restart
Creado test.wsgi con
def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
El paso 2 falla porque dice que no puede encontrar mod-wsgi a pesar de que apt-get lo encontró. Si sigo con los pasos, la aplicación Python solo se muestra como texto sin formato en un navegador.
¿Alguna idea de lo que he hecho mal?
EDITAR: resultados de las preguntas formuladas
automatedtester@ubuntu:~$ dpkg -l libapache2-mod-wsgi
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-======================================-======================================-============================================================================================
ii libapache2-mod-wsgi 2.5-1 Python WSGI adapter module for Apache
automatedtester@ubuntu:~$ dpkg -s libapache2-mod-wsgi
Package: libapache2-mod-wsgi
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 376
Maintainer: Ubuntu MOTU Developers <[email protected]>
Architecture: i386
Source: mod-wsgi
Version: 2.5-1
Depends: apache2, apache2.2-common, libc6 (>= 2.4), libpython2.6 (>= 2.6), python (>= 2.5), python (<< 2.7)
Suggests: apache2-mpm-worker | apache2-mpm-event
Conffiles:
/etc/apache2/mods-available/wsgi.load 06d2b4d2c95b28720f324bd650b7cbd6
/etc/apache2/mods-available/wsgi.conf 408487581dfe024e8475d2fbf993a15c
Description: Python WSGI adapter module for Apache
The mod_wsgi adapter is an Apache module that provides a WSGI (Web Server
Gateway Interface, a standard interface between web server software and
web applications written in Python) compliant interface for hosting Python
based web applications within Apache. The adapter provides significantly
better performance than using existing WSGI adapters for mod_python or CGI.
Original-Maintainer: Debian Python Modules Team <[email protected]>
Homepage: http://www.modwsgi.org/
automatedtester@ubuntu:~$ sudo a2enmod libapache2-mod-wsgi
ERROR: Module libapache2-mod-wsgi does not exist!
automatedtester@ubuntu:~$ sudo a2enmod mod-wsgi
ERROR: Module mod-wsgi does not exist!
MÁS EDICIONES PARA RMYates
automatedtester@ubuntu:~$ apache2ctl -t -D DUMP_MODULES
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_worker_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgid_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
python_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK
automatedtester@ubuntu:~$
ubuntu
apache-2.2
python
mod-wsgi
Probador automatizado
fuente
fuente
Respuestas:
¡He descubierto que este es un error conocido con el paquete mod_wsgi apt-get que tiene más de un año! Detalles en http://www.mail-archive.com/[email protected]/msg1147225.html . El paquete apt-get no tenía el archivo wsgi.load, por lo que era necesario crearlo siguiendo los pasos del enlace anterior.
¡Gracias a todos los que ayudaron!
fuente
Vea si el módulo está realmente cargado correctamente con:
fuente
Por lo que puedo ver, no has cargado el módulo mod_wsgi en tu
httpd.conf
.Primero intentaría agregar los archivos wsgi al
mods-enabled
directorio de Apache.Luego reinicie Apache y debería funcionar.
fuente
Primero confirme que el módulo WSGI está realmente instalado:
Esto debería proporcionarle resultados, incluidos el nombre, la versión, etc. Busque las letras a la izquierda del nombre, esto indica el estado actual del paquete. Para verificar manualmente, busque en / etc / apache2 / mods-available / y debería ver tanto wsgi.conf como wsgi.load . Si existen, deberían tener enlaces simbólicos correspondientes en / etc / apache2 / mods-enabled / .
Si el conjunto no existe, comience por corregirlo primero: no puede interpretar el código de Python a través de apache si apache no puede encontrar el intérprete. Además, su script test.py no funcionará dadas las directivas AddHandler que haya configurado; esa directiva le dice a apache que pase archivos de cierta extensión al controlador correspondiente. Haga su script test.wsgi o cambie la directiva AddHandler .
fuente
¿Agregó la línea LoadModule para que realmente se cargue mod_wsgi? ¿Cuál es el mensaje de error real y de dónde viene? Ver:
http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide
para instrucciones de bajo nivel. Como está utilizando paquetes binarios, puede omitir la compilación, pero aún debe hacer que se cargue mod_wsgi. Dónde / cómo puede hacer esto estará determinado en cierta medida por su distribución de Linux. Según esa guía, debe correr:
¿Realmente hiciste eso?
EDITAR
Leer su pregunta nuevamente es obvio. Dijiste que mod_wsgi maneja los archivos con extensión .wsgi, pero luego le diste al archivo una extensión .py. Utilice .wsgi en su lugar.
fuente
Puede mirar primero la sintaxis de su python. Compruebe si realmente tiene 4 espacios después de la definición de la función. Verifique el archivo de Python ejecutándolo primero a través de la terminal
entonces, si no aparecen errores, ejecútelo a través del navegador web.
http: // localhost / wsgi /
y por cierto, parece que te has perdido algo para tu configuración de apache / archivo virtualhost. Pon esto dentro de las etiquetas
Por cierto, apt no tiene problemas al instalar el módulo wsgi. Lo probé hace un momento y ejecuté con éxito un script de Python en mi navegador web.
fuente
No estoy seguro si esto es relevante, pero después de ejecutar:
... los siguientes archivos no existían:
La reinstalación no pareció reemplazar los archivos faltantes. ¡Extraño! Sin embargo,
purge
parecía hacer el truco:fuente