Apache2 Wsgi Example - NucleaPeon/easy-wsgi GitHub Wiki
<VirtualHost *:80>
WSGIScriptAlias / /var/www/easy-wsgi/easy.wsgi
ServerName localhost
ServerAdmin [email protected]
DocumentRoot /var/www/
<Directory /var/www>
Order allow,deny
Allow from all
</directory>
<Directory /var/www/scripts/>
Options +ExecCGI
AddHandler cgi-script .py
Order allow,deny
Allow from all
</directory>
</virtualhost>
This file should be written at /etc/apache2/sites-available/default or write your own file at the sites-available directory and disable the default apache2 default page by running these commands as root:
a2dissite default a2ensite [name of your site] /etc/init.d/apache2 restart
-
a2ensite: Enable apache site found in sites-available (it will symlink it to sites-enabled/ directory) -
a2dissite: Disables apache site found in sites-enabled (removes symlink)
a2enmod and a2dismod which handle modules. Installation should automatically enable wsgi, but if not, run the following command:
a2enmod wsgi
Once you have the file written and enabled, understand the following lines:
WSGIScriptAlias / /var/www/easy-wsgi/easy.wsgi
- We are setting the root of the website to the
.wsgifile, which contains the python->html parsing - The path to the wsgi file links to the easy.wsgi from easy-wsgi.
In the event you want to use a simple wsgi file, copy the following code into any file with the extension .wsgi and point the WSGIScriptAlias line in apache to it.
#!/usr/bin/env python
def application(environ, start_response):
status = '200 OK'
output = open('/var/www/index.html', 'r').read()
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
This code will display the index.html page using wsgi (but none of the python functionality).
However, as it is, it will display it in plain text. This is desirable if you are returning data to parse in your web application. Otherwise, change the Content-type response_headers attribute to 'text/html' and it should display as expected.
The script directory points to the folder containing python runnable scripts.
- You can have multiple script directories
Options +ExecCGI and AddHandler cgi-script .py
It should be self-explanatory, but it means that we are allowing python scripts to be executed in the specified.
That's it for the apache configuration.