CentOS/虚拟主机的构建

来自站长百科
跳转至: 导航、​ 搜索

CentOS | CentOS安装 | CentOS使用手册

服务器做为一台独立的主机,对于外界 来说,只拥有一个Global IP地址。也就是说,从某种意义上,在当前的状态下,它作为一台服务器,仅能供一个用户用于发布Web--因为不管让多少个域名指向我们的主机,都等于指向了仅有的一个IP地址(访问的是同一个网站)。

比如在CentOS下,默认的Web目录是/var/www/html/,如果我们将网页放置在这个目录 下,当服务器的IP地址或者指向服务器IP的域名被访问时,所能浏览到的只是/var/www/html/目录下放置的网页的内容。

虽然通过开放用户目录Web发布权限的方法也能够实现多用户使用同一台服务器,但对于拥有域名(类似于“yourname.yeah.net”的指向一个地址的免费域名除外)的一般用户,他们无法将它们的域名指向它们的用户Web目录--因为域名指向的是IP地址,而服务器又只拥有一个Global IP地址。

在本条目中,我们通过构建虚拟主机,来实现一台服务器可以放置多个独立网站的功能。简单地说,虚拟主机就是将一台服务器虚拟为多台服务器,使得虽然服务器 只有一个Global IP地址,但当不同的域名指向服务器仅有的一个Global IP地址时,通过定义好的虚拟主机的规则,来识别哪些域名该指向服务器中哪个Web目录,从而达到服务器中有多个Web目录(包括一般用户的Web目录) (多个网站),也可以通过多个域名指向同一个Global IP地址来实现不同的多个网站在同一台服务器上的同时运作。

关于域名[ ]

在这里所说的域名,指的是顶级域名或动态域名。这些域名都是指向一个IP地址的。为了测试虚拟主机,请准备好至少两个以上的域名。

在这里为了具体,以将CentOS中文网主域名www.centospub.com指向/var/www/html/、digeast.no-ip.info指向/home/digeast/public_html/为例加以说明。

虚拟主机的配置[ ]

Apache的主配置文件“httpd.conf”中,提供了虚拟主机的配置选项,我们只需修改其中虚拟主机的部分语句,就可以达到构建虚拟主机的目的。但是鉴于虚拟主机可能是更新、修改比较频繁的项目之一(域名的增删、变化等等),我们在/etc/httpd/conf.d/目录下新建一个虚拟主机的配置文件。如下:

[root@sample ~]# vi /etc/httpd/conf/httpd.conf  ← 编辑Apache配置文件

#NameVirtualHost *:80  ← 找到这一行,去掉行首的#
 ↓
NameVirtualHost *:80  ← 变为此状态

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost> ← 找到这一行,在其下添加如下绿色字体部分:

<VirtualHost *:80>
ServerAdmin yourname@yourserver.com
DocumentRoot /var/www/html              ← www.centospub.com所定义的规则 
ServerName www.centospub.com 
ErrorLog logs/error_log
CustomLog logs/access_log combined
</VirtualHost>

<VirtualHost *:80>
ServerAdmin yourname@yourserver.com
DocumentRoot /home/centospub/public_html        ← digeast.no-ip.info所定义的规则
ServerName digeast.no-ip.info
ErrorLog logs/centospub_error_log
CustomLog logs/centospub_access_log common
</VirtualHost>

然后重新启动HTTP服务,使虚拟主机的设置生效。

[root@sample ~]# /etc/rc.d/init.d/httpd restart   ← 重新启动HTTP服务 

Stopping httpd:            [ OK ]
Starting httpd:            [ OK ]

测试虚拟主机[ ]

通过虚拟主机配置文件中定义好的不同的域名访问,看是否能够按照定义好的规则指向相应的目录(网站)。

[root@sample ~]# echo "My site is www.centospub.com " >> /var/www/html/index.html 
 ← 建立www.centospub.com指向/var/www/html/下的测试页

[root@sample ~]# echo "My site is digeast.no-ip.com" >> /home/centospub/public_html/index.html 
 ← 建立digeast.no-ip.com指向/home/centospub/public_html/下的测试页

然后分别在浏览器输入两个域名,如果每次都能够显示出相应域名的页面,说明虚拟主机已正常工作。

[root@sample ~]# rm -f /var/www/html/index.html  ← 删除测试用的遗留文件

[root@sample ~]# rm -f /home/centospub/public_html/index.html  ← 删除测试用的遗留文件

如果以后需要增加或改动虚拟主机等,可以通过修改虚拟主机配置文件(/etc/httpd/conf.d/virtualhost.conf),添加新的虚拟主机规则来实现。

参考来源[ ]

http://www.centospub.com/make/virtualhost.html

CentOS使用手册导航

CentOS安装

CentOS安装 | 系统安装后的初始环境设置 | 服务器方式安装CentOS 5

CentOS使用手册

使用RPM管理包 | 使用YUM工具更新系统 | 使用rsync服务 | 使用rsync同步 | 使用tar备份 | 使用tar恢复文件 | Samba 服务器的构建 | 用SWAT让Samba服务器的管理温和化 | SMTP服务器的构建 | POP/IMAP服务器的构建 | 病毒查杀系统的构建 | 入侵监测系统的构建 | 用OpenSSH构建SSH服务器 | 用SSH客户端软件登录到服务器 | 让服务器支持安全HTTP协议 | 开放一般用户的网页发布权限 | 虚拟主机的构建 | Servlet/JSP服务器的构建 | 基于日志的站点统计系统的构建 | 构建MySQL数据库服务器 | 用phpMyAdmin让MySQL数据库管理温和化 | 数据库的自动备份与恢复 | 用ProFTPD构建FTP服务器 | 用FTP客户端软件连接到服务器