I've implemented such a system for ACS 3.4 (Oracle). My approach was simply to create a sites
table (with a separate table for mapping hostnames to sites).
I then added the site_id
column to a number of key tables, notable users
. (ACS 3.4 doesn't have an acs_objects
table or a similar mechanism.) Plus a bunch of UI to create and manage the sites, changes to the request processor to set ad_conn site_id
, and the removal or changes of some unique contraints, e.g. on users.email
(this would be parties.email
in OpenACS).
It wasn't the most challenging thing I've accomplished, but it does require some significant changes in the request processor that were sometimes difficult to debug.
All of this was done for an app where we wanted to run a real ASP, i.e. with hundreds of sites.