Forum Moderators: coopster
Up until now, I haven't really had the need to - but recently have developed quite a nice CMS (which has around 50 core files) and people are interested in licensing. I'm stuck on the theory/practise behind maintaining various versions/installations of the system over multiple a) ftp accounts b) servers - automatically.
My main question : is there a solution which manages this kind of operation already, or do the installations have to be located on the same server (sharing say a common directory of include files)
And hence whenever you update your Dev server then after a short period all your clients will be updated automatically as well.
I mean your CMS, when i say software
[edited by: Anyango at 3:24 pm (utc) on Oct. 10, 2008]
php_value auto_prepend_file "/home/bob/site-conf.php" in the appropriate virtualhost in httpd.conf to set the necessary configuration parameters. But your customers may be looking for something a little more under their control. The next best thing would be using a revision control system (darcs, svn, git, or some other--it doesn't really matter which, so long as it can be installed on your client's servers). If you aren't using one already, you should be!
An RCS means you can, much like Anyango suggested, have a cron job which does 'svn update' or 'darcs pull' or 'appropriate-command-for-your-rcs'. Unlike blindly downloading updated files, use of an RCS is much less likely to clobber your users' local changes.
But that might not work, if your users are on normal shared-hosting accounts. In which case, the next option would be rsync. While it would clobber any of your users' local changes, it only downloads changes to files so tends towards being pretty light on bandwidth for updates.
If that doesn't work, tell your users to get better hosting accounts. :P
Will look at the RCSs you recommended - as I mentioned, have a central repository to be syncronised, but also want to edit my clients files (installation files) locally and it be syncronised to their web server(s) automatically.