I've never really worked on a project that needed version control or development environments that were any fancier than copying a local version of the files to the remote server when I was ready. But now I'm setting up something that really does need at least three environments (development, testing, and production) with the ability to collaborate among multiple developers and to push from one environment to the others, including a database.
How would such updates normally be handled with minimal (if any) downtime, especially when the database structure itself may change from one update to the next? What tools and workflows would typically be used to ensure the process goes smoothly?
Have been looking into a few options, but feeling kind of intimidated at the moment as the learning curve seems steeper than I expected it to be.