I recently configured a complete Pylons + PostgreSQL environment for a customer. The operating system was (of course) Ubuntu Hardy. The system included the use of Simpycity and WSGI. Although I could never done it without the Pylons documentation, I found that it was unnecessary complicated for those who just want to get it done. These are the steps I took:
Install some dependencies: The use of apt-get here is wonderful because I didn't even have apache2 installed yet.
jd@hardy:~$ sudo apt-get install python-dev python-setuptools \ python-psycopg2 libapache2-mod-wsgi jd@hardy:~$ sudo easy_install pylons jd@hardy:~$ sudo easy_install genshi
Set up a generic location for python egg cache:
jd@hardy:~$ sudo mkdir /home/pylons jd@hardy:~$ sudo chgrp www-data /home/pylons jd@hardy:~$ sudo chmod 770 /home/pylons
Enable mod-wsgi
jd@hardy:~$ cd /etc/apache2/mods-enabled jd@hardy:/etc/apache2/mods-enabled$ sudo ln -sf ../mods-available/mod-wsgi.* .
Initialize your HelloWorld app
jd@hardy:~$ mkdir www jd@hardy:~$ cd /var/www; ln -sf /home/jd/www jd jd@hardy:~$ cd jd jd@hardy:~$ paster create -t pylons helloworld Selected and implied templates: Pylons#pylons Pylons application template Variables: egg: helloworld package: helloworld project: helloworld Enter template_engine (mako/genshi/jinja/etc: Template language) ['mako']: genshi Enter sqlalchemy (True/False: Include SQLAlchemy 0.4 configuration) [False]: Enter google_app_engine (True/False: Setup default appropriate for Google App Engine) [False]: Creating template pylons Creating directory ./helloworld Recursing into +package+ [...]
Notice the choice of genshi as the template language.
Configure your wsgi handler
jd@hardy:~$ mkdir ~/etc jd@hardy:~$ cd etc; joe helloworld.wsgi
The helloworld.wsgi looks like this
import os, sys sys.path.append('/home/jd/www/helloworld') os.environ['PYTHON_EGG_CACHE'] = '/home/pylons' from paste.deploy import loadapp application = loadapp('config:/home/jd/www/helloworld/development.ini')
Edit your 000-default file
jd@hardy:~$ sudo joe /etc/apache2/sites-enabled/000-default
Add your WSGIScriptAlias
WSGIScriptAlias /jd/helloworld /home/jd/etc/helloworld.wsgi
Restart Apache
jd@hardy:~$ sudo /etc/init.d/apache2 restart
You should be good to go!