layout: default
The following steps were tested on:
The same steps should work in other versions of Ubuntu as well.
Note:
appname with your own project name.code.py with your own file name./var/www/webpy-app found below refers to the path to the directory contains your code.py./var/www/webpy-app/code.py is the full path to your python file.Install mod_wsgi:
sudo apt-get install libapache2-mod-wsgi
This will install a .so module in Apache's module directory:
/usr/lib/apache2/modules/mod_wsgi.so
It will also automatically configure Apache to load the mod_wsgi module upon restart. You can confirm the presence of the module in Apache's available modules directory…
/etc/apache2/mods-available/wsgi.conf
/etc/apache2/mods-available/wsgi.load
…as well as in Apache's enabled modules directory:
/etc/apache2/mods-enabled/wsgi.conf
/etc/apache2/mods-enabled/wsgi.load
Configure a website on Apache to load the mod_wsgi module. This can either be your default website, or another Virtual Host, which you can create by copying /etc/apache2/sites-available/default to something like /etc/apache2/sites-available/my-website. Add the following lines, under the DocumentRoot directive:
WSGIScriptAlias /appname /var/www/webpy-app/code.py/
AddType text/html .py
Typically, the above two lines are the only ones necessary to serve a website built with web.py. Most probably, you will additionally need to define a subdirectory in your application, from which static files will be served. In this case, add:
Alias /appname/static /var/www/webpy-app/static/
After you have finished editing your website definition, you need to enable it (in case it is not already enabled). Do:
sudo a2ensite my-website
Finally, create a sample file /var/www/webpy-app/code.py:
import web
urls = (
'/.*', 'hello',
)
class hello:
def GET(self):
return "Hello, world."
application = web.application(urls, globals()).wsgifunc()
Point your browser to 'http://yourservername/appname' to verify whether it works for you.
If you use sessions with mod_wsgi, you should change you code like below:
app = web.application(urls, globals())
curdir = os.path.dirname(__file__)
session = web.session.Session(app, web.session.DiskStore(os.path.join(curdir,'sessions')),)
application = app.wsgifunc()
For modwsgi performance, please refer to modwsgi wiki page: