Tell me more ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

I want to develop a django webapp that would get deployed at the customer site. The web app would run in a private cloud environment (ESX server here) of the customer. My web app would use a mysql database. The problem is I would not have direct access/control of the webapp.

My question is, how to package such a web application with it's database and other entities so that it's easier to upgrade/update the app and it's database in future. Right now the idea I have is that I would provide a vm with the django app and database setup. The customer can just start the vm and he would have the webapp running. What are the other options I should consider?

share|improve this question
Read about Fabric, or for a more professional solution, consider using Vagrant with Puppet or Chef – YardenST Nov 24 '12 at 10:33

1 Answer

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:

  1. Is git installed? Yes / No
  2. Install git
  3. Download latest git repo (you can host your scripts on github or bitbucket or private it)
  4. If you dont want to use git, just have the shell script wget (download) your zip file from your site, and unzip it.
  5. Check for mysql
  6. Install mysql
  7. Check for latest version
  8. 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?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.