Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deal with mutliple sites that access one 'brain'?

Generally, my development has only covered small to medium size companies and e commerce sites.

My next project will encompass say 30 sites - however, they'll have about 95% in common with each other. I want them to have 1 'brain' that means I can roll out changes, updates to the framework etc only once.

I wonder if the Stack Overflow family of sites do this (superuser, stackoverflow, serverfault etc).

My languages/platforms of choice are PHP 5.3, MySQL 5 and the Kohana Framework.

The brain should have

  • 1 admin system that can handle every site
  • all templates exist in the brain - however they have placeholders, for example, title, logo, etc
  • A way so I can roll out any update to the global templates will automatically filter out to all the other sites.

I realise this would put a lot of stress on the brain, so I'd have to use server side caching a lot.

How would I have each domain access the brain, so for example:

http://www.mysite2.com/products/something

silently accessed http://www.mothership.com/mysite2/products/something

And would that be the best way to do it? Do you have any tips? Am I on the right track?

Feel free to ask me any more specifics.

like image 305
alex Avatar asked Aug 25 '09 04:08

alex


1 Answers

The easiest way to do this is with virtual hosting. Basically you run all the sites on one machine. The one machine has an Apache config that serves all the sites.

If the sites are more similar than different then just point all the sites to the one directory. The PHP files can detect what site they're serving. You can provide a different header and footer for each site to handle the look and feel. You can also restrict certain pages this way.

If the sites are more different than similar then point each to a different directory and have pages relevant to those sites in each directory.

For common functionality you could use something like mod_rewrite to map URLs on the different sites to the same script or you could have PHP scripts at each location that include/require common functionality.

Basically there are lots of options. Your goal should be make the site easy to maintain and keep code duplication to an absolute minimum.

As requested, suggested reading:

  • Apache virtual hosting config: this is a complicated topic though so you might want to take it to Serverfault to get to the dark depths;
  • Setting Up A Virtual Host in Apache; and
  • PHP Tricks: How To Handle Multiple Domains.
like image 107
cletus Avatar answered Oct 18 '22 09:10

cletus