|Shared System - same files, multiple installations|
Sharing files among multiple projects - easiest way to maintain
| 9:51 am on Oct 10, 2008 (gmt 0)|
Just a question to anyone who deals with multiple 'installations' of their own systems (lets say a CMS)
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)
| 12:21 pm on Oct 10, 2008 (gmt 0)|
You can share the same include files but the installations would need to be in different folders. I.E. folder1 folder2. Then within those files you would need to edit all linking files to a common folder I.E. somefolder/extensions
| 3:23 pm on Oct 10, 2008 (gmt 0)|
I would send a cron script along the software, So after a certain period it checks your Dev server for any updates in any of your software file. If you flag an update it will download that file to your client's server.
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]
| 3:37 pm on Oct 10, 2008 (gmt 0)|
That sounds like a pretty good idea - on the case :)
| 7:28 am on Oct 11, 2008 (gmt 0)|
I think the ideal case is to host the software yourself, allowing you to have a single copy which everybody runs off of. You'd use something like
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
| 8:23 pm on Oct 13, 2008 (gmt 0)|
I'll be using quality hosting accounts which will allow upgrades/extra software to be installed. I'm not shipping my system to users on a shared platform, they are all paying for VPS/dedicated servers to run the software.
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.