So this is more a call for help than my usual blog post. In the past I have been confined to simple (well I say simple) projects that generally run on WordPress and can be easily deployed using Git and DB management, config management etc is fairly easy. Recently I’ve been working on something MUCH bigger. Although everything is stored in Git SCM I find myself struggling a little bit on how to manage caching setup, database setup and other little bits and pieces.
Now some have suggested build scripts or environment variable based stuff similar to a rails app. I still don’t know what the best thing to do is. I need to get a grip on the following:
- Database config: Obviously Dev/Staging/Live all have different databases; what’s the best way to manage the config of these so each app points the correct database? Currently my database.php is outside of SCM which seems a little stupid (In my case no authentication information is stored in here as it’s all Windows Authentication).
- Database migrations: Another tricky one, not only do I have a schema to manage which is fairly easy to do using the Cake schema tools or the CakeDC Migrations Plugin but I also have my base data that needs to be managed/synced. Just what is the best way to do this??
- Application config: This boils down to 2 things really for me. Cache settings and debug settings. Again I have this outside SCM but there must be a better way of doing it?
So my question is simple, what would you do? How exactly are we supposed to handle deployment of these more complicated applications in a multi-server environment?