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
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".