配置 Apache 虚拟主机_apache

一.配置基于 IP 地址的虚拟主机,第一个虚拟主机监听 IP 为 192.168.100.100 访问 benet 网站根目录,第二个虚拟主机监听 IP 地址为 192.168.100.200 访问 accp 网站根目录,使用 http://192.168.100.100 和 http://192.168.100.200 验证两个虚拟主机

二.配置基于端口的虚拟主机,第一个虚拟主机监听 IP 地址为 192.168.100.10:8080 访问 benet 网站根目录 , 第 二 个 虚 拟 主 机 监 听 IP 地 址 为 192.168.100.10:8181 访 问 accp 网 站 根 目录, 使 用 http://192.168.100.10:8080 和 http://192.168.100.10:8181 访问两个站点

三.配置虚拟域主机头虚拟主机,第一个虚拟主机监听 IP 地址 192.168.100.10 域名为 www.benet.com 访问 benet 网站根目录,第二个虚拟主机监听 IP 地址 192.168.100.10 域名 www.accp.com 访问 accp 网 站根目录

四.配置基本身份验证客户端访问 ​​www.benet.com​​ 输入账户密码验证




一、 安装 apach 基础服务优化命令添加系统服务

1、在 Centos01 上安装 apache 服务配置优化命令

1)在 Centos01 上挂载 apache 程序光盘

配置 Apache 虚拟主机_centos_02

2)挂载 apache 光盘到/mnt 目录

[root@centos01 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# ls /mnt/

3)解压源代码程序到/usr/src 目录

[root@centos01 ~]#tar zxvf /mnt/httpd-2.2.17.tar.gz -C /usr/src/
httpd-2.2.17/Makefile.win
httpd-2.2.17/httpd.spec
[root@centos01 ~]# ls /usr/src/
debug httpd-2.2.17 kernels

4)配置源代码 apache

[root@centos01 ~]# cd /usr/src/httpd-2.2.17/
[root@centos01 httpd-2.2.17]# ./configure \
--prefix=/usr/local/httpd \ //指定安装位置
> --enable-so\ //加载动态模块
> --enable-rewrite\ //支持地址重写
> --enable-charset-lite\ //支持更多字符编码
> --enable-cgi //支持脚本功能

5)编译安装 apache 服务查看是否安装成功

[root@centos01 httpd-2.2.17]# make && make install
[root@centos01 httpd-2.2.17]# ls -ld /usr/local/httpd/
drwxr-xr-x 15 root root 175 7 月 20 19:00 /usr/local/httpd/

6)优化命令检查是否优化成功

[root@centos01 httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@centos01 httpd-2.2.17]# httpd -t
httpd: Could not reliably determine the server's fully qualified domain name, using
fe80::20c:29ff:fe4c:c769 for ServerName
Syntax OK

2、优化 apache 服务

1)生成 apache 服务控制文件添加执行权限

[root@centos01 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@centos01 ~]# chmod +x /etc/init.d/httpd

2)修改服务控制文件

[root@centos01 ~]# vim /etc/init.d/httpd
#!/bin/sh
#chkconfig:35 80 35 //控制运行级别 35 启动 apache,开机第 80 启动服
务,关机第 35 停服务
#Description:Apache Server //服务描述

3)添加启动服务设置开机自动启动

[root@centos01 ~]# chkconfig --add httpd
[root@centos01 ~]# chkconfig httpd on

3、修改 apache 服务配置监听,配置支持虚拟主机网文网站根目录

1)修改 apache 配置文件,配置监听 IP 地址端口允许访问虚拟主机根目录

[root@centos01 ~]# vim /usr/local/httpd/conf/httpd.conf
ServerName 192.168.100.10:80 //指定监听 IP 地址和端口
Include conf/extra/httpd-vhosts.conf //开启虚拟主机功能
<Directory "/www/"> //指定虚拟主机网站根目录
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all //允许所有人访问
</Directory>

2)创建虚拟主机根目录

[root@centos01 ~]# mkdir -p /www/benet
[root@centos01 ~]# mkdir -p /www/accp
[root@centos01 ~]# echo "www.benet.com" > /www/benet/index.html
[root@centos01 ~]# echo "www.accp.com" > /www/accp/index.html

3)检查配置文件是否有错误

[root@centos01 ~]# httpd -t
Syntax OK

二、配置基于 IP 地址

1、配置虚拟主机生成网卡

1)配置第一个虚拟主机的 IP 地址

[root@centos01 ~]# cd /etc/sysconfig/network-scripts/
[root@centos01 network-scripts]# cp ifcfg-ens32 ifcfg-ens32:1
[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32:1
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32:1
DEVICE=ens32:1
ONBOOT=yes
IPADDR=192.168.100.100
NETMACK=255.255.255.0

2)重启网卡服务查看虚拟第一个虚拟主机 IP 地址

[root@centos01 ~]# systemctl restart network
[root@centos01 ~]# ifconfig ens32:1
ens32:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.100 netmask 255.255.255.0 broadcast
192.168.100.255
ether 00:0c:29:4c:c7:69 txqueuelen 1000 (Ethernet)

3)配置第二个虚拟主机的 IP 地址

[root@centos01 ~]# cd /etc/sysconfig/network-scripts/
[root@centos01 network-scripts]# cp ifcfg-ens32 ifcfg-ens32:2
[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32:2
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32:2
DEVICE=ens32:2
ONBOOT=yes
IPADDR=192.168.100.200
NETMACK=255.255.255.0

4)重启网卡服务查看虚拟第一个虚拟主机 IP 地址

[root@centos01 ~]# systemctl restart network
[root@centos01 ~]# ifconfig ens32:2
ens32:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.200 netmask 255.255.255.0 broadcast
192.168.100.255
ether 00:0c:29:4c:c7:69 txqueuelen 1000 (Ethernet)

2、修改虚拟主机配置文件支持基于 IP 地址的虚拟主机

1)修改虚拟主机主配置

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
NameVirtualHost 192.168.100.10:80 //监听虚拟主机IP 地址和端口
<VirtualHost 192.168.100.100:80> //第一个虚拟主机监听 IP 地址和端口
DocumentRoot "/www/benet/" //第一个虚拟主机网站根目录
ServerName 192.168.100.100 //第一个虚拟主机域名
ErrorLog "logs/benet.com-error_log" //第一个网站失败日志
CustomLog "logs/benet.com-access_log" common //第一个网站成功日志
</VirtualHost>
<VirtualHost 192.168.100.200:80>
DocumentRoot "/www/accp/"
ServerName 192.168.100.200
ErrorLog "logs/accp.com-error_log"
CustomLog "logs/accp.com-access_log" common
</VirtualHost>

2)检查 apache 配置文件

[root@centos01 ~]# apachectl -t
[Fri Jul 22 18:47:48 2022] [warn] NameVirtualHost 192.168.100.10:80 has no
VirtualHosts
Syntax OK

3)重启 apache 服务

[root@centos01 ~]# systemctl restart httpd
[root@centos01 ~]# netstat -anptu | grep httpd
tcp6 0 0 :::80 :::* LISTEN
38199/httpd

3、验证基于 IP 地址的虚拟主机

1)访问一个虚拟主机

配置 Apache 虚拟主机_虚拟主机_03

2)访问第二个虚拟主机

配置 Apache 虚拟主机_虚拟主机_04

三、配置基于端口的虚拟主机

1、修改 apache 主配置文件支持基于端口的虚拟主机

1)修改 apache 主配置文件

[root@centos01 ~]# vim /usr/local/httpd/conf/httpd.conf
Listen 80 //apache 默认站点监听端口
Listen 8080 //第一个虚拟主机监听端口
Listen 8181 //第二个虚拟主机监听端口
ServerName 192.168.100.10:80 //apache 默认站点监听 IP 地址和端口有
<Directory "/www/"> //允许访问虚拟主机网站根目录
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

2)检查 apache 配置文件

[root@centos01 ~]# apachectl -t
[Fri Jul 22 18:54:56 2022] [warn] NameVirtualHost 192.168.100.10:80 has no
VirtualHosts
Syntax OK

2、修改虚拟主机配置文件支持基于端口的虚拟主机

1)修改 apache 虚拟主机主配置文件

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
NameVirtualHost 192.168.100.10:80 //监听虚拟主机 IP 地址和端口
<VirtualHost 192.168.100.10:8080> //第一个网站服务器监听 IP 地址和端口
DocumentRoot "/www/benet/"
ServerName 192.168.100.10
ErrorLog "logs/benet.com-error_log"
CustomLog "logs/benet.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.100.10:8181>
DocumentRoot "/www/accp/"
ServerName 192.168.100.10
ErrorLog "logs/accp.com-error_log"
CustomLog "logs/accp.com-access_log" common
</VirtualHost>

2)检查 apache 配置文件是否错误

[root@centos01 ~]# apachectl -t
[Fri Jul 22 18:57:17 2022] [warn] NameVirtualHost 192.168.100.10:80 has no
VirtualHosts
Syntax OK

3)重新启动 apache 服务监听 apache 端口

[root@centos01 ~]# systemctl restart network
[root@centos01 ~]# netstat -anptu | grep httpd
tcp6 0 0 :::80 :::* LISTEN
38199/httpd

3、 客户端访问验证基于端口的虚拟主机

1) apache 默认站点监听的 IP 地址和端

配置 Apache 虚拟主机_虚拟主机_05

2) 访问第一个虚拟主机

配置 Apache 虚拟主机_虚拟主机_06

3)访问第二个虚拟主机

配置 Apache 虚拟主机_apache_07

四 、 配 置 基 于 域 名 的 虚 拟 主 机 , ​​www.benet.com​​​ ​​和www.accp.com​​ 放访问第一个和第二个虚拟主机

1、网站服务器和 DNS 服务器配置 IP 地址

1)网站服务器配置 IP 地址和 DNS,重启网络服务查看配置 DNS 服务器 IP地址

[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.10
NETMACK=255.255.255.0
DNS1=192.168.100.20
[root@centos01 ~]# systemctl restart network
[root@centos01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.100.20

2)DNS 服务器配置 IP 地址和 DNS,重启网络服务查看配置 DNS 服务 IP 地址

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.20
NETMACK=255.255.255.0
DNS1=192.168.100.20
[root@centos02 ~]# systemctl restart network
[root@centos02 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.100.20

3)Windows10 客户端配置 IP 地址和 DNS

配置 Apache 虚拟主机_apache_08

2、安装搭建 DNS 服务器

1)安装 DNS 服务器

[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头 V3 RSA/SHA256 Signature,
密钥 ID f4a80eb5: NOKEY
准备中... #################################
[100%]
正在升级/安装...
1:bind-32:9.9.4-50.el7 #################################
[100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-utils-9.9.4-50.el7.x86_64.rpm
警告:/mnt/Packages/bind-utils-9.9.4-50.el7.x86_64.rpm: 头 V3 RSA/SHA256
Signature, 密钥 ID f4a80eb5: NOKEY
准备中... #################################
[100%]
软件包 bind-utils-32:9.9.4-50.el7.x86_64 已经安装
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头 V3 RSA/SHA256
Signature, 密钥 ID f4a80eb5: NOKEY
准备中... #################################
[100%]
正在升级/安装...
1:bind-chroot-32:9.9.4-50.el7 #################################
[100%]

2)修改 DNS 服务器主配置文件检查是否错误

[root@centos02 ~]# vim /etc/named.conf
options {
listen-on port 53 { any; }; //监听 DNS 服务器任意 IP 地址的 53 号端口
directory "/var/named"; //DNS 区域数据库保存位置
allow-query { 192.168.100.0/24; }; //允许 192.168.100.0 网络DNS 查询
};
zone "benet.com" IN { //第一个区域名字 benet.com
type master; //配置为主要 DNS 服务器
file "/var/named/benet.com.zone"; //第一个区域的数据库保存位置和文件名字
};
zone "accp.com" IN {
type master;
file "/var/named/accp.com.zone";
};
[root@centos02 ~]# named-checkconf /etc/named.conf

3)配置第一个正向解析区域数据库检查是否错误

[root@centos02 ~]# vim /var/named/benet.com.zone
$TTL 86400
@ SOA benet.com. root.benet.com.(
2022072201
1H
15M
1W
1D
)
@ NS centos02.benet.com.
centos02 A 192.168.100.20
www A 192.168.100.10
[root@centos02 ~]# named-checkzone benet.com. /var/named/benet.com.zone
zone benet.com/IN: loaded serial 2022072201
OK

4)配置第二个正向解析区域数据库价差是否错误

[root@centos02 ~]# vim /var/named/accp.com.zone 
$TTL 86400
@ SOA accp.com. root.accp.com.(
2022072201
1H
15M
1W
1D
)
@ NS centos02.accp.com.
centos02 A 192.168.100.20
www A 192.168.100.10
[root@centos02 ~]# named-checkzone accp.com. /var/named/accp.com.zone
zone accp.com/IN: loaded serial 2022072201
OK

5)启动 DNS 服务设置开机自动启动服务

[root@centos02 ~]# systemctl start named
[root@centos02 ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service
to /usr/lib/systemd/system/named.service.

6)验证 DNS 解析

[root@centos02 ~]# nslookup www.benet.com
Server: 192.168.100.20
Address: 192.168.100.20#53
Name: www.benet.com
Address: 192.168.100.10
[root@centos02 ~]# nslookup www.accp.com
Server: 192.168.100.20
Address: 192.168.100.20#53
Name: www.accp.com
Address: 192.168.100.10

3、修改 apache 主配置

1)修改 apache 主配置文件支持虚拟主机

[root@centos01 ~]# vim /usr/local/httpd/conf/httpd.conf
ServerName 192.168.100.10:80
<Directory "/www/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

2)检查 apache 主配置文件是否错误

[root@centos01 ~]# apachectl -t
[Fri Jul 22 19:16:35 2022] [warn] NameVirtualHost 192.168.100.10:80 has no
VirtualHosts
Syntax OK

4、修改虚拟主机配置主配置文件支持主机头的虚拟主机

1)修改虚拟主机主配置文件

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
NameVirtualHost www.benet.com:80 //第一个虚拟主机监听域名和端口
NameVirtualHost www.accp.com:80 //第二个虚拟主机监听域名和端口
<VirtualHost 192.168.100.10:80> //第一个虚拟主机监听 IP 地址和端口
DocumentRoot "/www/benet/"
ServerName www.benet.com //第一个虚拟主机捆绑 DNS 域名
ErrorLog "logs/benet.com-error_log"
CustomLog "logs/benet.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.100.10:80>
DocumentRoot "/www/accp/"
ServerName www.accp.com
ErrorLog "logs/accp.com-error_log"
CustomLog "logs/accp.com-access_log" common
</VirtualHost>

2)检查 apache 配置文件是否配置错误

[root@centos01 ~]# apachectl -t
[Fri Jul 22 19:21:22 2022] [warn] NameVirtualHost www.accp.com:80 has no
VirtualHosts
Syntax OK

3)重启 apache 服务监听端口

[root@centos01 ~]# systemctl restart httpd
[root@centos01 ~]# netstat -anptu | grep httpd
tcp6 0 0 :::80 :::* LISTEN
39892/httpd

5、客户端验证访问两个虚拟主机

1)访问第一个虚拟主机

配置 Apache 虚拟主机_apache_09

2)访问第二个虚拟主机

配置 Apache 虚拟主机_apache_10

6、配置客户端访问 ​www.benet.com​​ 虚拟主机配置基本身份验证

1)挂载系统光盘到/mnt 目录

[root@centos01 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# ls /mnt/
CentOS_BuildTag EULA images LiveOS repodata RPMGPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7
TRANS.TBL

2)安装 httpd-tools 工具

[root@centos01 ~]# rpm -ivh /mnt/Packages/httpd-tools-2.4.6-
67.el7.centos.x86_64.rpm
警告:/mnt/Packages/httpd-tools-2.4.6-67.el7.centos.x86_64.rpm: 头 V3
RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... #################################
[100%]
正在升级/安装...
1:httpd-tools-2.4.6-67.el7.centos #################################
[100%]

3)生成验证数据库,验证用户为 admin 并设置密码

[root@centos01 ~]# htpasswd -c /usr/local/httpd/password admin
New password:
Re-type new password:
Adding password for user admin

4)修改 apache 主配置文件支持访问 ​www.benet.com​​ 虚拟主机身份验证

[root@centos01 ~]# vim /usr/local/httpd/conf/httpd.conf
<Directory "/www/benet/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthName "username password"
AuthType Basic
AuthUserFile /usr/local/httpd/password
Require valid-user
</Directory>

4)重启 apache 服务

[root@centos01 ~]# systemctl restart httpd
[root@centos01 ~]# netstat -anptu | grep httpd
tcp6 0 0 :::80 :::* LISTEN
40261/httpd

5)客户端访问验证

配置 Apache 虚拟主机_虚拟主机_11

配置 Apache 虚拟主机_apache_12