<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://panoptic.com/mediawiki/aolserver/index.php?action=history&amp;feed=atom&amp;title=Easy_Virtual_Hosting</id>
	<title>Easy Virtual Hosting - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://panoptic.com/mediawiki/aolserver/index.php?action=history&amp;feed=atom&amp;title=Easy_Virtual_Hosting"/>
	<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Easy_Virtual_Hosting&amp;action=history"/>
	<updated>2026-04-25T16:20:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Easy_Virtual_Hosting&amp;diff=2862&amp;oldid=prev</id>
		<title>WikiSysop: imported from WiKit id 1414</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Easy_Virtual_Hosting&amp;diff=2862&amp;oldid=prev"/>
		<updated>2005-04-03T21:07:16Z</updated>

		<summary type="html">&lt;p&gt;imported from WiKit id 1414&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;So having played around with virtual hosting for a while&lt;br /&gt;
I felt that I needed something that would make it easier&lt;br /&gt;
to add domains. Thus allowing anyone in my team to make&lt;br /&gt;
a simple change in a txt file, and not have to change any&lt;br /&gt;
configurations. &lt;br /&gt;
&lt;br /&gt;
So I came up with a little virtualhosting.tcl file&lt;br /&gt;
The layout is as follows, customize paths as you see fit.&lt;br /&gt;
&lt;br /&gt;
   /data/servers/nsshutdown/conf/nsd.tcl (main nsd config)&lt;br /&gt;
   /data/servers/nsshutdown/conf/virtualhosting.tcl (hosting code)&lt;br /&gt;
   /data/servers/vhosts/conf/domains/&amp;lt;domain.com&amp;gt; (host names)&lt;br /&gt;
   /data/servers/vhosts/&amp;lt;domain.com&amp;gt;/&amp;lt;cname&amp;gt;/&lt;br /&gt;
                                            logs/&lt;br /&gt;
                                            pages/&lt;br /&gt;
                                            tcl/&lt;br /&gt;
         &lt;br /&gt;
&lt;br /&gt;
To begin with in the top of nsd.tcl source in the virtualhosting.tcl&lt;br /&gt;
and register the domains.&lt;br /&gt;
&lt;br /&gt;
'''nsd.tcl'''&lt;br /&gt;
&lt;br /&gt;
   source /data/servers/nsshutdown/conf/virtualhosts.tcl&lt;br /&gt;
   admin.registerDomains &amp;lt;domain.com&amp;gt; &amp;lt;domains root&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   # The hostname and address should be set to actual values.&lt;br /&gt;
   set hostname               nsshutdown.com&lt;br /&gt;
   set address                [[ns_info address]]&lt;br /&gt;
&lt;br /&gt;
   ----- rest of normal nsd config here.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;domain.com&amp;gt; should be the name of the top level domain your hosting&lt;br /&gt;
   &amp;lt;domains root&amp;gt; should be the path for the domains server roots &lt;br /&gt;
   /data/servers/vhosts/&amp;lt;domains root&amp;gt;/&amp;lt;page root&amp;gt;&lt;br /&gt;
   The cnames are defined in /data/servers/vhosts/conf/domains/&amp;lt;domain.com&amp;gt;&lt;br /&gt;
   As lines containing&lt;br /&gt;
   &amp;lt;cname&amp;gt; &amp;lt;page root&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''virtualhosting.tcl'''&lt;br /&gt;
&lt;br /&gt;
   proc admin.getDomains {topLevel} {&lt;br /&gt;
&lt;br /&gt;
       # admin.getDomains&lt;br /&gt;
       # args: top level domain&lt;br /&gt;
       # return: lists of cname and page root&lt;br /&gt;
       #&lt;br /&gt;
       # get all c-class domains for a top level domain&lt;br /&gt;
       # format of file &amp;lt;cname (without domain)&amp;gt; &amp;lt;page root&amp;gt; &lt;br /&gt;
         &lt;br /&gt;
       set fh [[open /data/servers/vhosts/conf/domains/$topLevel r]]&lt;br /&gt;
       set hosts [[read -nonewline $fh]]&lt;br /&gt;
       close $fh&lt;br /&gt;
       return [[split $hosts]]&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   proc admin.registerDomains {topLevel base} {&lt;br /&gt;
   &lt;br /&gt;
       # admin.registerDomains&lt;br /&gt;
       # args: top level domain, domain base dir containing domain config files&lt;br /&gt;
       # return: null&lt;br /&gt;
       # register all sub domains for a top level domain&lt;br /&gt;
&lt;br /&gt;
       set directoryfile index.adp,index.html,index.htm,index.xhtml,index.xht,index.php&lt;br /&gt;
       set basedir /data/servers/vhosts/$base&lt;br /&gt;
       set domains [[admin.getDomains $topLevel]]&lt;br /&gt;
       set bindir  [[file dirname [ns_info nsd]]]&lt;br /&gt;
   &lt;br /&gt;
       foreach {host hostname} $domains {&lt;br /&gt;
&lt;br /&gt;
           # set up page root and directory files&lt;br /&gt;
    &lt;br /&gt;
           ns_section  &amp;quot;ns/server/${host}&amp;quot;&lt;br /&gt;
              ns_param    pageroot       ${basedir}/${host}/pages&lt;br /&gt;
              ns_param    directoryfile  $directoryfile&lt;br /&gt;
              ns_param    enabletclpages false&lt;br /&gt;
&lt;br /&gt;
           # register server name&lt;br /&gt;
   &lt;br /&gt;
           ns_section &amp;quot;ns/servers&amp;quot;&lt;br /&gt;
              ns_param   $host  &amp;quot;${hostname}.${topLevel}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
           # configure nssock to go to registered server&lt;br /&gt;
   &lt;br /&gt;
           ns_section &amp;quot;ns/module/nssock/servers&amp;quot;&lt;br /&gt;
              ns_param   $host   &amp;quot;${hostname}.${topLevel}&amp;quot;&lt;br /&gt;
              ns_param   $host   &amp;quot;${hostname}.${topLevel}:80&amp;quot;&lt;br /&gt;
&lt;br /&gt;
           # configure adp pages&lt;br /&gt;
   &lt;br /&gt;
           ns_section &amp;quot;ns/server/${host}/adp&amp;quot;&lt;br /&gt;
              ns_param   map     &amp;quot;/*.adp&amp;quot;&lt;br /&gt;
              ns_param   enableexpire  false&lt;br /&gt;
              ns_param   enabledebug   false&lt;br /&gt;
&lt;br /&gt;
           # set up modules for server type&lt;br /&gt;
           # be carefull several modules are not reusable across&lt;br /&gt;
           # virtual servers, such as lib php.!&lt;br /&gt;
   &lt;br /&gt;
           ns_section &amp;quot;ns/server/${host}/modules&amp;quot;&lt;br /&gt;
              ns_param   nslog ${bindir}/nslog.so&lt;br /&gt;
&lt;br /&gt;
           # configure seperate access logs for each server &lt;br /&gt;
              &lt;br /&gt;
           ns_section &amp;quot;ns/server/${host}/module/nslog&amp;quot;&lt;br /&gt;
              ns_param   rolllog        true&lt;br /&gt;
              ns_param   rollonsignal   true&lt;br /&gt;
              ns_param   rollhour       0&lt;br /&gt;
              ns_param   maxbackup      5&lt;br /&gt;
              ns_param   logreqtime     true&lt;br /&gt;
              ns_param   file           ${basedir}/${host}/logs/access.log&lt;br /&gt;
   &lt;br /&gt;
           # configure tcl for server&lt;br /&gt;
&lt;br /&gt;
           ns_section &amp;quot;ns/server/$host/tcl&amp;quot;&lt;br /&gt;
              ns_param   autoclose      true&lt;br /&gt;
              ns_param   debug          false&lt;br /&gt;
              ns_param   nsvbuckets     8&lt;br /&gt;
              ns_param   statlevel      0&lt;br /&gt;
              ns_param   statbuff       100&lt;br /&gt;
              ns_param   library           ${basedir}/${host}/tcl&lt;br /&gt;
       }&lt;br /&gt;
   &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example usage'''&lt;br /&gt;
Create a server for made-up.com, and cname of here.made-up.com &lt;br /&gt;
&lt;br /&gt;
Take the regular nsd.tcl and just set your&lt;br /&gt;
server names and ports correctly. Should be a simple change as below&lt;br /&gt;
* nsd.tcl&lt;br /&gt;
&lt;br /&gt;
   set httpport               80&lt;br /&gt;
   set httpsport              443&lt;br /&gt;
&lt;br /&gt;
   # The hostname and address should be set to actual values.&lt;br /&gt;
&lt;br /&gt;
   set hostname               made-up.com&lt;br /&gt;
   set address                [[ns_info address]]&lt;br /&gt;
&lt;br /&gt;
   set servername             &amp;quot;made-up&amp;quot;&lt;br /&gt;
   set serverdesc             &amp;quot;made-up&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   # added virtual server config&lt;br /&gt;
   source /data/servers/made-up/conf/virtualhosts.tcl&lt;br /&gt;
   admin.registerDomains made-up.com made-up&lt;br /&gt;
&lt;br /&gt;
   # rest is normal nsd.tcl or sample-config.tcl that comes with&lt;br /&gt;
   # aolserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set up here.made-up.com&lt;br /&gt;
   mkdir -p /data/servers/vhosts/conf/domains/&lt;br /&gt;
   mkdir -p /data/servers/vhosts/made-up/&lt;br /&gt;
   mkdir -p /data/servers/vhosts/made-up/here/pages&lt;br /&gt;
   mkdir -p /data/servers/vhosts/made-up/here/logs&lt;br /&gt;
   mkdir -p /data/servers/vhosts/made-up/here/tcl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;here here&amp;quot; &amp;gt;&amp;gt;/data/servers/vhosts/domains/made-up.com&lt;br /&gt;
&lt;br /&gt;
Start up aolsever and hit here.made-up.com&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category Documentation]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
</feed>