Flask is a Python web framework that is simple to use and ideal for creating web APIs. Apache is a highly customizable web server that can run your Flask app securely. This blog post will guide you through creating a Flask web API that captures and returns information it can see about the user and deploying it using Apache.
Step 1: Setting Up the Flask App
First, let's create a simple Flask app that will capture and display user information.
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['GET'])
def getUserInfo():
userInfo = {
"remoteAddr": request.remote_addr,
"userAgent": request.headers.get("User-Agent"),
"acceptLanguage": request.headers.get("Accept-Language")
}
return userInfo
if __name__ == "__main__":
app.run(debug=True)
Step 2: Test Locally
Run your Flask app and navigate to http://localhost:5000
in your web browser. You should see a JSON object containing information like your IP address, User-Agent, and accepted languages.
Step 3: Prepare for Apache Deployment
- Save the Flask app in a folder called
MyFlaskApp
. - Inside
MyFlaskApp
, create a file calledmyFlaskApp.wsgi
:
import sys
sys.path.insert(0, '/path/to/MyFlaskApp')
from yourFlaskFileName import app as application
Replace /path/to/MyFlaskApp
and yourFlaskFileName
with appropriate values.
Step 4: Apache Configuration
Open the Apache configuration file (httpd.conf
or a site-specific configuration file).
- Make sure the following lines are uncommented:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
- Add the following ProxyPass configuration:
<VirtualHost *:80>
ServerName yourDomainOrIP
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
WSGIDaemonProcess MyFlaskApp threads=5
WSGIScriptAlias / /path/to/MyFlaskApp/myFlaskApp.wsgi
<Directory /path/to/MyFlaskApp>
WSGIProcessGroup MyFlaskApp
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
</VirtualHost>
Replace yourDomainOrIP
and /path/to/MyFlaskApp
with appropriate values.
Step 5: Restart Apache
Restart Apache to apply the changes.
sudo systemctl restart apache2 # For Ubuntu
sudo apachectl restart # For macOS and other UNIX
You've successfully created a Flask web API that captures user information and deployed it using Apache. Now when you navigate to http://yourDomainOrIP
, you will see the same user information as before, but served through Apache.
No comments:
Post a Comment