I’m almost done with our custom CMS system. Now we want to install this for different websites (and more in the future), but every time I change the core files I will need to update each server/website seperatly.
What I really want is to load the core files from our server, so if I install an CMS I only define the nedded config files (on that server) and the rest is loaded from our server. This way I can pass changes in the core very simple, and only once.
How to do this, or this a completely wrong way? If so, what is the right way? Thing I need to look out for? Is it secure (without paying thousands for a https connection)?
I have completely no idea how to start or were to begin, and couldn’t find anything helpful (maybe wrong search) so everything is helpful!
Thanks in advance!
Note: My application is build using the Zend Framework
You can’t load the required files from remote on runtime (or really don’t want to ;). This problem goes down to a proper release & configuration managment where you update all of your servers. But this can mostly be done automatically.
Depending on how much time you want to spend on this mechanism there are some things you have to be aware of. The general idea is, that you have one central server which holds the releases and have all other servers check if for updates, download and install them. There are lot’s of possibilities like svn, archives, … and the check/update can be done manually at the frontend or by crons in the background. Usually you’ll update all changed files except the config files and the database as they can’t be replaced but have to be modified in a certain way (this is the place where update scripts come into place).
This could look like this:
This is an very easy to implement mechansim which holds some drawbacks like you can’t change the config-files and database. Well infact it’d be possible but quite difficult to achieve.
Maybe this could be easier with a archive-based solution:
With that approach you might be able to include update-scripts into updates to modify configs/databases.
Automatic updatedistribution is a very very complex topic and that are only two very simple approaches. There are probably very many different solutions out there and ‘selecting’ the right one is not an easy task (it does even get more complex if you have different versions of a product with dependencies 🙂 and there is no “this is the way it has to be done”.