Web2py Installation as Apache WSGI on Webfaction

[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" -- http://groups.google.com/group/web2py/b … 12fcb8c94b