Running TurboGears under Apache with mod_wsgiΒΆ

mod_wsgi is an Apache module developed by Graham Dumpleton. It allows WSGI programs to be served using the Apache web server.

This guide will outline broad steps that can be used to get a TurboGears application running under Apache via mod_wsgi.

  1. The tutorial assumes you have Apache already installed on your system. If you do not, install Apache 2.X for your platform in whatever manner makes sense.

  2. Once you have Apache installed, install mod_wsgi. Use the (excellent) installation instructions for your platform into your system’s Apache installation.

  3. Create a virtualenvironment with the specific TurboGears version your application depends on installed.

    $ virtualenv /var/tg2env
    $ /var/tg2env/bin/pip install  tg.devtools
    
  4. Activate the virtualenvironment

    $ source /var/tg2env/bin/activate
    (tg2env)$ #virtualenv now activated
    
  5. Install your TurboGears application.

    (tg2env)$ cd /var/www/myapp
    (tg2env)$ python setup.py develop
    
  6. Within the application director, create a script named app.wsgi. Give it these contents:

    APP_CONFIG = "/var/www/myapp/myapp/production.ini"
    
    #Setup logging
    import logging.config
    logging.config.fileConfig(APP_CONFIG)
    
    #Load the application
    from paste.deploy import loadapp
    application = loadapp('config:%s' % APP_CONFIG)
    
  7. Edit your Apache configuration and add some stuff.

    <VirtualHost *:80>
        ServerName www.site1.com
    
        WSGIProcessGroup www.site1.com
        WSGIDaemonProcess www.site1.com user=www-data group=www-data threads=4 python-path=/var/tg2env/lib/python2.7/site-packages
        WSGIScriptAlias / /var/www/myapp/app.wsgi
    
        #Serve static files directly without TurboGears
        Alias /images /var/www/myapp/myapp/public/images
        Alias /css /var/www/myapp/myapp/public/css
        Alias /js /var/www/myapp/myapp/public/js
    
        CustomLog logs/www.site1.com-access_log common
        ErrorLog logs/www.site1.com-error_log
    </VirtualHost>
    
  8. Restart Apache

    $ sudo apache2ctl restart
    
  9. Visit http://www.site1.com/ in a browser to access the application.

See the mod_wsgi configuration documentation for more in-depth configuration information.