Apache虚拟web主机多个网站一个服务器,应该如何

作者: admin 分类: linux 发布时间: 2018-07-09 18:40
虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”web主机,即只需要运行一个httpd服务就能够同时支撑大量的Web站点。
 
虚拟主机的分类:

  1. 基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址、端口是相同的。例如:www.a.comwww.b.com站点的IP地址都是192.168.1.108,端口都是80,这是使用最为普遍的虚拟web主机类型。
  2. 基于IP地址:一般为每个虚拟主机使用不同的域名,且各自对应的IP地址也不同,端口相同,但即使是域名相同,访问不同的IP地址,访问到的是不同的Web页面。这种方式需要为服务器配置多个网络接口,因此应用并不是非常广。
  3. 基于端口:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。
 
基于域名的虚拟主机
为虚拟主机提供域名解析,可搭建DNS服务器或修改/etc/hosts文件,如www.a.comwww.b.com都对应IP地址:192.168.43.128
 
[root@localhost ~]# vim /etc/hosts
[root@localhost ~]# cat -n /etc/hosts
     1     127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     2     ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
     3    
     4     192.168.43.128 www.a.com
     5     192.168.43.128 www.b.com
 
为每个虚拟web主机准备网页文档
[root@localhost ~]# mkdir -pv /var/www/html/{wwwcom,mailcom}
mkdir: 已创建目录 "/var/www/html"
mkdir: 已创建目录 "/var/www/html/wwwcom"
mkdir: 已创建目录 "/var/www/html/mailcom"
 
[root@localhost ~]# echo "<h1>Linux 实验室</h1>" >/var/www/html/mailcom/index.html
[root@localhost ~]# echo "<h1>Linux 教程网站</h1>" >/var/www/html/wwwcom/index.html
 
修改配置文件/usr/local/httpd/conf/httpd.conf 的391行去除#号
[root@localhost ~]# sed -i '391 s/#//' /usr/local/httpd/conf/httpd.conf
[root@localhost ~]# sed -n '391p' /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf
 
[root@localhost ~]# cd /usr/local/httpd/conf/extra/
[root@localhost extra]# ls
httpd-autoindex.conf  httpd-default.conf  httpd-languages.conf  httpd-mpm.conf                 httpd-ssl.conf      httpd-vhosts.conf
httpd-dav.conf        httpd-info.conf     httpd-manual.conf     httpd-multilang-errordoc.conf  httpd-userdir.conf
 
备份
[root@localhost extra]# cp -p httpd-vhosts.conf httpd-vhosts.conf.origin
修改配置文件
[root@localhost extra]# vim httpd-vhosts.conf
 
<Directory "/var/www/html">
Order allow,deny
Allow from all
</Directory>
 
NameVirtualHost 192.168.43.128:80
<VirtualHost 192.168.43.128:80>
    DocumentRoot "/var/www/html/wwwcom/"
    ServerName www.a.com
    ErrorLog "logs/a.com-error_log"
    CustomLog "logs/a.com-access_log" common
</VirtualHost>
 
<VirtualHost 192.168.43.128:80>
    DocumentRoot "/var/www/html/mailcom"
    ServerName www.b.com
    ErrorLog "logs/b.com-error_log"
    CustomLog "logs/b.com-access_log" common
</VirtualHost>
 
重启httpd服务
 
[root@localhost extra]# /etc/init.d/httpd restart
 
客户机测试



Linux 命令大全

更多

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!