Abstract
Introduction
Python based web applications can be served in several ways. You can use the old and good CGI interface, or use the more common used mod_python. FastCGI and SCGI are also an option. but most of those ways supports the WSGI interface which is the recommended way. You can learn more about each way, and the cons and pros of each, and what is wsgi in this great tutorial/article: How to use python in the web.
We’ll build a skeleton for a Python based WSGI web application hosted on Apache HTTPd. I’ve choosed WSGI over other methods to promote web application portability across a variety of web servers.
Prerequisities
- Python
- Apache HTTPd Service running and working. trim instance is better.
Setup
mod_wsgi
red-hat/fedora/centos: install mod_wsgi using:
yum install mod_wsgi
debain/ubuntu: install mod_wsgi using:
apt-get install mod_wsgi
Virtual Application
configure your httpd with:
1 2 3 4 5 | WSGIScriptAlias /myapp /var/www/myapp/myapp.wsgi <Directory /var/www/myapp> Order allow,deny Allow from all </Directory> |
WSGIScriptAlias /myapp /var/www/myapp/myapp.wsgi <Directory /var/www/myapp> Order allow,deny Allow from all </Directory>
WSGI
Create the file myapp.wsgi at ‘/var/www/myapp’ and fill it with the example from mod_wsgi documentation:
1 2 3 4 5 6 7 8 9 | def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output] |
def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
You may need to restart your apache using: service httpd restart.
Now use your browser to see the ‘Hello World’ response from your first wsgi server.
More information
- Visit the Getting Started presentation
- Read the Getting Started with WSGI good article
- WSGI Reloading Source Code – If you find the server reload is frasturating.
Happy wsgi python-ing…!
Development Specialist, Artist and Activist
Personal Website