We will use a simple Flask application that serves a simple Hello World message for all routes. As mentioned before, this setup is executed on CentOs. The steps are:
Go to /var/www - the www_root of Apache server, and create the project directory.
To have a runnable Flask app, we need to create two files: run.py and app.py inside the app folder. The files are structured as below:
Where run.py is responsible to bootstrap the Flask app defined in the app directory.
app/init.py file contents
run.py file contents
Test the Flask App
We have the test application, now let's start it to see something on the screen. First, we need to create and activate the virtual environment.
At this point, we will run the next commands inside the VENV. Let's install Flask
To run, a Flask application require FLASK_APP environment variable.
Apache Configuration
To execute a Flask application under the Apache HTTP server we need to bridge our application to the Apache engine using the mod_wsgi module. For this we need to create a new file wsgi.py inside our project folder:
wsgi.py file contents
The next step is to configure Apache to serve the app and use this wsgi loader. The following settings should be added to the httpd.conf. On CentOS the file location is /etc/httpd/conf/httpd.conf
Close and save the file and restart Apache to load the new settings.
Our Flask app should be served by the Apache HTTP server. We can test the deploy by using lynx command:
#!/usr/bin/env python
import sys
import site
site.addsitedir('/var/www/hitme/lib/python3.6/site-packages')
sys.path.insert(0, '/var/www/hitme')
from app import app as application