Skip to content

Commit

Permalink
Merge pull request webpy#28 from marios-zindilis/master
Browse files Browse the repository at this point in the history
Added another deployment case.
  • Loading branch information
aaronsw committed Jul 30, 2012
2 parents 4391615 + f252d0f commit e5b1838
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 1 deletion.
3 changes: 2 additions & 1 deletion cookbook/index.md
Expand Up @@ -85,7 +85,8 @@ _Other languages:_ [简体中文](/cookbook/index.zh-cn) | [日本語](/cookbook
* [Fastcgi deployment through Apache](/cookbook/fastcgi-apache)
* [CGI deployment through Apache](/cookbook/cgi-apache)
* mod_python deployment through Apache (requested)
* [mod_wsgi deployment through Apache](/cookbook/mod_wsgi-apache )
* [mod_wsgi deployment through Apache on Red Hat](/cookbook/mod_wsgi-apache)
* [mod_wsgi deployment through Apache on Ubuntu](/cookbook/mod_wsgi-apache-ubuntu)
* [mod_wsgi deployment through Nginx](/cookbook/mod_wsgi-nginx )
* [Fastcgi deployment through Nginx](/cookbook/fastcgi-nginx)
* [PyISAPIe deployment through IIS7/IIS6](/cookbook/iis7_iis6_windows_pyisapie)
Expand Down
84 changes: 84 additions & 0 deletions cookbook/mod_wsgi-apache-ubuntu.md
@@ -0,0 +1,84 @@
---
layout: default
title: Webpy + Apache with mod_wsgi on Ubuntu
---

# Webpy + Apache with mod_wsgi on Ubuntu

The following steps were tested on:

1. Ubuntu 10.04, with Apache 2.2.16 and mod_wsgi 3.2-2, and
2. Ubuntu 12.04, with Apache 2.2.22 and mod_wsgi 3.3-4.

The same steps should work in other versions of Ubuntu as well.

Note:

* You may replace `appname` with your own project name.
* You may replace `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.

### Steps:

1. 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
2. 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
3. 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()

4. Point your browser to 'http://your_server_name/appname' to verify whether it works for you.

### Note: mod_wsgi + sessions

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()

### mod_wsgi performance:
For mod_wsgi performance, please refer to mod_wsgi wiki page:

<http://code.google.com/p/modwsgi/wiki/PerformanceEstimates>

0 comments on commit e5b1838

Please sign in to comment.