Apache(httpd)的简介、安装以及如何使用

一、Apache网站服务的概述

Apache的起源以及特点

  • 出现: 针对之前出现的若干个web服务器程序进行整合,完善后形成的软件
  • 管理维护: 由ASF负责
  • 主要特点:
    (1)开放源代码
    (2)跨平台使用,支持绝大多数硬件平台,支持所有的unix系统和linux系统,支持大多数windows平台
    (3)支持多种web编程语言,perl,php,python,java等
    (4)模块化设计,根据所需功能去安装不同的模块
    (5)运行非常稳定,支持大负载访问的web站点
    (6)安全性高,及时修复已发现的漏洞

二、Apache服务器的安装

(1)准备工作

  • httpd服务的默认监听端口: 80
    (为了避免端口冲突,先用rpm的方式卸载已安装的httpd)
[root@centos7-007 ~]# rpm -e httpd --nodeps 
错误:未安装软件包 httpd 
  • Apache需要apr、pcre等软件包的支持,从系统光盘预安装这些软件及开发工具包
[root@centos7-007 ~]# mkdir /media  (创建挂载目录)
[root@centos7-007 ~]# mount /dev/cdrom /media/cdrom   (把镜像文件挂载)
[root@centos7-007 ~]# vim /etc/yum.repos.d/centos.repo   
(写一个yum库,写之前,进去目录中,先用rm -rf * 删除一下文件在创建,后缀是.repo就行)
[aaa]                                                           
name=这是一个本地YUM                             
baseurl=file:///media/cdrom   (这里写镜像挂载的目录即可)              
enabled=1                                                         
gpgcheck=0    
[root@centos7-007 ~]#  yum  -y  install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel apr-util-devel apr-util pcre-devel pcre openldap-devel
为了避免系统中存在一些依赖性关系包没有安装的问题,可以使用yum装,方便一点

(2)源码编译安装Apache

[root@centos7-007 ~]# ll  (上传源码包)
总用量 8268
-rw-------. 1 root root    1220 9   3 18:16 anaconda-ks.cfg
-rw-r--r--  1 root root 8460433 12  9 17:25 httpd-2.4.25.tar.gz
[root@centos7-007 ~]#  tar zxvf httpd-2.4.25.tar.gz -C /usr/src/ (解压到指定目录)
[root@centos7-007 ~]#  cd /usr/src/httpd-2.4.25/  (切换到解压的目录)
[root@centos7-007 httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi && make && make install 
(根据需要进行配置,加载相应的模块,&&是执行完前一个命令在执行后一个命令,直接使用&&编译及安装)
[root@centos7-007 httpd-2.4.25]# cd
[root@centos7-007 ~]# ls /usr/local/httpd/  (确认安装结果,安装完成会有12个文件)
bin    cgi-bin  error   icons    logs  manual
build  conf     htdocs  include  man   modules
[root@centos7-007 ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/  (创建软连接)
[root@centos7-007 ~]# cp /usr/local/httpd/bin/apachectl  /etc/init.d/httpd 
(把Apache的服务脚本复制到/etc/init.d下并且命名为httpd)
[root@centos7-007 ~]# vi /etc/init.d/httpd  
(进入刚刚复制的文件,再第二行写入chkconfig: 35 85 21 ,用于添加系统服务时识别)
#!/bin/sh
#chkconfig: 35 85 21 
。。。。。
添加chkconfig 识别配置,将该服务在35 级别启动;启动和关闭的顺序分别为85 21
保存退出
[root@centos7-007 ~]# chkconfig  --add  httpd (添加httpd为系统服务)
发现已经可以通过systemctl管理http服务
[root@centos7-007 ~]# systemctl start httpd
[root@centos7-007 ~]# systemctl status httpd
 httpd.service - (null)
   Loaded: loaded (/etc/rc.d/init.d/httpd; bad; vendor preset: disabled)
   Active: active (running) since  2020-12-09 17:36:45 CST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 18095 ExecStart=/etc/rc.d/init.d/httpd start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/httpd.service
           ├─18098 /usr/local/httpd/bin/httpd -k start
           ├─18099 /usr/local/httpd/bin/httpd -k start
           ├─18100 /usr/local/httpd/bin/httpd -k start
           └─18101 /usr/local/httpd/bin/httpd -k start

12 09 17:36:45 centos7-007 systemd[1]: Starting (null)...
12 09 17:36:45 centos7-007 httpd[18095]: AH00558: httpd: Co...
12 09 17:36:45 centos7-007 systemd[1]: Started (null).
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos7-007 ~]# 
*****如果不把apache添加到系统服务里那么启动apache服务的命令为:
[root@centos7-007 ~]# /usr/loacl/httpd/bin/apachectl start\stop\restart  (在主目录里直接启用)
*****可以查看端口号
[root@centos7-007 ~]# netstat   -anpt  | grep httpd  
(最小安装的centos可能会没有netstat这条命令)
tcp6       0      0 :::80                   :::*                    LISTEN      18098/httpd     
[root@centos7-007 ~]# yum -y install vim net-tools (安装vim以及网络工具如netstat)

三、Apache重要子目录的作用

我这里是安装到/usr/local下了,但是主目录里的子目录是相同的

  • /usr/local/httpd/bin
    存放各种执行程序文件,包括主程序httpd、服务控制工具apachectl等
  • /usr/local/httpd/logs
    存放httpd服务的日志文件
  • /usr/local/httpd/conf
    存放各种配置文件、主配置文件httpd.conf、增强配置子目录extra等
  • /usr/local/httpd/htdocs
    存放网页文档,默认首页文件是index.html,可以在主配置文件里进行修改

四、利用apache服务配合dns等服务结合使用

安装完apache服务后,只要服务处于开启状态,那么就可以直接进行访问
访问的地址就是apache服务器的地址
打开一台win7或者真机也可以,同一网段同一网卡,直接进行访问,默认页面就是 It works!
win7进行访问
可以去主目录下的/htdocs下修改index.html从而修改网页内容

[root@centos7-007 ~]# vim /usr/local/httpd/htdocs/index.html 
<html><body><h1>It works!</h1></body></html>
修改为:
aaaaaa
重启服务,再次使用win7访问,发现页面已经变成aaaaaa
[root@centos7-007 ~]# systemctl restart httpd

再次访问

apache和dns相结合使用

要求:以www.aaa.com这个域名访问网站
步骤:

*****安装dns服务 (之前已经挂载光盘并且已经写了yum库文件)
[root@centos7-007 ~]# yum -y install bind
[root@centos7-007 ~]# vim /etc/named.conf (进入dns的主配置文件)
。。。。。 
options {
    
    
        listen-on port 53 {
    
     192.168.100.7; };  (地址改为本机地址)
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     {
    
     any; };  (允许所有主机可解析)
。。。。。
zone "." IN {
    
    
        type hint;
        file "named.ca";
};
zone "aaa.com" IN {
    
        (从上面的zone区域复制四行到下面,然后修改成要求的数据)
        type master;
        file "aaa.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
保存退出
*****添加区域配置文件
[root@centos7-007 ~]# cd /var/named/ 
[root@centos7-007 named]# ll
总用量 16
drwxrwx--- 2 named named    6 4   1 2020 data
drwxrwx--- 2 named named    6 4   1 2020 dynamic
-rw-r----- 1 root  named 2253 4   5 2018 named.ca
-rw-r----- 1 root  named  152 12 15 2009 named.empty
-rw-r----- 1 root  named  152 6  21 2007 named.localhost
-rw-r----- 1 root  named  168 12 15 2009 named.loopback
drwxrwx--- 2 named named    6 4   1 2020 slaves
[root@centos7-007 named]# cp named.localhost aaa.ca 
(复制模板文件到新的aaa.ca,这个新的文件必须和刚才在主配置文件里的 file项的文件名相同)
[root@centos7-007 named]# vim aaa.ca  (编写区域配置文件)
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
修改为:
$TTL 1D
@       IN SOA  aaa.com.      mail.aaa.com.  (
                                        2020120900 ; serial (这个随便修改成10位数即可)
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      www.aaa.com.
www IN A 192.168.100.7     (地址是本机地址)
保存退出
*****把主配置文件和区域配置文件的属主和属组改成named
[root@centos7-007 named]# chown named:named aaa.ca    
[root@centos7-007 named]# chown named:named /etc/named.conf 
[root@centos7-007 named]# systemctl start named  (开启dns服务)
*****修改apache的主配置文件
[root@centos7-007 named]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。。 (在200行修改httpd的主机名为www.aaa.com)
200 ServerName www.aaa.com:80   200+G 即可跳转到200行,修改为www.aaa.com)
。。。。。
保存退出
[root@centos7-007 named]# apachectl -t (检查主配置文件)
Syntax OK   (没有问题)
[root@centos7-007 named]# systemctl restart httpd (重启apache服务)
修改win7的dns地址为apache服务器的地址,使用www.aaa.com进行访问

修改win7的dns
使用www.aaa.com进行访问
成功!!!!

五、httpd.conf主配置文件详解

vim /usr/local/httpd/conf/httpd.conf (主配置文件路径)
组成: 注释行和设置行两部分组成
注释行: 以“#”开头,包含相关配置内容的说明和解释

(1)全局配置项

特点: 独立存在,使用“关键字 值”这种配置格式
重要的配置项:

  • ServerRoot : 设置httpd 服务器的根目录
    (默认httpd 安装的位置就是该根目录的位置)
  • Listen : httpd 服务监听的端口
    (默认监听TCP 的80 端口)
  • ServerName: Web 站点完整的主机名
    (主机名 + 域名)
  • DocumentRoot: 默认的网站根目录,也就是网页文档实际所存放的位置
  • DirectoryIndex: 网站的默认索引页,可以设置多个首页文件,以空格分开;
    (默认的是index.html)
  • PidFile: 用于设置保存httpd 进程号文件所在的位置,
    (默认保存地址: /usr/local/httpd/logs/httpd.pid)

(2)区域配置项

特点: 使用一对组合标记,限定了配置项的作用范围,区域配置项只对区域内有效
示例:

[root@centos7-007 ~]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。 (如:下面这个就算区域配置项)
<Directory "/usr/local/httpd/htdocs">
    #
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
。。。。。
******格式
<Directory>   
配置项
htdox
</Directory>

六、apache(httpd)服务的访问控制

访问控制的目的: 通过访问控制尽量提升web服务器的安全

(1)客户机地址限制

主配置文件: /usr/local/httpd/conf/httpd.conf
默认情况下网站服务器是对所有客户机开放的,网页目录未作任何限制

配置项:

[root@centos7-007 ~]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。  (进入主配置文件找到这个区域配置项)
<Directory "/usr/local/httpd/htdocs">
    #
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted   (下面的所有进行的修改,都是在这里,现在这个“Require all granted ”就是允许所有地址访问)
</Directory>
。。。。。
根据不同情况进行相关的修改
1)拒绝所有主机访问:
应改为:  Require   all   denied
2)仅允许某个IP地址的主机访问: 
应改为: Require  ip  主机的IP地址
3)仅允许某个网段的主机访问:   
应改为: Require  ip   网段 (可以跟多个网段,中间用空格隔开)
4)仅拒绝某个地址或某个网段: 
使用not 禁止访问时,配置项需要放在<RequireAll> </ReauireAll> 区域配置项中
该配置应该是:  (直接往里写入即可,就是在容器里由加了个容器)
<RequireAll> 
Require  not  ip  某个地址  某个网段 (仅拒绝某个地址或网段)
Require  all  granted   (允许所有)
</ReauireAll>
如果要拒绝某个主机名或域名的访问,则修改为:
<RequireAll> 
Require  not  host   主机名或域名
Require  all  granted   (允许所有)
</ReauireAll>

(2)用户授权限制

用户授权的限制的目的: 实现在访问apache网站服务器时需要用户名和密码的验证才能 正常访问网站
通过识别用户身份,达到控制用户访问网站特定目录的功能
httpd服务器支持的认证方式有两种:

  • 摘要认证(Digest)
  • 基本认证(Basic)
    (如果要实现摘要认证,需要在编译安装apache的时候添加“--enable-auth-digest" 选项模块,并且不是所有的浏览器都支持摘要认证,所以我这里就不做详细的解释了)

基本认证

基本认证是httpd服务器的基本功能
要求: 以基本认证的方式实现对网站的访问控制
步骤:

1)创建用户认证数据文件:(使用apache安装后自带的htpasswd工具进行创建)
[root@centos7-007 ~]# htpasswd -c /usr/local/httpd/conf/.awspwd aaa 
(创建一个隐藏文件,该文件中包含一个叫aaa的用户)
New password:     (按照提示输入两次密码)
Re-type new password: 
Adding password for user aaa  (提示创建成功)
[root@centos7-007 ~]# htpasswd /usr/local/httpd/conf/.awspwd bbb
(再次创建一个用户bbb)
New password: 
Re-type new password: 
Adding password for user bbb
[root@centos7-007 ~]# cat /usr/local/httpd/conf/.awspwd (可以查看已经创建的用户)
aaa:$apr1$rWLboxDd$fy/XHTvB6KbCUYbFzifTt.
bbb:$apr1$Rsc7/LIy$0Uff9/HCiv7IKKiajhHoG0
2)添加用户授权配置:(需要修改apache主配置文件中的特定区域)
[root@centos7-007 ~]# vim /usr/local/httpd/conf/httpd.conf (进入主配置文件)
。。。。。  (找到网站根目录区域)
#
DocumentRoot "/usr/local/httpd/htdocs"
<Directory "/usr/local/httpd/htdocs">
    #
。。。。。
        #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
。。。。。(就是上面允许客户机地址配置项的区域配置项里)
把“Require all granted”删除
修改为:
 AuthName  “www.aaa.com”   (这个写自己上面修改的域名即可,一般配合dns)
 AuthType  Basic      (认证类型是基本认证)
 AuthUserFile /usr/local/httpd/conf/.awspwd  
(认证文件,也就是所保存的用户名和密码的数据文件)
 Require valid-user  (授权所有的合法用户)
保存退出
[root@centos7-007 ~]# systemctl restart httpd (重启服务)

再次刷新网页发现需要输入用户名和密码才能访问(此时是两个用户aaa和bbb都可以访问)
发现访问使需要输入用户名和密码
成功!!!!

  • 如果只想要aaa用户一个可以访问httpd的话,则把 “Require valid-user” 改为 “Require user aaa”(如果想要授权多个用户则使用空格隔开即可)
[root@centos7-007 ~]# vim /usr/local/httpd/conf/httpd.conf 
。。。。。
 AuthName  “www.aaa.com”
 AuthType  Basic
 AuthUserFile /usr/local/httpd/conf/.awspwd
 Require user aaa   (改这里就行)
。。。。。
[root@centos7-007 ~]# systemctl restart httpd (重启服务即可)

再次访问发现只有aaa用户可以进行访问,bbb用户无法进行访问,刚重启完服务可能还没生效,等一会就好了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功!!!!

七、构建虚拟web主机

  • 虚拟web主机定义: 在同一台服务器上运行多个web站点,每个站点不独立占用整个服务器
  • 优点: 充分利用服务器硬件资源,降低网站构建以及运行成本
    三种类型的主机:
    (1)基于域名的虚拟主机:
    网站使用不同的域名,相同的ip地址,需要dns服务器支持,最广泛,最普遍的虚拟主机
    (2)基于ip地址:
    使用不同的域名对应不同的ip,需要服务器配备多个网卡接口,应用不广泛
    (3)基于端口的:
    不使用域名,使用相同的ip地址不同的tcp端口号,用户访问时必须指定网站的端口号,应用不广泛

(1)基于域名的虚拟主机示例:

要求: 构建www.aaa.com和www.bbb.com这种基于域名的虚拟主机
步骤:

[root@centos7-007 ~]# vim /etc/named.conf  (因为之前已经搭建过dns所以这里直接加一个区域即可)
zone "." IN {
    
    
        type hint;
        file "named.ca";
};

zone "aaa.com" IN {
    
    
        type master;
        file "aaa.ca";
};
zone "bbb.com" IN {
    
    
        type master;
        file "bbb.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
保存退出
[root@centos7-007 ~]# vim /etc/named.conf 
[root@centos7-007 named]# cp aaa.ca bbb.ca (把写好了aaa.ca直接复制一份即可)
[root@centos7-007 named]# vim bbb.ca 
$TTL 1D
@       IN SOA  bbb.com.      mail.bbb.com.  (
                                        2020120900      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      www.bbb.com.
www IN A 192.168.100.7
[root@centos7-007 named]# chown named:named bbb.ca (不要忘了给属主和属组) 
[root@centos7-007 named]# systemctl restart named (重启dns服务)
[root@centos7-007 named]# cd /usr/local/httpd/htdocs/ (cd到网站根目录)
[root@centos7-007 htdocs]# mkdir aaa bbb  (为两个域名准备网站根目录)
[root@centos7-007 htdocs]# ll
总用量 4
drwxr-xr-x 2 root root 6 12  9 22:17 aaa
drwxr-xr-x 2 root root 6 12  9 22:17 bbb
-rw-r--r-- 1 root root 7 12  9 18:00 index.html
[root@centos7-007 htdocs]# echo "aaaaa" > /usr/local/httpd/htdocs/aaa/index.html
[root@centos7-007 htdocs]# echo "bbbbb" > /usr/local/httpd/htdocs/bbb/index.html
(为两个网站的页面写入内容)
[root@centos7-007 htdocs]# vim /usr/local/httpd/conf/httpd.conf
487行,将Include 前默认存在的“# 去掉,表示加载独立的配置文件)
。。。。。
486 # Virtual hosts
487 Include conf/extra/httpd-vhosts.conf
。。。。。
保存退出
[root@centos7-007 htdocs]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf  (修改独立配置文件)
上面的注释行不用管
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/httpd/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.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 webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/httpd/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
修改为:
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/httpd/htdocs/aaa" (网站的根目录)
    ServerName www.aaa.com  (网站的域名)
    ServerAlias www.dummy-host.example.com  (网站别名,可省略)
    ErrorLog "logs/www.aaa.com-error_log"  (网站错误日志名称)
    CustomLog "logs/www.aaa.com-access_log" common  (网站成功日志的名称)
<Directory "/usr/local/httpd/htdocs">   (授权所有用户都能访问网站,可加可不加,下面的和这个一样)
Require   all granted
</Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/httpd/htdocs/bbb"
    ServerName www.bbb.com
    ErrorLog "logs/www.bbb.com-error_log"
    CustomLog "logs/www.bbb.com-access_log" common
<Directory "/usr/local/httpd/htdocs">  
Require   all granted
</Directory>

</VirtualHost>
保存退出
[root@centos7-007 htdocs]# systemctl restart httpd (重启服务 

验证访问,发现两个不同域名可以访问不同的页面
www.aaa.com
www.bbb.com
成功!!!!

(2)基于ip地址的虚拟主机示例:

[root@centos7-007 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
。。。。。 (添加一个网址)
IPADDR2=192.168.100.8
PREFIX=24
。。。。。
[root@centos7-007 ~]# systemctl restart network (重启网卡)
[root@centos7-007 ~]# ip a (发现成功添加了一个网址192.168.100.8)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:44:ad:db brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.7/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.8/24 brd 192.168.100.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::7762:f351:dbfc:cb0e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
准备两个网站的根目录(上一个已经创建好了所以这里就不创建了)
在主配置文件添加虚拟主机支持 (上一个实验已经做过,这里就不做了)
。。。。。
51 #Listen 12.34.56.78:80   (在52行修改并添加下面的地址和端口号)
52 Listen 192.168.100.7:80
53 Listen 192.168.100.8:80
。。。。。
[root@centos7-007 ~]# systemctl restart httpd (重启服务)
[root@centos7-007 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf  (修改独立配置文件)
如果是直接做这个的话,这里只需要修改一下“<VirtualHost 192.168.100.7:80>”中的地址
修改“DocumentRoot "/usr/local/httpd/htdocs/aaa"”中的网站根目录和修改日志的名称即可
<VirtualHost 192.168.100.7:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/httpd/htdocs/aaa"
    ServerName www.aaa.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.aaa.com-error_log"
    CustomLog "logs/www.aaa.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.100.8:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/httpd/htdocs/bbb"
    ServerName www.bbb.com
    ErrorLog "logs/www.bbb.com-error_log"
    CustomLog "logs/www.bbb.com-access_log" common
</VirtualHost>
保存退出
[root@centos7-007 ~]# systemctl restart httpd (重启服务)

如果之前做了用户授权配置的话,要记得把主配置文件中的这个改成Require all granted (允许所有人访问)
在这里插入图片描述
验证访问,发现两个网址可以访问不同的页面

192.168.100.7
192.168.100.8
成功!!!!

(3)基于端口的虚拟主机示例:

基于80端口和8080端口的

[root@centos7-007 ~]# vim /usr/local/httpd/conf/httpd.conf  (进入主配置文件)
。。。。。 (修改52行的Listen选项,添加一个8080端口)
51 #Listen 12.34.56.78:80
 52 Listen 80
 53 Listen 8080
 54 
 。。。。。
 保存退出
 [root@centos7-007 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf (修改独立配置文件)
 <VirtualHost *:80>  (第一个只需要指定网站根目录、日志名称即可)
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/httpd/htdocs/aaa"
    ServerName www.aaa.com  (域名无需修改,这是我做上面的实验修改的)
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.aaa.com-error_log"
    CustomLog "logs/www.aaa.com-access_log" common
</VirtualHost>

<VirtualHost *:8080> (第二个指定访问端口、网站根目录、日志名称)
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/httpd/htdocs/bbb"
    ServerName www.bbb.com  (域名无需修改,这是我做上面的实验修改的)
    ErrorLog "logs/www.bbb.com-error_log"
    CustomLog "logs/www.bbb.com-access_log" common
</VirtualHost>
保存退出
[root@centos7-007 ~]# systemctl restart httpd (重启服务)

访问验证,发现当访问httpd服务器地址后面跟不同的端口号时,访问的页面也不同
默认就是80端口,所以访问80端口时不用加端口号,但是访问8080端口得加
在这里插入图片描述
在这里插入图片描述
成功!!!!

猜你喜欢

转载自blog.csdn.net/rzy1248873545/article/details/110915506