I know 'multi site' installation has been re-explained 99 times, but from what I could tell, the multi-site was only applying to cases where there was not a real, separate domain root for each domain?

Here's what we have:
* Mac OS X Server hosting 3 unique domains (same IP addr):
/Library/Webserver/Documents = root directory for www.ex1.com
/Library/Webserver/ex2root = root directory for www.ex2.com
/Library/Webserver/ex3root = root directory for www.ex3.com

Is there a single code base installation that allows us to 'activate' drupal for each of those sites, or do we have to do separate installs (and maintainance) for each site separately?

We don't need to share tables or anything fancy -- the sites have nothing to do with each other.

My preference would be to have www.ex1.com point to drupal for ex1.com (eg, no subpath required) since we would use this wonderful software for our primary site for each domain, but have radically different look/feel/users etc.

Thanks in advance!

Comments

williej’s picture

If a single code base install requires that root folders for one site be "inside" the root of another site, we can easily do that, as long as the sites are logically distinct. If that's a requirement, can someone tell me where I'd move my "ex2root" and "ex3root" to make the single-install work properly for those completely distinct domain names?

in other words, we have no hard and fast reason to keep ex2root and ex3root 'parallel' to the default site's Documents folder, it just happens to be that way today.

styro’s picture

Multisite will work fine if you just give all the virtual hosts the same root directory.

But, why do you need multisite? Upgrades would be smoother with separate sites. I see a lot of new users having trouble with multisite setups when they don't really need to use it.

--
Anton
New to Drupal? | Forum posting tips | Troubleshooting FAQ
Example Knowledge Base built using Drupal

williej’s picture

Thank you. Yes but we need different root directories, so that's really the crux of what I was asking. The sites are 100% distinct as far as other apps we might run on one not the others, who has authoring access etc. They are not just running Drupal.

So for that config, where they really are distinct sites with distinct root folders, is a single-install possible?

Gary Feldman’s picture

Two thoughts come to mind. One is to turn on FollowSymLinks in the top level directory, and have each site use symlinks to the common Drupal code.

The other is to have each virtual host point to the same directory, and Apache directives, Drupal settings, and maybe rewrite rules to keep them as separate sites. I've done this on a test site, in a situation where I wasn't worried about access to files belong to the other web site, but I don't intend to use this for production. The problem with this is managing access control to those other non-Drupal files. That would probably be easier to do within Drupal, depending on how those other applications work, but you ought to be able to do it with clever use of access control with the Location directive (assuming Apache).

But it's not really clear that it's worth the trouble with only three sites. Disk space isn't all that expensive, and it's not that hard to set something up to copy a master Drupal installation into the three separate trees. Plus, this basically precludes you from doing any-site specific customization. It might also be harder to manage themes, depending upon how you use them.

Gary Feldman

styro’s picture

You want to run multiple Drupal instances on a server, but:

  • They will be separate sites on different domains
  • They won't share databases
  • They won't share root directories
  • They could have very different configurations
  • They would each be controlled by different people
  • There could eventually be much more than the example 3 sites

The only real advantage you are gaining would be to not have to upload multiple sets of files during an upgrade or addition of new modules. But you would still need to log in to each site individually to enable modules or change settings or run update.php etc.

The actual uploading of files is the easy bit, and can easily be scripted and even fed from a version control system.

If you use multisite for your scenario, you will have one set of core files but multiple databases. When it comes to upgrade time using multisite will extend the average downtime between each sites upgrade of its files and the upgrade of its database. You've also hampered your ability to roll back one site to the old version if that one site gets broken during the upgrade. Keeping them separate reduces dependencies between each other and allows the you much more freedom in dealing with each site and reduces the number of single points of failure.

I think for your situation the downsides outweight the upsides.

--
Anton
New to Drupal? | Forum posting tips | Troubleshooting FAQ
Example Knowledge Base built using Drupal

erdemkose’s picture

You can try this on your local machine.

install drupal on localhost
create directory sites/127.0.0.1 in your installation directory and copy your settings.php here.
access your site via http://localhost/ and http://127.0.0.1.

I tried it this way and it works. Try uncommenting configuration array in the settings.php to see the difference in a quick way.

--------------------------------------------------------------
http://erdemkose.com/

williej’s picture

I'm confused about whether you mean literally "localhost" and "127.0.0.1" or if you mean for me to plug in other domain names there.

And what about the actual 3 different site root folders for each of the 3 domains? Where would they go, or how would drupal "find" them?

erdemkose’s picture

I MEAN
you can use different domain names with the same code base. Two different domain name [localhost and 127.0.0.1] shares the same code but different settings.php. http://localhost and http://127.0.0.1 point to the same webroot. I used these hostnames because you can test it on your local development machine.

webroot/
webroot/includes/
webroot/......
webroot/......
webroot/sites/
webroot/sites/default/settings.php
webroot/sites/127.0.0.1/settings.php
webroot/sites/third_domain_name.org/settings.php
webroot/index.php

BUT
I don't think you can use 3 different site root with the same code base. You should install Drupal for each site. Do you really need to have 3 different site root?

--------------------------------------------------------------
http://erdemkose.com/

williej’s picture

Ease of maintainance, really. I want the feature set, available themes, moduels installed ot be the same for all NN domains.

Since the real number is higher than 3 it would be cool if every time I add a module I did not have to do it 7 or 8 times. Ditto for updating Drupal, adding a new theme option, etc., etc.

There are some types of apps I think that once installed are active for all sites hosted (even though the domains hosted all have their own root), and hoped there'd be a way to do that for Drupal.

cog.rusty’s picture

About module maintenance, a Drupal multisite gives you the option to install modules either under a common modules directory where they can be used by all installations or under separate per site directories where they are visible only by one site. And you can mix and match as it suits you best.

cog.rusty’s picture

You ask "what about the actual 3 different site root folders for each of the 3 domains? Where would they go, or how would drupal "find" them?"

Actually drupal does not care if they are not real directories. All these domain should lead to one and the same path on the host, where a single Drupal installation exists. Drupal figures it out from the url which the user typed to go there, and sends the request to the right database or files directories for each site. So:

- site1.com is a real www root and exists on /domains/www, and drupal is installed there.
- site2.com leads to the same path, /domains/www (either by dns setup or is just a symlink). If it is a Drupal multisite, It cannot have its own real web directory.
- Each one of 'site1' and 'site2' has its own configuration in Drupal. It has its own files directories and its database. But you have to arrange that through Drupal, in Drupal's way.

Drupal multisites can't have their own real web directories. This is the whole idea. If you intended to use 'site2.com/someplace' for other things outside Drupal, it is possible to make Drupal leave it alone and to use .htaccess rules to make the visitors who ask specifically for this URL (or click on a link leading to this URL) to go to a directory which you have set aside.

Success’s picture

1Q) I want Domain B, C & D..... to be under a multi site config in Domain A. I want each site to have their own vbulletin. Where do I install vbulletin for Domain B? Is this possible? How to do it?

2Q) Can the files directory for Domain B be inside "DomainB.com/files/" instead of "DomainA.com/sites/DomainB.com/files" ?

cog.rusty’s picture

1Q) If vbulletin supports multiple domains from one installation then it is easy. If it does not, you still can, but not very cleanly.

In a Drupal multisite, domains A, B, C and D will correspond to the same real webroot file system directory, let's call it 'public_html'. This directory can have only one subdirectory (or symlink) called vbulletin.

If one vbulletin installation can serve multiple domains then good. If it cannot, you will need to vary the subdirectory name and install more copies of vbulletin in different subdirectories for each domain (like 'public_html/vbulletin' for domain A, 'public_html/vb' for domain B, 'public_html/forum' for domain C etc). Ugly and susceptible to mistakes.

2Q) No, not all under 'files', but you can use different shortened paths.

If it is a multisite, you can't put the domains' files under DomainA.com/files and DomainB.com/files because these will be the same real directory and the files would get mixed up. But you can put them, for example, under DomainA.com/files/dA and DomainB/files/dB.