There is probably an easier way.
You can do a lot of this with Bash.
Here is what your shell script might look like.
Install Script:
- Is git installed? Yes / No
- Install git
- Download latest git repo (you can host your scripts on github or bitbucket or private it)
- If you dont want to use git, just have the shell script wget (download) your zip file from your site, and unzip it.
- Check for mysql
- Install mysql
- Check for latest version
- Do an upgrade.
Once you get the app running, you can build an updater web script into your app.
Sort of like how wordpress does updates.
A new version s available.
This has a sql update script that runs, and downloads new pages.
The problem with using ESX server is taht you are locking in your clients to vmware. What about those that use Xen, or Hyper-v or OnApp or OpenVZ? Do you really want to maintain multiple vm images? And what if your client updates something custom on their server? Like sets cron jobs? Dont they lose this data if you update?
One last option is just to offer your product as a hosted "cloud" service. Might be a better alternative than dealing with client deployments. This is how things are moving. Even interspire got rid of their installed cart and moved to their hosted "big commerce" solution. It will cost you the same as your clients to host it. Maybe just offer it in the cloud, and give options to pull data in / out via api?