wiki:TurboGearsOnSharedHostingAccount
Warning: Can't synchronize with repository "(default)" (Unsupported version control system "svn": No module named svn). Look in the Trac log for more information.

The HOWTO describes how to install TurboGears app on a shared hosting account, whereas Apache forwards HTTP requests to the CherryPy server and installation files is sandboxed to user's homedir (vs. usual system-wide setup).

it's a bit lengthy, probably need to be trimmed

CherryPy configuration

To configure Apache/Cherrypy? read  this. You'll need a port assigned to you by hoster to forward requests to.

Prepare non-root python environment

This is easy with Ian Bicking's script:

$ wget http://svn.colorstudy.com/home/ianb/non_root_python.py
$ python2.4 non_root_python.py

This copies system Python2.4 files to your ~/bin, ~/lib/python2.4 and ~/include directories. The "non-root" python executable will reside in ~/bin.

Install TurboGears itself

$ svn co http://www.turbogears.org/svn/turbogears/branches/1.0 turbogears
$ cd turbogears
$ ~/bin/python setup.py install

Note that I also had to install Kid and Cheetah from SVN; this is currently required for TG to operate properly. To verify the install try to run ~/bin/tg-admin command.

Install Turbogears application

Next step is to install your application. If you're using an egg (and I think there is no valid reason you shouldn't) it's simply a matter of running ~/bin/easy_install -s ~/bin TheApp-1.0.egg. Btw, to build an egg just run setup.py bdist_egg from within your development copy.

Configure the application

This is a matter of writing proper prod.cfg and putting it to correct place.

The settings to pay attention to are: sqlobject.dburi, server.socket_port and server.log_file. In a shared hosting setup, the socket_port and log directory to use are given by the hoster so just make sure you've specified them correctly.

When running proxied behind Apache you will also need to add the following to the setup:

[/]
base_url_filter.on = True
base_url_filter.use_x_forward_host = True

This ensures CherryPy will use "X-Forwarded-Host" header set by Apache to figure out publicly-visible address of the application.

References