Forum OpenACS Development: Re: Multiple DNS and subsites

Hmm.. It looks like something is broken with the cookies. I'm logged as an admin in main site (on my case); When on a hosted node, the login template shows that I'm not logged in, yet /admin/ still shows the admin menu. Looks like some debugging is necessary before it will work in a way other than serving static content.

The server was restarted. Nevertheless I did not see the expected result.

Hence, the result is to have eventeasy.iurix.com virtually assigned to its rootdir /, when in fact it's pointed to http://iurix.com/eventeasy/. All of them under the very same umbrella: Mainsite. That's why they are accessible across different DNS'es and the same subsite "/instance"

Although it's too risky and resource consuming, another option would be to start one AOLSERVER instance to every DNS. Then a different config file to every instance pointed to the same homedir and database.

The solution seems a task for a proxy server but not entirely. I already set up in the Nginx, server settings, to the DNS http://eventeasy.iurix.com to redirect to http://iurix.com/eventeasy/
But, It seems the solution is one step further, in the application level. It requires something similar to example:

The user access eventeasy.iurix.com, OACS core notices the DNS is within hostnode's table, that the triple (eventeasy.iurix.com, 9589839, /eventeasy/)

OACS serves the entire subsite to the user as if it is /

In the worst scenario it would impact url's structure, and that means a core change.

ps, Know that host-node mapping tends to be unstable between releases. It requires extra time to periodically test and maintain between upgrades, because it is rarely tested before new releases (and apparently rarely used);

In addition to session issues, acs-core changes tend to break templating and some underlying ad_conn behavior used to generate forms, for example.

The right way to aim for a "stable" host-node mapping is to add tests to the regression test suite (after sorting out, what in detail is expected or not). The host-node mapping is (and was since ever) very limited, but it seems useful as it is for several sites.... but actually, i am not aware of site using it.

A much more general virtual hosting approach is available in NaviServer (run multiple servers from a single nsd process, which might or might not have the same blueprints), but that approach is not integrated with OpenACS, since in OpenACS we try to keep AOLserver compatibility.

All releases of OpenACS are tested thoroughly (regression test, OpenACS installation tests, DotLRN, frequently used packages, ...). In addition, OpenACS.org is running as close as possible on the HEAD release (currently the newest version of the oacs-5-9 branch), so on the 70 packages in use on OpenACS.org, bugs are earlier detected.

If someone finds a bug (in templating, core, ...) please submit a proper bug report, where this issue can be addressed. I am not aware of any changed "ad_conn behavior used to generate forms". Such changes would affect openacs.org substantially. Vague and nebulous statements are not constructive and do not help.

I'm sorry; I should have provided more context for my comments about the unstable nature of ad_conn in context of host-node mapping:

Since Uri is using aolserver 4.5, I mentioned our local experience with using host-node mapping with aolserver 4.5 --not naviserver.

site_node::conn_url was developed (in 2009 and submitted to acs-core) in order to work around the inconsistent behavior of ad_conn. It was meant to provide a consistent url depending on if it is called from a main site or when called from a host-node. However, changes in core dependencies caused it to break soon after also. A fix was again provided that worked locally, but it again broke on next release. iirc. CVS browser highlights some of the history and forum discussion on it.

Part of the issue had to do with inconsistent view of the purposes of some of the underlying code between core developers.

The core and maintenance process has matured significantly since then. I'm sure a re-examination and development of regression tests will stabilize the feature into something quite useful. I'll file a bug/suggestion shortly.

@Gustaf,

Yes. Regression tests should be added at some point to stabilize feature(s). I was going to re-visit this and provide regression tests with bug report/suggestion; Alas regression tests are a few months away still.

That's precisely what I'm trying to achieve. To map a domain name (i.e. eventeasy.iurix.com) to a subsite (i.e. /eventeasy), serving the subsite as in eventeasy.iurix.com/ , using a unique OpenACS instance,

The ideal is to not need different AOLServer settings, neither separated OpenACS instances.

p.s. I don't know if that is even possible in OpenACS, or even if it is its responsability to do so. But I can foresee this new feature as a parameter of the acs-subsite (/shared/parameters?...), i.e. DomainNameMapping

@Gustaff,

Good to know about Naviserver's virtual approach. Actually I'm thinking to move from AOLServer 4.5 to NaviServer soon. I already have a box runnig it. No problems so far.

@Benjamin,
I agree with Gustaff. Changes within ad_proc ad_conn and templating would have substancial impacts in OpenACS core and even non-core packages. In fact OpenACS is one oif the most stable framework available and there are reasons for that: 1. robust datamodel, 2. well implemented source code TCL and TCLO scripts, 3. regression test, 4. OpenACS installation tests, 4. DotLRN, frequently used packages, and the list goes on...)

There are an abundance of benefits to switching to naviserver and upgrading to oacs-5-9, if the system isn't using ecommerce package.

Here is an example of host-node mapping working as I believe you expect. One of the host-node sites: http://dekka.com which points to subsite: http://or97.net/dekka-com
(It just serves a static page right now; until we re-tackle the various templating / form issues.) No proxy is used.

That combination may be an issue. iirc when I used aolserver 4.x, either ns_conn or ad_conn would return an empty string *sometimes* in the context of visiting a host-node mappped url on earlier versions of Openacs ( up to about 5.3). One of the local motivations for switching to naviserver was to avoid the chronic issues with aolserver. At some point around 5.6 to 5.8 server level errors increased by a factor of 4.

Concerning "server level errors": With the current version of OpenACS the number of erros is very little. We have now weeks on openacs.org without a single error or with very little errors in the error.log (in the following graphic, these is the orange line)
Up to january this year, openacs.org had on average 1 error per second.

Concerning the request of Iuri: i did some tests and fixed a few issues (mostly IPv6) and the following testing scenarios work fine:

In this setup, the subsite (here: /hugo/) has to be given explicit read permission for public, otherwise, one cannot login, since subsite/register won't work (one needs already permissions to reach the subsite main node). Therefore, the site-admin has to grant read permissions to the public explicitly.

Other than this, everything looks ok with setup (A), the subsite works with http and https.

When UseHostnameDomainforReg is activated:
- login is redirected to the main site; the return_url as well.
- login cookies are set on the main-site and are not available on the subsite via the browser (maybe when setting "CookieDomain" and use "domain cookies" and appropriate sub-domain host names; not tested).
- This means that out of the box the user does not stay on the subsite but has to do all authorized work on the main site (which makes management of different users on subsite useless).

Also setup (B) works as well with the newest version in the oacs-5-9 branch. There were some issues in earlier version, but the actual version is fine in this respect. No nginx is involved.