Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
45 lines (33 sloc) 1.62 KB
layout title
default
CGI deployment on Apache

CGI deployment on Apache

Here are the simple steps needed to create and run an web.py application.

  • Install web.py and flups

  • Create the application as documented

      if __name__ == "__main__":
          web.run(urls, globals())
    

For our example, let it be named app.py, located in /www/app and we need it accessible as http://server/app/app.py.

  • Configure Apache (version 2.2 in this example)

      ScriptAlias /app "/www/app/"
      <Directory "/www/app/">
              Options +ExecCGI +FollowSymLinks
              Order allow,deny
              Allow from all
      </Directory>
    

That's it. Your application is accessible via http://server/app/app.py/. Additional URLs handled by the application are added to the end of the URL, for examples http://server/app/app.py/myurl.

  • .htaccess configuration

            Options +ExecCGI
            AddHandler cgi-script .py
            DirectoryIndex index.py
            <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteBase /
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteCond %{REQUEST_URI} !^/favicon.ico$
                RewriteCond %{REQUEST_URI} !^(/.*)+index.py/
                RewriteRule ^(.*)$ index.py/$1 [PT]
            </IfModule>
    

Here it is assumed that your application is called index.py. The above htaccess checks if some static file/directory exists failing which it routes the data to your index.py. Change the Rewrite Base to a sub-directory if needed.