I want to develop a Django web application that would get deployed at the customer site. The web application would run in a private cloud environment (ESX server here) of the customer. My web application would use a MySQL database. The problem is, I would not have direct access or control of the web application.
My question is, how to package such a web application with it's database and other entities so that it's easier to upgrade and update the application and it's database in future. Right now the idea I have is that I would provide a virtual machine with the Django application and database setup. The customer can just start the virtual machine and he would have the web application running. What are the other options I should consider?