We have a web application which contains a bunch of content that the system operator can change (e.g. news and events). Occasionally we publish new versions of the software
Keep everything in the DB, and give every transaction to the DB a timestamp. that way you can keep standard DB backups and load the site content at whatever date you want if the worst happens.