简单实现Apache虚拟主机的两种方案

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
woo
帖子: 14
注册时间: 2008-11-15 21:35

简单实现Apache虚拟主机的两种方案

#1

帖子 woo » 2008-12-23 10:46

作者: woo

简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
支持多个Apache服务器,如本人一台web服务器,名为(论坛)
bbs.ubuntu.com,同时又想为phpmyadmin建立网站,网站内容也
放在该服务器上,通过phpmyadmin.ubuntu.com访问,这就要用到虚拟主机
设置。

设置Apache虚拟主机通常有两种方案

一、基于IP的虚拟主机

这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
网卡上绑定多个IP地址去服务多个虚拟主机。
若该机器的IP地址为172.16.131.11(bbs.ubuntu.com),首先
你要设置IP别名(假设用172.16.131.10作为其别名IP)。加下面的两行到
/etc/rc.local,确保每次启动后自动运行。

“/sbin/ifconfig eth0:0 172.16.131.10 netmask 255.255.255.0 broadcast 172.16.131.255 up “
”/sbin/route add -host 172.16.131.10 eth0:0 ”

然后配置/etc/apache2/httpd.conf:

<VirtualHost 172.16.131.10> *
ServerAdmin woyoko@163.com
ServerName phpmyadmin.ubuntu.com
DocumentRoot /home/woo/www/phpmyadmin/
<Directory />
Options -Indexes FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/woo/www/phpmyadmin/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
#用ROOT用户新建phpmyadmin文件夹,同时用touch命令新建error.log ,access.log
ErrorLog /var/log/apache2/phpmyadmin/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/phpmyadmin/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

然后创建目录
/home/woo/www/phpmyadmin/
(/home/woo/www/bbs/ )
,放相应的网站内容到目录/home/woo/www/phpmyadmin/ 下即可,并确保
(你内部的DNS指定phpmyadmin.ubuntu.com的A记录到IP地址172.16.131.10, 若没DNS服务器,我们用下面的方法解决)。
用命令重启apache服务器“ sudo /etc/init.d/apache2 restart ".
(本地浏览器测试,在/etc/hosts中 加一行 “172.16.131.10 phpmyadmin.ubuntu.com” ;若是windows系统,则在C:\WINDOWS\system32\dirvers\etc\hosts 中加一行“172.16.131.10 phpmyadmin.ubuntu.com”,在济览器中输入“phpmyadmin.ubuntu.com” ,浏览)
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
方案。


二、基于名字的虚拟主机:

它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
/etc/apache2/httpd.conf

NameVirtualHost 172.16.131.11

<VirtualHost 172.16.131.11>
ServerAdmin woyoko@163.com
ServerName bbs.ubuntu.com
DocumentRoot /home/woo/www/bbs/
<Directory />
Options -Indexes FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/woo/www/bbs/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
#用ROOT用户新建bbs文件夹,同时用touch命令新建error.log ,access.log
ErrorLog /var/log/apache2/bbs/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/bbs/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

<VirtualHost 172.16.131.11>
ServerAdmin woyoko@163.com
ServerName phpmyadmin.ubuntu.com
DocumentRoot /home/woo/www/phpmyadmin/
<Directory />
Options -Indexes FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/woo/www/phpmyadmin/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
#用ROOT用户新建phpmyadmin文件夹,同时用touch命令新建error.log ,access.log
ErrorLog /var/log/apache2/phpmyadmin/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/phpmyadmin/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

(你内部的DNS指定phpmyadmin.ubuntu.com , bbs.ubuntu.com的A记录到IP地址172.16.131.11, 若没DNS服务器,我们用下面的方法解决)。
用命令重启apache服务器“ sudo /etc/init.d/apache2 restart ".
(本地浏览器测试,在/etc/hosts中 加一行 “172.16.131.11 phpmyadmin.ubuntu.com”,加一行 “172.16.131.11 bbs.ubuntu.com” ;若是windows系统,则在C:\WINDOWS\system32\dirvers\etc\hosts 中加一行“172.16.131.11 phpmyadmin.ubuntu.com”,加一行 “172.16.131.11 bbs.ubuntu.com” 在济览器中输入“phpmyadmin.ubuntu.com”或“bbs.ubuntu.com” ,浏览)

注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
为了让它工作,你需要把phpmyadmin.ubuntu.com, bbs.ubuntu.com
都指向IP地址172.16.131.11.


如有错误,麻烦朋友们指证下! :em01
回复