Version control your dev app, while keeping a central mercurial version with stable versions.
Modify your code, test, test, and test some more. When OK, commit with a tag.
On your production environment, keep a checkout of the repository, and just run an hg pull && hg update to get the latest working version of web2py. Then restart apache.
Be sure to add these to .hgignore
syntax: glob *.pyc *~ syntax: regexp ^databases/ ^errors/ ^sessions/ ^cache/
And use SSH for push/pull.