python - instead - Flask hello world con apache y mod_wsgi solo muestra archivos en webroot
wsgi apache (1)
en /var/www/flask_dev/hello.wsgi deberías estar importando aplicaciones no asno. En segundo lugar, no debe usar DocumentRoot para almacenar sus scripts. DocumentRoot es para almacenar archivos estáticos y por lo tanto, ciertamente los listará como archivos y nunca los ejecutará como script.
Intenta usar
WSGIScriptAlias / /var/www/flask_dev/hello.wsgi
<Directory "/var/www/flask_dev">
WSGIProcessGroup hello
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
Mira esta página.
Estoy intentando ejecutar el hello.py básico del sitio del matraz sobre apache2 usando wsgi. Aquí está 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
<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
Después de ejecutar sudo a2ensite flask_dev
y sudo service apache2 reload (or restart)
, yendo a www.example.com
simplemente da los archivos en la webroot. ~~ He comprobado el registro de errores y parece que mod_wsgi y mod_python se están iniciando. ¿Alguien sabe qué más me estoy perdiendo? ~~
Editar 1 Ahora puedo ver los mensajes del registro de errores, y parece que soy afectado por https://bugs.launchpad.net/ubuntu/+source/libapache2-mod-python/+bug/1073147 en Ubuntu 12.04.
Intentaré recompilar más tarde a la versión de Python correcta para ver si corrige el error. Por ahora, mientras se produce este error, sigo viendo 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 Actualizando a 13.04 ha resuelto la información de la versión. Ahora cuando voy a example.com obtengo un error prohibido de 403. Cuando cierro 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 archivo flask_dev.conf, pero parece que tampoco funciona.
Alguien ha recibido este tipo de error con una aplicación WSGI antes y sabe de una solución para esto?
Gracias por adelantado.
Editar 3 Todo el código fuente funciona ahora