Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been looking for a efficient and secure way of enabling multi-site capabilities to codeigniter for a while.

These two(one & two) articles I found pretty interesting, but they don't seem to offer a scalable way of doing it. Of the two, John Dennis Pedrie's(link two) method seemed to be more thought out for our purposes.

However, say you have 100, 500, or 1000 separate sites, is this method still the best to go? Ie. would having 500 separate db config files in a folder and updating them with php be the best way to go?

Another method I can see being useful is a database of config options. Update the DB and you could have another site come online. However that would require storing all the database usernames and passwords in cleartext. Can't see that going over well.

Any answers, advice, tips, or interesting thoughts?

share|improve this question
    
Why do you want to use a multitenancy approach rather than another approach? –  jeff charles Jul 9 '11 at 5:12
    
@Jeff It looks like it's the best approach for this particular web app and our team. We're small and updating and maintain multiple instances becomes cumbersome quickly. Are there other approaches that we might not know about? –  Brennan McEachran Jul 9 '11 at 19:18

1 Answer 1

Unless the db schemas are going to be different between the different sites but the codebase is going to be the same, IMO it doesn't really make sense to partition on databases but not code if you're going to need to do it for more than say 10 sites.

I think the Django framework has an interesting approach where they define site ID's in a database table where each site is associated with a different domain name and associate content with site id's (https://docs.djangoproject.com/en/1.3/ref/contrib/sites/).

What you could do I guess is figure out what would be the same and what would be different between the different sites and attach a site identifier field to any tables that would have site-specific functionality. This assumes that all sites will be using the same servers. That way you only have to deal with one database which will make deploying updates easier. Adding another site would only require inserting a database record. Authentication and authorization logic would be a little more complicated since you would need to verify that the credentials and permissions are valid for a given site but that shouldn't be too difficult.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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