vike681 发表于 2018-11-17 11:15:29

Apache搭建web虚拟主机

  在同一台Apache服务器中运行多个web站点,其中的每一个站点实际上不会占用着整个服务器,通过虚拟web主机服务可以充分利用服务器的硬件资源,从而降低网站构建以及运行成本。虚拟主机主要类型分为三种:
  1、基于IP端口
  对每个不同域名的虚拟主机设置单独IP,因此,在服务器中需要设置多个网卡,对于硬件成本和IP成本要求都高,此种方式在实际中不常用,本文暂且略过;
  2、基于端口IP
  使用TCP不同端口来区分不同的站点内容,需要在用户访问站点时跟上指定端口号才可实现访问;
  3、基于主机名
  每个服务器主机可以构建多个不同域名服务器,但都使用相同IP地址;此种方式在实际中较为常用!
  当网页分类内容较多,对于后台运维数据处理与更新压力较大,因此需要建立分类管理的目录,方便管理,称为虚拟目录;
  实验描述:


[*]实验环境Redhat6.5版本
[*]服务器IP地址:192.168.100.107
[*]Redhat镜像挂载至/mnt下
[*]本实验使用Apache2.2版本
  rpm -q httpd//查看Apache版本


环境部署

  rpm -q httpd //检查是否安装Apache
  service iptables stop   //关闭防火墙
  setenforce 0      //关闭增强安全×××


建立Apache虚拟目录(用户访问控制)

1、虚拟目录访问

  rpm -ivh /mnt/Packages/httpd-2.2.15-29.el6_4.x86_64.rpm// 安装Apache2.2
  vim /etc/httpd/conf/httpd.conf//编辑主配置文件

  

Listen 192.168.100.107:80//更改监听地址和监听端口  
#Listen 80   //注释IPV6的监听
  
...
  
ServerName www.yun.com:80//打开主机域名
  

  vim /etc/httpd/conf.d/vdir.conf
  //在子配置文件目录下创建虚拟目录配置文件 vdir.conf

  在vdir.conf中写入以下内容:
  

Alias /test "/opt/test/"   //指定虚拟目录名称为test,并指定目录站点在/opt/test  

  

  Options Indexes MultiViews FollowSymLinks
  AllowOverride None
  AuthName "hello" //认证名称
  authtype basic //用户认证方式为基本认证方式
  authuserfile /etc/httpd/user//指定用户认证文件存放位置
  #authgroupfile /etc/httpd/group
  #require Valid-user//设置用户访问权限,取消注释时即可实现用户授权访问;
  #require user test
  #Require group admin
  

  

  mkdir -p /opt/test   //创建虚拟目录站点
  vim /opt/test/index.html//创建虚拟目录首页
  service httpd start//开启httpd服务



2、用户授权访问

  vim /etc/httpd/conf.d/vdir.conf //编辑服务子配置文件

  

Alias /test "/opt/test/"   //指定虚拟目录名称为test,并指定目录站点在/opt/test  

  

  Options Indexes MultiViews FollowSymLinks
  AllowOverride None
  AuthName "hello" //认证名称
  authtype basic //用户认证方式为基本认证方式
  authuserfile /etc/httpd/user//指定用户认证文件存放位置
  #authgroupfile /etc/httpd/group
  #require Valid-user//取消注时即可实现用户授权访问;
  #require user test
  #Require group admin
  

  

  htpasswd -c /etc/httpd/user zhangsan//创建授权访问用户
  service httpd restart//重启httpd服务

  当再一次访问网页时变成了需要授权的用户才可访问:


相同IP不同端口

1、配置DNS
  可参见:DNS域名解析服务配置

  rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm//首先安装DNS域名解析服务
  vim /etc/named.conf//配置域名解析主配置文件

  

options {  listen-on port 53 { 192.168.100.107; }; //监听端口主机IP
  listen-on-v6 port 53 { ::1; };
  directory       "/var/named";
  dump-file       "/var/named/data/cache_dump.db";
  statistics-file "/var/named/data/named_stats.txt";
  memstatistics-file "/var/named/data/named_mem_stats.txt";
  allow-query   { any; };   //允许任意网段主机都可解析
  recursion yes;
  

  vim /etc/named.rfc1912.zones//编辑区域配置文件

  

zone "yun.com" IN {  type master;
  file "yun.com.zone";
  allow-update { none; };
  
};
  

  cd /var/named    //切换到区域数据配置目录下
  cp -p named.localhost yun.com.zone//复制区域数据配置文件模板
  vim yun.com.zone//配置区域数据配置文件

  

$TTL 1D  
@       IN SOA@ admin. (   //修改管理员邮箱
  0       ; serial
  1D      ; refresh
  1H      ; retry
  1W      ; expire
  3H )    ; minimum
  NS      @
  A       127.0.0.1
  
www INA       192.168.100.107   //设置解析地址
  

  service named start//开启DNS服务


2、不同端口不同内容

  vim /etc/httpd/vhost.conf//创建虚拟主机端口配置文件

  写入以下内容:
  

NameVirtualHost 192.168.100.107:80   //设置主机IP及端口号  

  ServerAdmin webmaster@dummy-host.example.com
  DocumentRoot /opt/yun///设置80端口网页站点
  ServerName www.yun.com//解析域名
  ErrorLog logs/yun.com-error_log//错误日志存放位置
  CustomLog logs/yun.com-access_log common//访问日志存放位置
  

  

  
NameVirtualHost 192.168.100.107:250
  

  ServerAdmin webmaster@dummy-host.example.com
  DocumentRoot /opt/yun01///设置80端口网页站点
  ServerName www.yun.com   //解析域名
  ErrorLog logs/yun01.com-error_log//错误日志存放位置
  CustomLog logs/yun01.com-access_log common//访问日志存放位置
  

  

  mkdir -p /opt/yun   //创建80端口站点
  echo "yun port 80 test web" > /opt/yun/index.html   // 创建 www.yun.com:80的首页内容
  mkdir -p /opt/yun01   //创建250端口站点
  echo "yun port 250 test web" > /opt/yun01/index.html   // 创建 www.yun.com:250的首页内容
  vim /etc/httpd/conf/httpd.conf   //编辑httpd服务主配置文件

  

Listen 192.168.100.107:80   //原有监听端口  
Listen 192.168.100.107:250//添加监听端口
  

  service httpd restart//重启httpd服务
  service named restart//重启DNS服务

  当访问相同IP域名不同端口时出现不同内容:



相同IP不同主机

1、配置DNS解析服务

  vim /etc/named.rfc1912.zones//编辑区域配置文件

  

zone "yun.com" IN {  type master;
  file "yun.com.zone";
  allow-update { none; };
  
};
  
zone "abc.com" IN {         //添加新的解析域名
  type master;
  file "abc.com.zone";
  allow-update { none; };
  
};
  

  cd /var/named
  cp -p yun.com.zone abc.com.zone//复制区域数据配置文件模板
  vim abc.com.zone

  

$TTL 1D  
@       IN SOA@ admin. (
  0       ; serial
  1D      ; refresh
  1H      ; retry
  1W      ; expire
  3H )    ; minimum
  NS      @
  A       127.0.0.1
  
www INA       192.168.100.107
  

2、不同主机

  vim /etc/httpd/conf.d/vhost.conf

  加入以下内容:
  

  ServerAdmin webmaster@dummy-host.example.com
  DocumentRoot /opt/abc/
  ServerName www.abc.com
  ErrorLog logs/abc.com-error_log
  CustomLog logs/abc.com-access_log common
  

  

  mkdir -p /opt/abc   //创建 www.abc.com的站点
  echo "this is abc" > /opt/abc/index.html//创建内容
  service httpd restart//重启httpd服务
  service named restart//重启DNS服务





页: [1]
查看完整版本: Apache搭建web虚拟主机