Flask hello world usando apache y mod_wsgi muestra archivos solo en webroot

Estoy intentando ejecutar el hello.py básico del sitio del matraz sobre apache2 usando wsgi. Aquí es como se ve mi código:

/var/www/flask_dev/hello.py

from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() 

/var/www/flask_dev/start.wsgi

 from hello import app as application import sys sys.stdout = sys.stderr 

/etc/apache2/sites-available/flask_dev.conf

 #Listen 80 ServerName example.com  # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost #ServerName example.com WSGIDaemonProcess hello user= group= threads=5 python-path=/var/www/flask_dev WSGIScriptAlias / /var/www/flask_dev/start.wsgi  WSGIProcessGroup hello WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all  # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, eg #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf  # vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

/ etc / hosts

 127.0.0.1 example.com 

Después de ejecutar sudo a2ensite flask_dev y sudo service apache2 reload (or restart) , ir a www.example.com solo proporciona los archivos en webroot. ~~ He comprobado el registro de errores y parece que se están iniciando mod_wsgi y mod_python. ¿Alguien sabe qué más me falta? ~~

Edit 1 Ahora puedo ver los mensajes del registro de errores, y parece que estoy afectado por https://bugs.launchpad.net/ubuntu/+source/libapache2-mod-python/+bug/1073147 en Ubuntu 12.04.

Intentaré recomstackr más tarde a la versión correcta de Python para ver si corrige el error. Por ahora, mientras se produce este error, todavía veo los archivos enumerados cuando visito example.com.

registro de errores

 [Mon Jan 13 11:28:06 2014] [notice] caught SIGTERM, shutting down [Mon Jan 13 11:28:07 2014] [error] python_init: Python version mismatch, expected '2.7.2+', found '2.7.3'. [Mon Jan 13 11:28:07 2014] [error] python_init: Python executable found '/usr/bin/python'. [Mon Jan 13 11:28:07 2014] [error] python_init: Python path being used '/usr/lib/python2.7/:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload'. [Mon Jan 13 11:28:07 2014] [notice] mod_python: Creating 8 session mutexes based on 6 max processes and 25 max threads. [Mon Jan 13 11:28:07 2014] [notice] mod_python: using mutex_directory /tmp [Mon Jan 13 11:28:07 2014] [warn] mod_wsgi: Compiled for Python/2.7.2+. [Mon Jan 13 11:28:07 2014] [warn] mod_wsgi: Runtime using Python/2.7.3. [Mon Jan 13 11:28:07 2014] [notice] Apache/2.2.22 (Ubuntu) mod_python/3.3.1 Python/2.7.3 mod_wsgi/3.3 configured -- resuming normal operations 

Editar 2 Actualizar a 13.04 ha resuelto la información de la versión. Ahora cuando voy a example.com recibo un error 403 prohibido. Cuando sigo el error.log veo:

 [Mon Jan 13 21:03:41.464815 2014] [:error] [pid 10999:tid 3014634304] [client 127.0.0.1:35067] Attempt to invoke directory as WSGI application: /var/www/flask_dev/ 

He intentado agregar AddHandler cgi-script py a mi flask_dev.conf, pero eso tampoco parece funcionar.

¿Alguien ha recibido este tipo de error con una aplicación WSGI antes y sabe de una solución para esto?

Gracias por adelantado.

Edición 3 Todo el código fuente funciona ahora

en /var/www/flask_dev/hello.wsgi debería importar la aplicación, no el culo. En segundo lugar, no debes utilizar DocumentRoot para almacenar tus scripts. DocumentRoot es para almacenar archivos estáticos y, por lo tanto, los incluirá como archivos y nunca los ejecutará como secuencias de comandos.

Intenta usar

  WSGIScriptAlias / /var/www/flask_dev/hello.wsgi  WSGIProcessGroup hello WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all  

Revisa esta página.