BBS水木清华站∶精华区

发信人: dfbb (赵无忌☆迷恋红尘), 信区: Linux 
标  题: [文档]「虚拟主机」(Web/Mail)的设定摘要(转自台湾BB 
发信站: BBS 水木清华站 (Sun Oct 11 21:26:15 1998) 
 
 
分别在几个版都看到在问「虚拟主机」, 大热天的, 藉机灌个水, 清凉一下 ! 
 
以下内容是依实际的使用经验整理, 有关「虚拟主机」因为关联到各个不同的 
程式(httpd、named、sendmail), 所以似乎没有「单一完整」资料, 在参照各 
别文件後, try try 出来用, 以下各项可能不甚完善, 但确定可以工作无误, 
若有不正确、不妥的地方还请大家指正. 
 
由於市场竞争以及不是每个人都能方便的24小时连接 Internet, 目前几乎 
各个 ISP 都「出卖虚拟主机」, 且「售价不低」, 这个看似「略有」难度的 
工作若用一台 Intel_Based_PC 来做的话, (除专线费用外)其实是很低成本, 
或许几个人合租一条中、低速度的专线(看实际需要吧!), 再用 Linux 来当 
工作平台, 就可以省下一笔不小的开销了!底下以一台 
   跑 Linux 的 PC + Apache + sendmail + bind 
来说明。 
 
        *       *       *       *       *       * 
 
所谓「虚拟主机」主要是指「虚拟 Web Server」, 但光是这个还不算完整, 
於是还要有个「虚拟 Mail Server」来搭配, 而这两者同时必需仰赖「真实 
DNS server」才能构成整套的「虚拟」动作. 
 
当然, 各个 domain name 要正式在 twnic 或 internic 或 alternic 或其 
它国家的主管单位注册过才能生效. 
 
还有, 以下设定算是重点摘要, 最好事先对基本的 Apache、named、sendmail 
有一些了解, 才能避开执行的可能的问题. 
 
        *       *       *       *       *       * 
 
■■■ 
Apache 大概是目前用来当「虚拟 Web 主机」的最热门 daemon, 说明如下: 
 
设定好它可以接受哪些 domain name 的呼叫, 一遇到 browser 端向它要求 
某个 domain name 时, 它就会去抓相对的 directory 下的档案丢给 browser 
 
 
假设除了「真实公司」外, 另有 aaa、bbb、ccc 三家公司及团体共用这台 
真实 Web server, 那麽分别建立 
        /home/aaa 
        /home/bbb 
        /home/ccc 
当然三个目录下, 它们各有各的 index.html 
        /home/aaa/index.html 
        /home/bbb/index.html 
        /home/ccc/index.html 
 
在 Apache 的 httpd.conf 尾段里设定如下: 
 
        <VirtualHost www.aaa.com.tw> 
        ServerAdmin john@aaa.com.tw 
        DocumentRoot /home/aaa 
        ServerName www.aaa.com.tw 
        ErrorLog logs/aaa-error_log 
        TransferLog logs/aaa-access_log 
        </VirtualHost> 
 
        <VirtualHost www.bbb.com.tw> 
        ServerAdmin peter@bbb.com.tw 
        DocumentRoot /home/bbb 
        ServerName www.bbb.com.tw 
        ErrorLog logs/bbb-error_log 
        TransferLog logs/bbb-access_log 
        </VirtualHost> 
 
        <VirtualHost www.ccc.org.tw> 
        ServerAdmin victor@ccc.org.tw 
        DocumentRoot /home/ccc 
        ServerName www.ccc.org.tw 
        ErrorLog logs/ccc-error_log 
        TransferLog logs/ccc-access_log 
        </VirtualHost> 
 
■■■ 
在 named(以8.1.1以後版本为例) 这边: 
 
在原有 named.conf 里加入: 
zone "aaa.com.tw" in   { type master; file "file1.aaa"; }; 
zone "bbb.com.tw" in   { type master; file "file1.bbb"; }; 
zone "ccc.org.tw" in   { type master; file "file1.ccc"; }; 
 
在 /etc/named/file1.aaa 则是: 
@ IN SOA .....这些跟「原主机」内容一样..... 
                IN NS my_net_domain.com.tw.  <--这是真实跑 bind 这台 
www             IN A 172.16.1.1 
                IN MX 0 aaa.com.tw. 
aaa.com.tw.     IN A 172.16.1.1 
                IN MX 0 aaa.com.tw. 
 
在 /etc/named/file1.bbb 则是: 
@ IN SOA .....这些跟「原主机」内容一样..... 
                IN NS my_net_domain.com.tw.  <--这是真实跑 bind 这台 
www             IN A 172.16.1.1 
                IN MX 0 bbb.com.tw. 
bbb.com.tw.     IN A 172.16.1.1 
                IN MX 0 bbb.com.tw. 
 
在 /etc/named/file1.ccc 则是: 
@ IN SOA .....这些跟「原主机」内容一样..... 
                IN NS my_net_domain.com.tw.  <--这是真实跑 bind 这台 
www             IN A 172.16.1.1 
                IN MX 0 ccc.org.tw. 
ccc.org.tw.     IN A 172.16.1.1 
                IN MX 0 ccc.org.tw. 
 
■■■ 
在 sendmail 这边: 
 
到 /etc/sendmail.cf 里加上各个 domain name 到 Cwlocalhost 後面, 用 
空白隔开各个名字: 
 
Cwlocalhost aaa.com.tw bbb.com.tw ccc.org.tw 
 
        这就可以单一台 mail server 分别收各人的信 
        john@aaa.com.tw 
        peter@bbb.com.tw 
        victor@ccc.org.tw 
 
不过先前有人提到若是同一个名字怎麽办? 
clinton@aaa.com.tw 
clinton@bbb.com.tw 
clinton@ccc.org.tw 
 
目前我只能以「不开同一个ID」来避开这个问题. 
 
■■■ 
另外, 假如 Web Server 跟 Mail Server 是分别独立的两台, 为便例一般 
user 的操作, 可以把 Web Server 的 /home/aaa 这个目录 export 出来给 
Mail server 挂到 john 这个 user 的某个目录下, 例如 /home/john/www 
 
这样当 john 把档案(HTML、影像...) 丢到 Mail server 时, 事实上是丢 
到 Web server 里的 aaa 公司之下, 由於要把别台的目录 mount 进来是只 
有 root 才能做, 所以这样 export/mount 应该没什麽问题吧? 
 
遗、误之处请大家补一补吧  ^_^ 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.41.99] 

BBS水木清华站∶精华区