I am trying to configure Apache to run my sample Flask application and I am running into an issue which I am unable to resolve. Here are the steps I followed (all as root user to avoid any permissions issue):
- Installed httpd on CentOS (yum install httpd)
- Installed mod_wsgi using pip (yum install mod_wsgi)
- Created a VirtualEnv under /var/www/FlaskApp/
- Installed Flask inside VirtualEnv (pip install Flask)
- Created a sample application under /var/www/FlaskApp/app.py
- Created a wsgi File under /var/www/FlaskApp/wsgi.py
- Configured VirtualHost on Apache (httpd.conf)
- Restarted Apache
wsgi file:
activate_this = '/var/www/FlaskApp/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import sys
import site
site.addsitedir('/var/www/FlaskApp/venv/lib/python2.7/site-packages')
site.addsitedir('/var/www/FlaskApp/venv/lib64/python2.7/site-packages')
sys.path.insert(0, '/var/www')
from FlaskApp import app as application
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
httpd.conf:
<VirtualHost *:80>
ServerName localhost
WSGIDaemonProcess FlaskApp user=ec2-user group=ec2-user threads=2
WSGIScriptAlias / /var/www/FlaskApp/wsgi.py
<Directory /var/www/FlaskApp>
Allow from all
</Directory>
</VirtualHost>
Directory Structure: (/var/www/FlaskApp/)
-rw-r--r-- 1 root root 154 Dec 8 23:04 app.py
drwxr-xr-x 7 root root 4096 Dec 8 23:11 venv
-rw-r--r-- 1 root root 0 Dec 8 23:36 __init__.py
-rw-r--r-- 1 root root 356 Dec 8 23:41 wsgi.py
Error in httpd error_log:
Apache/2.2.34 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.9 configured -- resuming normal operations
[client 127.0.0.1] mod_wsgi (pid=15119): Target WSGI script '/var/www/FlaskApp/wsgi.py' cannot be loaded as Python module.
[client 127.0.0.1] mod_wsgi (pid=15119): Exception occurred processing WSGI script '/var/www/FlaskApp/wsgi.py'.
[client 127.0.0.1] Traceback (most recent call last):
[client 127.0.0.1] File "/var/www/FlaskApp/wsgi.py", line 12, in <module>
[client 127.0.0.1] from FlaskApp import app as application
[client 127.0.0.1] File "/var/www/FlaskApp/app.py", line 1, in <module>
[client 127.0.0.1] from flask import Flask
[client 127.0.0.1] File "/var/www/FlaskApp/venv/lib/python2.7/site-packages/flask/__init__.py", line 16, in <module>
[client 127.0.0.1] from werkzeug.exceptions import abort
[client 127.0.0.1] File "/var/www/FlaskApp/venv/lib/python2.7/site-packages/werkzeug/__init__.py", line 32
[client 127.0.0.1] self._origin = {item: mod for mod, items in available.items() for item in items}
[client 127.0.0.1] ^
[client 127.0.0.1] SyntaxError: invalid syntax
Can someone please help me fix this issue? Thanks!