23 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:~$ 

94voto

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.

23voto

Siebe Puntos 473

He encontrado que esto es un error conocido con mod_wsgi apt-get paquete de más de un año de edad! Los detalles en http://www.mail-archive.com/ubuntu-bugs@lists.ubuntu.com/msg1147225.html. El apt-get paquete no tiene la wsgi.carga de archivo, por lo que se necesita para ser creado siguiendo los pasos en el enlace de arriba.

Gracias a todos los que ayudaron!

5voto

Francois Puntos 1

A ver si el módulo está realmente cargado correctamente con:

apache2ctl -t -D DUMP_MODULES

5voto

Zayne S Halsall Puntos 1230

Primero confirmar que el WSGI módulo está realmente instalado:

dpkg -l libapache2-mod-wsgi

Esto debe darle salida, incluyendo nombre, versión, etc. - buscar las letras a la izquierda del nombre, esto indica que el estado actual del paquete. Para comprobar manualmente, busque en /etc/apache2/mods-available/ y usted debería ver wsgi.conf y wsgi.de carga. Si estos existen, deben tener correspondientes enlaces simbólicos en /etc/apache2/mods-enabled/.

Debe establecer que no existen, hay que empezar por la fijación que de primera no se puede interpretar el código de python a través de apache si apache no puede encontrar el intérprete. También, su test.py el script no funcionará dada la AddHandler directivas de haber configurado - que la directiva le dice a apache para pasar archivos de una determinada extensión para el controlador correspondiente. Realice la secuencia de comandos de prueba.wsgi o cambiar el AddHandler directiva.

4voto

johnstok Puntos 16139

Tan lejos como puedo ver, que no se ha cargado el módulo mod_wsgi en su httpd.conf.

Yo la primera vez que trate de añadir la wsgi archivos a la mods-enabled directorio 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 el servidor Apache y se debe trabajar.

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: