Some of the information here may be outdated, please check the book instead
[edit]

Web2py Installation as Apache WSGI on Webfaction

Make available two subdomain names, one for adminstration, the other for public display:

admin.example.com
www.example.com

Create a Webfaction application of type "mod_wsgi 2.0/Python 2.5":

apachewsgi

Create two Webfaction sites:

'mysite_admin' -- https enabled; subdomain 'admin.example.com';     
application 'apachewsgi' served at '/'

'mysite' -- *not* https enabled; subdomain 'www.example.com'; 
application 'apachewsgi' served at '/'

Get the latest web2py and copy it into ~/webapps/apachewsgi/:

cd ~/repos/svn #for example
svn checkout http://web2py.googlecode.com/svn/trunk/ web2py-read-only
svn export web2py-read-only ~/webapps/apachewsgi/web2py

Edit ~/webapps/apachewsgi/apache2/conf/httpd.conf (see listing below):

In the httpd.conf file, the port number for the app is in line similar to "Listen NNNN"

Create admin password:

In ~/webapps/apachewsgi/web2py:

 python2.5 web2py -p NNNN      # where NNNN is port number, no quotes

web2py will ask you for a password, which it will then store in a file, 'parameters_NNNN.py'

From another terminal, kill web2py process according to web2py's output instructions

Start your app:

~/webapps/apachewsgi/apache2/bin/start

httpd.conf listing

LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule wsgi_module modules/mod_wsgi.so 
LoadModule alias_module modules/mod_alias.so
LoadModule access_module modules/mod_access.so
KeepAlive Off
Listen NNNN
WSGIScriptAlias / /home/[YOUR ACCOUNT]/webapps/apachewsgi/web2py/wsgihandler.py 
WSGIDaemonProcess web2py user=[YOUR ACCOUNT] group=[YOUR ACCOUNT] \
     home=/home/[YOUR ACCOUNT]/webapps/apachewsgi/web2py \      
     processes=1 maximum-requests=1000 

NameVirtualHost 127.0.0.1:NNNN
<VirtualHost 127.0.0.1:NNNN>
    ServerName www.example.com            
    DocumentRoot /home/[YOUR ACCOUNT]/webapps/apachewsgi/web2py/applications            
    <Directory />         
        Options FollowSymLinks             
        AllowOverride None             
    </Directory>             
    <Directory /home/[YOUR ACCOUNT]/webapps/apachewsgi/>         
        Options Indexes FollowSymLinks MultiViews             
        AllowOverride None             
        Order allow,deny             
        allow from all             
    </Directory>         
</VirtualHost>
<VirtualHost 127.0.0.1:NNNN>
    ServerName admin.example.com            
    DocumentRoot /home/[YOUR ACCOUNT]/webapps/apachewsgi/web2py/applications/admin          
    <Directory />         
        Options FollowSymLinks             
        AllowOverride None             
    </Directory>             
    <Directory /home/[YOUR ACCOUNT]/webapps/apachewsgi/>         
        Options Indexes FollowSymLinks MultiViews             
        AllowOverride None             
        Order allow,deny             
        allow from all             
    </Directory>         
</VirtualHost>
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \
     \"%{User-Agent}i\"" combined         
CustomLog logs/access_log combined
ServerLimit 2

particular thanks to 'johanm' for post to web2py discussion group, "mod_wsgi deployment question".

© 2008-2010 by Massimo Di Pierro - All rights reserved - Powered by web2py - design derived from a theme by the earlybird
The content of this book is released under the Artistic License 2.0 - Modified content cannot be reproduced.