mirror of https://github.com/tLDP/LDP
464 lines
16 KiB
Plaintext
464 lines
16 KiB
Plaintext
<!DOCTYPE ARTICLE PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
|
|
|
|
<article>
|
|
<artheader>
|
|
<title>Virtual Web Mini-HOWTO</title>
|
|
<author>
|
|
<firstname>Dan</firstname>
|
|
<surname>Pancamo</surname>
|
|
</author>
|
|
<author>
|
|
<firstname>Parag</firstname>
|
|
<surname>Mehta</surname>
|
|
<affiliation>
|
|
<address><email>pm@gnuos.org</email></address>
|
|
</affiliation
|
|
</author>
|
|
|
|
<othercredit role="converter">
|
|
<firstname>David</firstname>
|
|
<surname>Merrill</surname>
|
|
<contrib>Conversion from text to DocBook SGML.</contrib>
|
|
</othercredit>
|
|
|
|
<revhistory>
|
|
<revision>
|
|
<revnumber>1.0</revnumber>
|
|
<date>1995-11-24</date>
|
|
<revremark>Initial Release.</revremark>
|
|
</revision
|
|
<revision>
|
|
<revnumber>1.1</revnumber>
|
|
<date>2001-06-03</date>
|
|
<revremark>New maintainer, converted to DocBook (SGML), Licensed under GFDL.</revremark>
|
|
</revision>
|
|
</revhistory>
|
|
|
|
<abstract>
|
|
<para>
|
|
This HOWTO discuss the essentials of setting up a Virtual Web Site under Linux.
|
|
</para>
|
|
</abstract>
|
|
</artheader>
|
|
|
|
<sect1 id="license">
|
|
<title>License</title>
|
|
<para>
|
|
This document is made available under the
|
|
<ulink url="http://www.gnu.org/copyleft/fdl.html"><citetitle>GNU Free Documentation License.</citetitle></ulink>
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="whatis">
|
|
<title>What is a Virtual Web Site?</title>
|
|
|
|
<para>
|
|
A World Wide Web (WWW) Server is normally a single machine dedicated to
|
|
processing HTTP requests for a single WWW site. Simply put, one WWW site
|
|
per machine. Since the computing resources for processing httpd requests is
|
|
low for most WWW sites, the majority of the computing resources are left
|
|
unused. A virtual WWW site simple allows more than one WWW site to share a
|
|
single processor. Instead of having www.domain1.com and www.domain2.com
|
|
requiring two physical computing devices, www.domain1.com and
|
|
www.domain2.com can be located on a single computing device and share common
|
|
resources.
|
|
</para>
|
|
|
|
<para>
|
|
Normally small computing facilities, and small businesses do not have the
|
|
resources to maintain a dedicated web server and a dedicated Internet
|
|
connection. These cost can easily start off at $10K for setup, and
|
|
$500-2500 monthly to maintain. Small computing facilities, and small
|
|
businesses are now able to "rent" WWW space from a Virtual WWW providers.
|
|
The customer can then maintain the WWW "pages" using a local telnet and/or
|
|
FTP connection.
|
|
</para>
|
|
|
|
<para>
|
|
WWW providers such as InfoCom Networks http://www.infocom.net/
|
|
provide WWW space as low as $75 per month. A few Virtual Sites
|
|
might clear up the mystery. So the cost of setting up a WWW site is
|
|
significantly lower than that of setting up a dedicated server and
|
|
connection. The Virtual Site has a major advantage over other WWW
|
|
addressing schemes such as "www.yourprovider.com/~businessname". The
|
|
Virtual WWW server inherently contains the ability to move to a new location
|
|
or setup a dedicated WWW server without changing addresses. Changing WWW
|
|
URL's can result in a major loss of traffic to your site, and lots of
|
|
business literature updates.
|
|
</para>
|
|
|
|
<para>
|
|
With most web sites, www.domain1.com and www.domain2.com both resolve to
|
|
separate IP's. In order to accept multiple request from a single host, the
|
|
virtual host must be able to answer request for both sites. The method used
|
|
to solve this problem is called IP aliasing. IP aliasing allows a single
|
|
host to accept request for multiple IP's. The virtual Web server must have
|
|
the ability to alias IP's
|
|
</para>
|
|
|
|
<para>
|
|
IP aliasing is just one part of the virtual solution. The Domain Name System
|
|
(DNS) also must be configured to resolve both www.domain1.com and
|
|
www.domain2.com. If domain1.com and domain2.com are new domains, then both
|
|
must be registered with Internic. Currently, Internic is charging $50 a year
|
|
to maintain your domain.
|
|
</para>
|
|
|
|
<para>
|
|
Most virtual WWW sites should also provide virtual mail, or the ability to
|
|
forward all mail to the virtual domain to another user or users.
|
|
</para>
|
|
|
|
<para>
|
|
Virtual FTP or the ability to FTP using the standard host name
|
|
"ftp.domain1.com" should also be configured by the WWW provider.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="patches">
|
|
<title>What Software and Software Patches Do I Need?</title>
|
|
|
|
<sect2 id="kernel">
|
|
<title>Linux Kernel</title>
|
|
|
|
<para>
|
|
Linux versions 1.2.X requires the IPalias patch alias-patch-1.2.1-v1
|
|
and alias-net-tools.tar. I'm not sure if 1.3.X supports this patch yet.
|
|
For more information on the IPalias patch see
|
|
ftp://ftp.mindspring.com/users/rsanders/ipalias/
|
|
</para>
|
|
|
|
<para>
|
|
Using multiple dummy interfaces has been suggested in place of
|
|
the IPalias solution. While the dummy solution may work,
|
|
it does not appear to be as clean as the IPalias solution.
|
|
For more information on using Apache and the dummy solution
|
|
see Aram Mirzadeh's virtual hosting information at
|
|
http://www.qosina.com/apache/virtual.html
|
|
</para>
|
|
|
|
<para>
|
|
All that is required to add a new alias using the IPalias method is:
|
|
> /sbin/ifconfig eth0 alias www.domainX.com
|
|
</para>
|
|
|
|
<para>
|
|
Also, the IPalias solution is supported on several other platforms.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="http-patches">
|
|
<title>HTTP Servers</title>
|
|
|
|
<para>
|
|
NCSA 1.5, Apache, and Spinner support Virtual hosting.
|
|
http://hoohoo.ncsa.uiuc.edu/docs/Overview.html
|
|
http://www.apache.org/
|
|
http://spinner.infovav.se/
|
|
</para>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="setup">
|
|
<title>How Do I set it up?</title>
|
|
|
|
<sect2 id="new-account">
|
|
<title>Create the New Account</title>
|
|
|
|
<para>
|
|
Create a regular Linux account for the virtual customer with home
|
|
directory and mail.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="http-setup">
|
|
<title>NCSA 1.5 or Apache Config Files</title>
|
|
|
|
<para>
|
|
Virtual Host implementations are still changing. A few patches
|
|
exist to support Virtual Host Check the server's release notes for
|
|
more details. NCSA 1.5 or Apache now include the Virtual patches,
|
|
and I have been told that Spinner supports virtual hosts.
|
|
</para>
|
|
|
|
<para>
|
|
One virtual patch supports the following srm.conf syntax, however
|
|
the second NCSA 1.5 method of defining a Virtual host allows
|
|
for greater flexibility
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>SubDocumentRoot www.domain1.com /usr/local/etc/httpd/docs/domain1
|
|
SubDocumentRoot www.domain2.com /usr/local/etc/httpd/docs/domain2</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
NCSA and Apache support the following httpd.conf syntax:
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>ServerAdmin webmaster@domain1.com
|
|
DocumentRoot /usr/local/etc/httpda/docs/domain1
|
|
ServerName www.domain1.com
|
|
ErrorLog logs/errors.domain1.com
|
|
TransferLog logs/access_log.domain1.com</programlisting>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="interface">
|
|
<title>Configuring the interface</title>
|
|
|
|
<para>
|
|
Once the IPalias patches have been installed add the
|
|
following to your /etc/rc.d/rc.local on your local web server.
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>/sbin/ifconfig eth0 alias www.domain1.com
|
|
/sbin/ifconfig eth0 alias www.domain2.com
|
|
/sbin/ifconfig eth0 alias www.domainN.com</programlisting>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="internic">
|
|
<title>Registering with Internic</title>
|
|
|
|
<para>
|
|
If you are setting up a new domain or change a current
|
|
domain, you must register the domain with Internic.
|
|
The template can be found at
|
|
ftp://rs.internic.net/templates/domain-template.txt
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="named">
|
|
<title>Configuring Named</title>
|
|
|
|
<para>
|
|
Named will need to be configured so that your virtual domain will
|
|
be visible to the outside world. I don't claim to be an expert
|
|
on DNS. Suggestions always welcome.
|
|
</para>
|
|
|
|
<sect3 id="named-ex-1">
|
|
<title>Example /etc/named.boot</title>
|
|
|
|
<para>
|
|
<programlisting>directory /etc/named.data
|
|
primary realdomain.com db.realdomain.com
|
|
primary xxx.xxx.xxx.IN-ADDR.ARPA db.xxx.xxx.xxx
|
|
primary 0.0.127.IN-ADDR.ARPA db.local
|
|
|
|
primary domain1.com db.domain1.com
|
|
primary domain2.com db.domain2.com
|
|
cache . named.root</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
<note>
|
|
<para>Replace x with your IP.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3 id="named-ex-2">
|
|
<title>Example /etc/named.data/db.domain1.com</title>
|
|
|
|
<para>
|
|
<programlisting>$ORIGIN com.
|
|
domain1 IN SOA domain1.com. hostmaster.domain1.com. (
|
|
10134 43200 3600 604800 86400 )
|
|
IN NS ns1.realdomain.com.
|
|
IN MX 10 mail.realdomain.com.
|
|
IN MX 0 domain1.com.
|
|
domain1.com. IN A xxx.xxx.xxx.xxx ;www.domain1.com IP
|
|
|
|
$ORIGIN domain1.com.
|
|
ftp IN CNAME domain1.com.
|
|
www IN CNAME domain1.com.
|
|
mail IN CNAME domain1.com.</programlisting>
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3 id="named-ex-3">
|
|
<title>Example /etc/named.data/db.xxx.xxx.xxx</title>
|
|
|
|
<para>
|
|
You should already have a db.xxx.xxx.xxx for your current site
|
|
update it to contain the new virtual domains for reverse lookups
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>xx IN PTR www.domain1.com.
|
|
xx IN PTR www.domain2.com.</programlisting>
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3 id="named-restart">
|
|
<title>Restart named</title>
|
|
|
|
<para>
|
|
Once you've finished editing config files, you will need to
|
|
restart the named daemon.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="mail">
|
|
<title>Virtual Mail</title>
|
|
|
|
<para>
|
|
Your virtual customers will more than likely want the ability to have
|
|
mail that is sent to their domain forwarded to another domain. A few
|
|
sendmail.cf changes will do the trick. After several months of
|
|
trying different sendmail changes, this is the 1st method that I
|
|
found that works and requires only one sendmail.cf change for each
|
|
new virtual site.
|
|
</para>
|
|
|
|
<sect3 id="sendmail">
|
|
<title>Sendmail Configuration</title>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>
|
|
Retrieve the current version of sendmail that contains makemap btree support.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create a file called /etc/domainalias with the following mappings:
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>*@domain1.com localnet@realdomain.com
|
|
*@domain2.com townplaz@realdomain.com
|
|
*@domainN.com soracomp@realdomain.net
|
|
|
|
webmaster@domain1.com somuser@anotherhost.com
|
|
jamison@domain2.com anotheruser@somehost.com</programlisting>
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create the maped DB file
|
|
</para>
|
|
|
|
<para>
|
|
<screen>makemap btree /etc/domainalias.db < /etc/domainalias</screen>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
/etc/sendmail.cf changes:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>
|
|
Add a Cw record for each new virtual host
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>Cwdomain1.com
|
|
Cwdomain2.com</programlisting>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the domainalias mapping only once.
|
|
</para>
|
|
<para>
|
|
<programlisting>Kdomainalias btree /etc/domainalias.db</programlisting>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add/Change Ruleset 98
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>###################################################################
|
|
### Ruleset 98 -- local part of ruleset zero (can be null) ###
|
|
###################################################################
|
|
|
|
S98
|
|
|
|
R$+ < $+ . > $1 < $2 > remove trailing dots
|
|
R$+ < $+ > $: < > $(domainalias $1$2 $) match user@address
|
|
R< > $+ @ $* $: < $1 > $(domainalias * @ $2 $) match *@address
|
|
R< $+ > * $* $: < > $1 $2 replace * with userid
|
|
R < $+ > $+ $: < > $2 bugfix
|
|
R< > $* $: $>3 $1 and rewrite using S3</programlisting>
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Sendmail Testing
|
|
</para>
|
|
|
|
<para>
|
|
Test the sendmail configuration to verify the new sendmail.cf changes
|
|
</para>
|
|
|
|
<para>
|
|
<programlisting>sendmail -v -bv info@domain1.com</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
The final destination should be displayed.
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="ftp">
|
|
<title>Virtual FTP</title>
|
|
|
|
<para>
|
|
Currently, I have not been able to get Virtual FTP to work.
|
|
A few patches exist, and I'm sure a working patch exist.
|
|
We just create a working directory /home/ftp/business/domain1,
|
|
but a true Virtual FTP would be nice.
|
|
</para>
|
|
|
|
<para>
|
|
If anyone would like to contribute a solution, I would be more
|
|
than happy to add it here.
|
|
</para>
|
|
|
|
<para>
|
|
Arnt Gulbrandsen has rewritten ftpd and has included support for
|
|
independent FTP services The Troll Tech FTP Daemon
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="links">
|
|
<title>Links to More Virtual Web Information</title>
|
|
|
|
<para><ulink url="http://hoohoo.ncsa.uiuc.edu/docs/Overview.html"><citetitle>http://hoohoo.ncsa.uiuc.edu/docs/Overview.html</citetitle></ulink></para>
|
|
<para><ulink url="http://www.apache.org/"><citetitle>http://www.apache.org/</citetitle></ulink></para>
|
|
<para><ulink url="http://www.qosina.com/apache/virtual.html"><citetitle>http://www.qosina.com/apache/virtual.html</citetitle></ulink></para>
|
|
<para><ulink url="http://spinner.infovav.se/"><citetitle>http://spinner.infovav.se/</citetitle></ulink></para>
|
|
<para><ulink url="ftp://ftp.mindspring.com/users/rsanders/ipalias/"><citetitle>ftp://ftp.mindspring.com/users/rsanders/ipalias/</citetitle></ulink></para>
|
|
<para><ulink url="http://www.thesphere.com/~dlp/TwoServers/"><citetitle>http://www.thesphere.com/~dlp/TwoServers/</citetitle></ulink></para>
|
|
<para><ulink url="http://hoohoo.ncsa.uiuc.edu/docs/setup/httpd/VirtualHost.html"><citetitle>http://hoohoo.ncsa.uiuc.edu/docs/setup/httpd/VirtualHost.html</citetitle></ulink></para>
|
|
<para><ulink url="ftp://ftp.dhp.com:/pub/linux/virtual-hosting"><citetitle>ftp://ftp.dhp.com:/pub/linux/virtual-hosting</citetitle></ulink></para>
|
|
</sect1>
|
|
|
|
</article>
|