Our company has developed a PHP(CakePHP) "Cloud" application that is running on our servers, now we have some customers that would like to use our service and make integrations to their local systems. The local systems are behind a firewall that won't be opened for us to access them from the "Cloud", therefore we need to deploy our system on their servers.

How to do this in a way that makes us able to:

  1. Make it independent of existing software versions on the server(might be an old PHP version installed or something similar that we are not allowed to upgrade).
  2. Update the system.
  3. Track usage of the system(we charge based on features that the user can activate, no problem on Cloud were we have access to the database)

I think that we can assume that the server will have internet access. The initial installation will be done by us via VPN or on site, alternatively we can let the customer install it if the procedur is easy enought.

We think that we can solve 2 and 3 by letting the system make requests to some kind of "licensing server" that we need to build. Is there a best practice here or maby some ready to use software?

The biggest issue for us is 1., we are looking at setting up a virtual machine(the clients will not have vmware so were talking about something like virtualbox that can be running on an exsisting OS) that the entire system with all of it dependencies will run on, here we are also looking for any best practice advice. Maby a virtual envirorment isn't a good way to go?

Any help or thoughts is appriciated!

  • could you give them a complete closed hardware solution, ie a standalone computer running your software as a web service, but with no logins, no boot from usb etc allowed. You can then accumulate all the info you want and take away the computer with the logs etc. Google did something like this with the google-mini, a computer that will spider your private network and provide searching etc. But you cannot open the box.
    – meuh
    Aug 1, 2015 at 19:49

2 Answers 2


You may want to check out Docker (like a VM image) as a way to "containerize" your deployment. That way any OS that is able to run the docker module can take your containerized content and use it the same way you would. There are numerous existing Docker modules that you could even start with which will contain php, database images etc. The only issue would be your licensing requirements and what you need to use Docker in your particular case. I am using Docker for java, database and web front ends for a client of mine.

  • Thanks for this answer! We have actually started to look into Docker images with data-only images for separating the appication from the actual data when updating the application image/container.
    – Sultanen
    Aug 5, 2015 at 9:38
  • If I can help, just let me know. If this answers your question, please mark it as answered.
    – Jason K.
    Aug 5, 2015 at 12:59

You can utilize a cloud hosting provider like Microsoft Azure, which is in no way limited to Windows VM's, they have plenty of Unix/Linux images as well as give you the ability to upload your own VM's. Amazon has similar features.

You can create virtual networks, web farms, create vpn connections, etc, manage multiple subscriptions and add users at different levels like VM Contributor and admin. https://channel9.msdn.com/azure

Once you have your images/networks set the way you want, and users still wish to have the environments in-house instead of the cloud, they can install the Azure Pack, which allows the "Azure" features to exist on a physical (or local VM) datacenter. https://technet.microsoft.com/en-us/library/Dn296435.aspx

Or just use the VM images you have and put copies up on their VLAN if they are a completely non-Microsoft shop and still want in-house.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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