第四周

Apache虚拟主机

实现在一台云服务器上,搭建多个独立域名的独立网站

任务1:域名解析(DNS服务)

DNS服务器的安装于配置

DNS服务器的安装

yum install bind

DNS服务器的配置

vi /etc/named.conf

  1. options {
  2. listen-on port 53 { 127.0.0.1; }; #监听服务器IP
  3. listen-on-v6 port 53 { ::1; };
  4. directory "/var/named";
  5. dump-file "/var/named/data/cache_dump.db";
  6. statistics-file "/var/named/data/named_stats.txt";
  7. memstatistics-file "/var/named/data/named_mem_stats.txt";
  8. secroots-file "/var/named/data/named.secroots";
  9. recursing-file "/var/named/data/named.recursing";
  10. allow-query { any; }; #允许所有主机查询

DNS区域文件的配置

vi /etc/named.rfc1912.zones

  1. zone "11-hcz.cn" IN { #"域名"
  2. type master;
  3. file "11-hcz.cn.zone"; #对应的配置文件名
  4. allow-update { none; };
  5. };

DNS区域文件的配置

cd /var/named

cp -p named.empty 11-hcz.cn.zone

vi 11-hcz.cn.zone

$TTL 3H
@       IN SOA  @ hczyyds.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.11.100
        AAAA    ::1

www     IN      A       192.168.11.100

启动DNS服务器

systemctl enable --now named.service

客户端测试

客户机配置DNS服务器

tips:如果访问失败开放注意防火墙端口

ping www.11-hcz.cn

DNS区域的管理

区域的类别

  • 正向查询域

    • 域名 IP
  • 反向查询域

    • IP 域名
  • 区域文件

    • /var/named/*.zone

正向查询域中记录的管理

  • 主机记录 A
  • 别名记录 CNAME
  • 邮件交换纪录 MX

反向查询的管理

  • 创建反向查询域

    • 名称: 11.168.192.in-addr.arpa.dns

DNS服务器的管理

设置转发器

  • 功能

指定根于服务器

  • /var/named/named.ca

任务2:web服务(基于主机头的虚拟主机)

实现Web网站

实现默认站点

  • 上传主页文件

    • echo TestPage > /var/www/html/index.html
  • 启动httpd服务

    • systemctl restart httpd.service
  • 测试

虚拟主机

默认Web站点的建立

  • ip
  • 端口:80
  • 主目录: /var/www/html
  • 默认主页文件

    • index.html

虚拟主机概述

什么是虚拟主机

  • 在一台服务器上运行多个Web站点

    • 每个站点拥有独立的域名

为什么要使用虚拟主机

  • 节省资源

    • 硬件
    • 软件
    • IP

Apache的虚拟主机技术

根据客户端输入的URL定向到不同的站点主目录

利用不同端口标示主目录

  • IP相同,端口不同

利用不同IP标示主目录

  • IP不同,端口相同(80)

利用不同域名标示主目录

  • 域名不同,IP相同,端口相同

实施步骤

  1. 配置DNS
    a) 创建主区域
    b) 添加主机记录
    c) 启动DNS服务

  2. 配置Apache服务

    1. 创建虚拟主机的根以及主页文件

      mkdir /wwwroot/11-hcz -p
      mkdir /wwwroot/11
      echo "<h1>hcz</h1>" > /wwwroot/11-hcz/index.html
      echo "<h1>hczyyds</h1>" > /wwwroot/11/index.html
      
    2. 创建基于主机头的虚拟主机
      vim /etc/httpd/conf.d/httpd-vhosts.conf ```xml

      DocumentRoot “/wwwroot/11” ServerName www.11.cn
DocumentRoot “/wwwroot/11-hcz” ServerName www.11-hcz.cn AllowOverride None # Allow open access: Require all granted

AllowOverride None

# Allow open access:
Require all granted


启动httpd服务

`systemctl restart httpd.service`

测试

- 关闭防火墙

   - `systemctl stop firewalld.servie`
- 关闭SELinux

   - `setenforce 0`

系统配置

- 服务自启动

   - `systemctl enable --now httpd`
- 防火墙开放端口

   - `firewall-cmd --add-service=http --permanent`
   - `firewall-cmd --add-service=dns --permanent`
   - `firewall-cmd --reload`
- 配置SELinux标签

   - `chcon -t httpd_sys_content_t /wwwroot -R`

<a name="2dc90225"></a>
## 扩展

<a name="132ec787"></a>
### 基于端口的虚拟主机

创建基于端口的虚拟主机

- mkdir /wwwroot/private -p
- echo private > /wwwroot/private/index.html
- vim /etc/httpd/conf.d/private.conf

```xml
Listen 82
<VirtualHost 192.168.11.100:82>
  DocumentRoot /wwwroot/private/
  ServerName www.11-hcz.cn
</VirtualHost>
<Directory "/wwwroot/private">
  AllowOverride None
  Require all granted
</Drectory>

重新加载httpd配置文件

systemctl reload httpd

防火墙放行82好端口

firewall-cmd --add-port=82/tcp

SELinux配置

安装semanage工具

yum provides semanage
yum install policycoreutils-python-2.5-22.el7.x86_64

更改SELinux文件标签

semanage fcontext -a -t httpd_sys_content_t '/wwwroot(/.*)?'
restorecon -Rv /wwwroot/

添加SELinux放行端口

semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 82
semanage port -l | grep http