Flask hello world za pomocą apache i mod_wsgi pokazuje tylko pliki w webroot

Próbuję uruchomić podstawowy hello.py z witryny kolby nad apache2 za pomocą wsgi. Oto jak wygląda mój kod:

/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

<VirtualHost *:80>
    # 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=<myuser> group=<myusersgroup> threads=5 python-path=/var/www/flask_dev

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

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #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
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

/ etc / hosts

127.0.0.1    example.com

Po tym jak ucieknęsudo a2ensite flask_dev isudo service apache2 reload (or restart), zamierzamwww.example.com po prostu daje pliki w katalogu webroot. ~~ Sprawdziłem dziennik błędów i wygląda na to, że mod_wsgi i mod_python się uruchamiają. Czy ktoś wie, czego mi brakuje? ~~

Edytuj 1 Teraz mogę zobaczyć wiadomości z dziennika błędów i wygląda na to, że jestem pod wpływemhttps://bugs.launchpad.net/ubuntu/+source/libapache2-mod-python/+bug/1073147 w Ubuntu 12.04.

Spróbuję ponownie skompilować później do poprawnej wersji Pythona, aby sprawdzić, czy to naprawia błąd. Na razie, podczas gdy ten błąd występuje, nadal widzę pliki wymienione podczas odwiedzania example.com.

error.log

[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

Edytuj 2 Aktualizacja do 13.04 rozwiązała informacje o wersji. Teraz, kiedy idę do example.com, otrzymuję 403 zabroniony błąd. Kiedy ogłaszam błąd.log, widzę:

[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/

Próbowałem dodaćAddHandler cgi-script py do mojego flask_dev.conf, ale to też nie działa.

Czy ktoś wcześniej popełnił taki błąd w aplikacji WSGI i zna obejście tego problemu?

Z góry dziękuję.

Edytuj 3 Cały kod źródłowy działa teraz

questionAnswers(1)

yourAnswerToTheQuestion