您的位置:首页 > 运维架构 > Apache

基于ubuntu的apache的虚拟主机

2009-07-31 15:40 405 查看
一边查资料,一边把实验做完,决定把成果写出来,这可是下了很大的决心的,希望系统不要突然当机,如不幸被高手看见,请不要见笑,顺便帮忙解决下疑问。
概念应该是 虚拟主机那一块,大概描述下:
虚拟主机(Virtual Host)是指在一个机器上运行多个网络站点 (比www.company1.comwww.company2.com)。 如果每个网络站点拥有不同的IP地址,则虚拟主机可以是"基于IP"的; 如果只有一个IP地址,也可以是"基于主机名"的, 其实现对最终用户是透明的。

VM里ubuntu上有两个架设完成网站:一个基于Drupal的博客站点;一个是管理MySQL的phpmyadmin 目前打开它们的办法 是http://192.168.1.102/bloghttp://192.168.1.102/phpmyadmin

现在需要实现:
①两个站点通过不同的IP地址访问;
②两个站点通过不同的域名访问;
Ubuntu的本地IP是192.168.1.102
访问博客的IP地址为 192.168.1.10 域名为 myblog.promise.com
访问phpmyadmin的地址192.168.1.20 域名为phpmyadmin.promise.com

目前我的ubuntu只有一个IP地址,想实现不同IP对应不同站点,得先配置网卡IP别名

sudo nano /etc/network/interfaces

添加

auto eth0:1
iface eth0:1 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

auto eth0:2
iface eth0:2 inet static
address 192.168.1.20
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

记得重启网卡

sudo /etc/init.d/networking restart

如果直接基于IP的虚拟主机
编辑apache2的httpd.conf

sudo nano /etc/apache2/httpd.conf

加入如下

<VirtualHost 192.168.1.20>
ServerAdmin webmaster@phpmyadmin.com
DocumentRoot /var/www/phpmyadm/
ServerName phpmyadmin.promise.com
ErrorLog /var/log/apache2/apache2phpmyadmin_error_log
TransferLog /var/log/apache2/apache2phpmyadmin_access_log
</VirtualHost>

<VirtualHost 192.168.1.10>
ServerAdmin webmaster@myblog.com
DocumentRoot /var/www/blog/
ServerName myblog.promise.com
ErrorLog /var/log/apache2/myblog_error_log
TransferLog /var/log/apache2/myblog_access_log
</VirtualHost>

实际证明 只有IP地址和DocumentRoot起打开网站作用,servername貌似不起作用

如果是基于域名的虚拟主机
需要DNS:

sudo apt-get install bind9 dnsutils bind9-doc
注:只dns话,bind9即可,dnsutils是dns测试和排错工具,bind9-doc提供了bind9的文档

主要配置文件三个

/etc/bind/named.conf
/etc/bind/named.conf.options
/etc/bind/named.conf.local

这里不是研究DNS,就不细述了,这次只需改动named.conf.local即可
思路:

①需要添加正向区域“promise.com”和反向区域“1.168.192..in-addr.arpa”,
②在“promise.com”区域中添加A记录myblog对应10,添加A记录phpmyadmin对应20
③在“1.168.192.in-addr.arpa”区域中添加10对应myblog,20对应phpmyadmin
开始添加:

sudo nano /etc/bind/named.conf.local

添加

//正向
zone "promise.com"{
type master;
file "db.promise.com";
};

//反向
zone "1.168.192.in-addr.arpa"{
type master;
file "re/db.192.168.1";
};
注,文件没指出路径,默认路径为/var/cache/bind
Ctrl + O 保存 并CTRL+X 退出

创建刚才的正向和反向文件,不会?找个模板来抄(因为我就不会)

sudo cp /etc/bind/db.local /var/cache/bind/db.promise.com
sudo nano /var/cache/bind/db.promise.com



创建反向

sudo mkdir /var/cache/bind/re/
sudo cp /etc/bind/db.127 /var/cache/bind/re/db.192.168.1
sudo nano /var/cache/bind/re/db.192.168.1



重启bind9 :sudo /etc/init.d/bind9 restart
哦,对了,还有

sudo nano /etc/resolv.conf

得将服务器的dns指向自己,添加

search promise.com
nameserver 192.168.1.102

测试下

promise@ubuntu:~$ nslookup myblog.promise.com
Server: 192.168.1.102
Address: 192.168.1.102#53

Name: myblog.promise.com
Address: 192.168.1.10

promise@ubuntu:~$ nslookup phpmyadmin.promise.com
Server: 192.168.1.102
Address: 192.168.1.102#53
Name: phpmyadmin.promise.com
Address: 192.168.1.20

ok!
本机测试下……咦?为什么不行?
哦,别忘了给自己本机dns指向刚建立的dns服务器



OK!贴图纪念下

顺便说下,辛苦把文章写好了,结果,time out ,有得重新编辑一下,如果出错,可能第二次有点急了,还请见谅。
对本文有不同意见或疑问欢迎来讨论

我自己也有个疑问:如果我不是基于promise.com的子域名,而是
192.168.1.10指向www.myblog.com 和 192.168.1.20指向www.phpmyadmin.com的话
bind9该怎么设置?每次设置不是myblog.com能显示就是php那个不能显示,要么反之本文出自 “记录学习的点滴” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: