25 votos

Cómo configurar Mod_WSGI para Python en Ubuntu

Estoy tratando de configurar MOD_WSGI en mi Ubuntu cuadro. He encontrado los pasos que dijo que yo tenía que hacer los siguientes pasos que he encontrado en http://ubuntuforums.org/showthread.php?t=833766

  1. sudo apt-get install libapache2-mod-wsgi
  2. sudo a2enmod mod-wsgi
  3. sudo /etc/init.d/apache2 restart
  4. sudo gedit /etc/apache2/sites-available/default y actualizar 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>
  1. sudo /etc/init.d/apache2 restart
  2. Prueba creado.con wsgi

    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]
    

Paso 2 da error porque dice que no puede encontrar el mod-wsgi aunque el apt-get encontrado. Si sigo con los pasos que la aplicación python solo se muestra como texto sin formato en un navegador.

Alguna idea de lo que he hecho mal?


EDIT: los Resultados de las preguntas frecuentes

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 <ubuntu-motu@lists.ubuntu.com>
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 <python-modules-team@lists.alioth.debian.org>
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!

EDITAR MÁS DE 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:~$ 

96voto

Jason Puntos 8799

¿Agregar la línea LoadModule realmente causa mod_wsgi para ser cargado? ¿Cual es el verdadero mensaje de error y dónde está viniendo? Ver:

http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

para un bajo nivel de instrucciones. Puesto que usted está utilizando paquetes binarios puede omitir la compilación, pero usted todavía necesita para causar mod_wsgi para ser cargado. Dónde/cómo usted puede hacer esto va a ser determinado a un grado por su distribución de Linux. Basado en esa guía se pretende ejecutar:

sudo a2enmod mod-wsgi
sudo /etc/init.d/apache2 restart

¿Realmente lo hacemos?


EDITAR

Leyendo tu pregunta de nuevo es obvio. Usted dijo que los archivos con .wsgi extensión son manejados por mod_wsgi, pero luego se dio al archivo un .py extensión. Uso .wsgi lugar.

6voto

Siebe Puntos 473

He descubierto que se trata de un error conocido del paquete apt-get mod_wsgi que tiene más de un año. Detalles en http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1147225.html . El paquete apt-get no tenía el archivo wsgi.load por lo que había que crearlo siguiendo los pasos del enlace anterior.

¡Gracias a todos los que ayudaron!

5voto

Francois Puntos 1

Comprueba si el módulo se ha cargado correctamente con:

apache2ctl -t -D DUMP_MODULES

5voto

Zayne S Halsall Puntos 1230

Primero confirme que el módulo WSGI es en realidad instalado:

dpkg -l libapache2-mod-wsgi

Esto debería dar una salida que incluya el nombre, la versión, etc. - Busque las letras a la izquierda del nombre, esto indica el estado actual del paquete. Para comprobarlo manualmente, busque en /etc/apache2/mods-available/ y debería ver ambos wsgi.conf y wsgi.load . Si existen, deben tener sus correspondientes enlaces simbólicos en /etc/apache2/mods-enabled/ .

En caso de que cualquiera de los dos conjuntos no existe, empieza por arreglar eso primero - no puedes interpretar código Python a través de apache si apache no puede encontrar el intérprete. Además, su test.py script no funcionará dado el AddHandler que has configurado - esa directiva le dice a apache que pase los archivos de un determinado extensión al gestor correspondiente. Haz tu script test.wsgi o cambiar el AddHandler directiva.

4voto

johnstok Puntos 16139

Por lo que veo, no has cargado el módulo mod_wsgi en tu httpd.conf .

Primero intentaría añadir los archivos wsgi al mods-enabled de Apache.

sudo ln -s /etc/apache2/mods-available/wsgi.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/wsgi.conf /etc/apache2/mods-enabled

A continuación, reinicie Apache y debe trabajo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: