apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制

1.apcahe 简介

1.apache是企业中常用的web服务,用来提供http://(超文本传输协议)
2.apache的安装部署
yum install httpd -y ##apache软件
yum install httpd-manual ##apache的手册
systemctl start httpd
systemctl enable httpd
firewall-cmd --list-all ##列出火墙信息
firewall-cmd --permanent --add-service=http ##永久允许http
firewall-cmd --reload ##火墙重新加载策略
/var/www/html ##apache的/目录,默认发布目录
/var/www/html/index ##apache的默认发布文件
vim /var/www/html/index
hello world
测试:http://172.25.254.166
http://172.25.254.166/manual
3.apache的配置信息
主配置目录:/etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/httpd/conf.d
子配置文件:/etc/httpd/conf.d/.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认端口:80
默认安全上下文:httpd_sys_content_t
程序开启默认用户:apache
apache日志:/etc/httpd/logs/

修改默认端口:

2.apache的安装

-1-安装apache
<1>安装apache(以下是安装过显示的内容),并开启http服务同时使开机启动

[root@dns-server ~]# yum install httpd -y
[root@dns-server ~]# systemctl start httpd
[root@dns-server ~]# systemctl enable httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第1张图片
<2>打开防火墙,设置永久允许防护墙,并使火墙重新加载策略

[root@dns-server ~]# systemctl start firewalld
[root@dns-server ~]# firewall-cmd --permanent --add-service=http 
[root@dns-server ~]# firewall-cmd --reload

在这里插入图片描述
在这里插入图片描述
<3>进入默认发布目录,创建index.html文件并在其内写入“hello world”

[root@dns-server ~]# cd /var/www/html
[root@dns-server html]# ls
[root@dns-server html]# vim index.html

在这里插入图片描述
在index.html文件中写入的内容如下:

hello world

在这里插入图片描述
<4>重新启动httpd服务

[root@dns-server html]# systemctl restart httpd

在这里插入图片描述
<5>在浏览器内输入本机的ip地址,会显示出在默认发布目录的文件中写入的内容
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第2张图片
-2-安装apache的手册
<1>安装apache的手册并使服务重启

[root@dns-server html]# yum install httpd-manual -y
[root@dns-server html]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第3张图片
<2>测试(在网页中输入本地地址+manual)
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第4张图片

3.apache的修改

  • 修改默认发布文件
    默认发布文件就是访问apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序
    vim /etc/httpd/conf/httpd.conf
    DirectoryIndex test.html index.html ##当index.html不存在时访问test.html
  • 默认发布目录:
    DocumentRoot “/www/html”

实验:
-1-修改默认端口(防火墙关闭情况下)

<1>关闭防火墙并使其开机关闭

[root@dns-server ~]# systemctl stop firewalld
[root@dns-server ~]# systemctl disable firewalld

在这里插入图片描述
<2>进入主配置文件,修改后重启httpd服务

[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd

在这里插入图片描述
将主配置文件中的端口内容Listen 80更改成Listen 8080
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第5张图片
<3>在浏览器输入本机的ip地址,发现无法查看发布目录下的内容,在ip地址后加上端口号,才可以看见发布目录下的内容,说明修改端口成功
更改端口前:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第6张图片
更改端口后:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第7张图片
<4>为了不影响之后的实验,故将主配置文件中的内容还原(端口号恢复成80)并利用网页进行查看

[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第8张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第9张图片
-2-修改默认端口(防火墙开启情况下)
<1>打开防火墙

[root@dns-server ~]# systemctl start firewalld	##开启防火墙
[root@dns-server ~]# firewall-cmd --permanent --add-port=8080/tcp	##设置火墙的端口为8080
[root@dns-server ~]# firewall-cmd --reload	##火墙重新加载

在这里插入图片描述
<2>进入主配置文件,修改后重启httpd服务

[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd

在这里插入图片描述
将主配置文件中的端口内容Listen 80更改成Listen 8080
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第10张图片
<3>在浏览器输入本机的ip地址,发现无法查看发布目录下的内容,在ip地址后加上端口号,才可以看见发布目录下的内容,说明修改端口成功
更改端口前:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第11张图片
更改端口后:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第12张图片
<4>为了不影响之后的实验,故将主配置文件中的内容还原(端口号恢复成80)并利用网页进行查看

[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd

在这里插入图片描述
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第13张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第14张图片
-3-修改默认发布文件:
<1>创建test.html并在其写入内容

[root@dns-server html]# ls
[root@dns-server html]# vim test.html
[root@dns-server html]# cat test.html

在这里插入图片描述
test.html中的内容如下:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第15张图片
<2>进入httpd的主配置文件将test.html目录写于index.html前并重启服务,在网页中查看时,会输出test.html文件内的内容

[root@dns-server html]# vim /etc/httpd/conf/httpd.conf
[root@dns-server html]# systemctl restart httpd

在这里插入图片描述
主配置文件中更改的内容如下:

DirectoryIndex test.html index.html

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第16张图片
<3>在浏览器中输入本机的ip地址之后,会显示test.html文件内的内容
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第17张图片
-4-修改默认发布目录
<1>在默认发布目录下创建一个子目录westos,并建立一个文件,在文件内写入内容(westos)

[root@dns-server ~]# cd /var/www/html
[root@dns-server html]# mkdir /westos/html -p
[root@dns-server html]# cd /westos/html
[root@dns-server html]# ls
[root@dns-server html]# vim index.html

在这里插入图片描述
index.html文件内写入的内容如下:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第18张图片
<2>进入httpd的主配置文件进行更改并使服务生效

[root@dns-server html]# vim /etc/httpd/conf/httpd.conf
[root@dns-server html]# systemctl restart httpd

在这里插入图片描述
主配置文件中更改的内容如下:

DocumentRoot "/westos/html"

在这里插入图片描述
<3>在浏览器中输入本机地址,发现出现的是apache的测试页面,并不是我们指定的目录,说明配置的可能有错误
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第19张图片
<4>清空htppd的访问错误的记录并重新启动httpd服务,重启后一定要在浏览器尝试访问一下才会出现报错

[root@dns-server ~]# > /etc/httpd/logs/error_log
[root@dns-server ~]# systemctl restart httpd

在这里插入图片描述
<5>查看日志文件的报错,发现服务端没有权限

[root@dns-server ~]# cat /etc/httpd/logs/error_log 

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第20张图片
<6>进入httpd的主配置文件给默认发布目录提供所有权限

[root@dns-server ~]# vim /etc/httpd/conf/httpd.conf
[root@dns-server ~]# systemctl restart httpd

在这里插入图片描述
配置文件中添加的内容如下:


    Require all granted

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第21张图片
<7>在浏览器中输入本机地址,发现出现的依旧是apache的测试页面,并不是我们指定的目录,说明配置的可能有错误
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第22张图片
<8>清空日志记录并重新启动httpd服务,重启后一定要在浏览器尝试访问一下才会出现报错

[root@dns-server ~]# > /var/log/messages
[root@dns-server ~]# systemctl restart httpd

在这里插入图片描述
<9>查看日志文件的报错,发现selinux安全上下文有问题

[root@dns-server ~]# cat /var/log/messages

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第23张图片
<10>查看selinux的状态

[root@dns-server ~]# getenforce

在这里插入图片描述
<12>并修改安全上下文并重新启动服务

[root@dns-server ~]# cd /var/www/html
[root@dns-server html]# ls -Zd /westos/
[root@dns-server html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)'
[root@dns-server html]# restorecon -RvvF /westos/
[root@dns-server html]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第24张图片
<13>在浏览器上再次输入本机ip地址,发现可以成功访问到更改后的目录下文件的内容
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第25张图片

4.apache配置虚拟主机

<1>做好本地解析

[root@dns-server conf.d]# vim /etc/hosts

在这里插入图片描述
增加以下内容(哪台主机配置,写哪台主机)

172.25.254.166 www.westos.com news.westos.com music.westos.com login.westos.com

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第26张图片
<2>在网页中输入三个不同的网址,可以看到当输入三个不同的网址时,输出的内容却相同
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第27张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第28张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第29张图片
<3>在/var/www目录下创建两个子目录(music和news),并查看其中一个的安全上下文(为了防止出现安全上下文的报错,故都创建在这个目录下)

[root@dns-server html]# mkdir /var/www/virtual/westos.com/music -p
[root@dns-server html]# mkdir /var/www/virtual/westos.com/news -p
[root@dns-server html]# ls -Zd /var/www/virtual/westos.com/news

在这里插入图片描述
<4>创建好两个目录后,再在目录下的分别创建一个html文件,并写入内容

[root@dns-server html]# vim /var/www/virtual/westos.com/news/index.html
[root@dns-server html]# cat /var/www/virtual/westos.com/news/index.html
[root@dns-server html]# vim /var/www/virtual/westos.com/music/index.html
[root@dns-server html]# cat /var/www/virtual/westos.com/music/index.html

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第30张图片
<5>编写子配置目录下的默认站点以及

news.westos.com站点并使服务生效
[root@dns-server html]# cd /etc/httpd/conf.d/
[root@dns-server conf.d]# ls
[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# vim news.conf
[root@dns-server conf.d]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第31张图片
文件adefault.conf中的内容:


        DocumentRoot "/var/www/html"

=========================36
文件news.conf中的内容:

        ServerName "news.westos.com"	##指定站点名称
        DocumentRoot "/var/www/virtual/westos.com/news"	站点默认发布目录
        CustomLog logs/news.log combined	##站点日志combined标示四种日志的集合(即将所有日志都指定到/Logs/news/log),其是一个相对目录,因为它住在http路径下的(可以通过/etc/httpd/conf/httpd.conf文件中的ServerRoot "/etc/httpd"查看)


        Require all granted

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第32张图片
<6>在浏览器中尝试输入网址并进行查看,发现不同的网址输出不同的内容
在这里插入图片描述
在这里插入图片描述
<7>将子配置目录下的news.conf内容复制至music.conf下,并将music.conf中的news通过命令全部更改成music,重启服务既可

[root@dns-server conf.d]# cp news.conf music.conf
[root@dns-server conf.d]# vim music.conf
[root@dns-server conf.d]# systemctl restart httpd

在这里插入图片描述
更改文件中的配置(可使用%s/news/music/g命令):
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第33张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第34张图片
<8>在浏览器中输入music.westos.com,得出此站点在其目录的html文件下写入的内容
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第35张图片
注意:
1.ServerName “news.westos.com” ##指定站点名称
2.DocumentRoot “/var/www/virtual/westos.com/news” 站点默认发布目录
3.CustomLog logs/news.log combined ##站点日志combined标示四种日志的集合(即将所有日志都指定到/Logs/news/log),其是一个相对目录,因为它住在http路径下的(可以通过/etc/httpd/conf/httpd.conf文件中的ServerRoot "/etc/httpd"查看)
4.acess指访问的日志
5.之所以访问不了,是因为没有被授权
6.require all granted允许所有人访问
7.加到内核的安全上下文列表,永久性的,要弄安全
8.双引号不能引用问号
9.设置apache的虚拟主机,不同域名对应不同页面
10.不是默认的,用*代替(news),不区分大小写

5.apache内部的访问控制

-1-.针对主机的访问控制
<1>只允许ip为172.25.254.66的主机访问172.25.254.166,其他主机拒绝访问

[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd

在这里插入图片描述
配置文件中更改的内容如下:


        DocumentRoot "/var/www/html"


        Require all granted
        Order deny,allow
        Allow from 172.25.254.66
        Deny from all

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第36张图片
<2>分别在不同主机上进行测试
在ip为172.25.254.166的浏览器上输入ip的结果为:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第37张图片
在ip为172.25.254.66的浏览器上输入ip的结果为:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第38张图片
<3>不允许所有主机访问172.25.254.166

[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd

在这里插入图片描述
配置文件中更改的内容如下:


        DocumentRoot "/var/www/html"


        Require all granted
        Order allow,deny
        Allow from 172.25.254.66
        Deny from all

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第39张图片
<4>分别在不同主机上进行测试
在ip为172.25.254.166的浏览器上输入ip的结果为:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第40张图片
在ip为172.25.254.66的浏览器上输入ip的结果为:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第41张图片
注意:
1.Order allow,deny ##列表读取顺序,后读取的列表会覆盖先读取的列表
2.allow和deny没有先后顺序,有可能是allow的优先级大于deny

-2-用户方式的访问控制
##允许指定一个文件的所有用户访问:
<1>首先在共享目录下创建一个admin目录,并在其下创建一个一个index.html文件并写入内容

[root@dns-server conf.d]# mkdir /var/www/html/admin
[root@dns-server conf.d]# vim /var/www/html/admin/index.html
[root@dns-server conf.d]# cat /var/www/html/admin/index.html

在这里插入图片描述
<2>进入配置文件进行相关的配置

[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd

在这里插入图片描述
配置文件中的内容如下:


        DocumentRoot "/var/www/html"


        Require all granted
#        Order deny,allow
#        Allow from 172.25.254.66
        Allow from all


        AuthUserFile     "/etc/httpd/htuser"
        AuthName         "Please input username and password"
        AUthType         Basic
        Require          valid-user

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第42张图片
<3>创建admin和admin1用户

[root@dns-server conf.d]# htpasswd -cm /etc/httpd/userpass admin
[root@dns-server conf.d]# htpasswd -m /etc/httpd/userpass admin1

在这里插入图片描述
<4>可以通过以下命令查看用户是否建立成功

[root@dns-server conf.d]# cat /etc/httpd/userpass

在这里插入图片描述
<5>打开浏览器并在其输入ip(172.25.254.166/admin),会发现出来一个界面是需要认证的
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第43张图片
<6>输入用户admin的名称和密码,发现可以成功查看网页
在这里插入图片描述
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第44张图片
<7>输入用户admin1的名称和密码,发现可以成功查看网页
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第45张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第46张图片
##只允许一个用户列表访问:
<8>更改配置文件中的内容使只允许admin用户访问网络

[root@dns-server conf.d]# vim adefault.conf
[root@dns-server conf.d]# systemctl restart httpd
[root@dns-server conf.d]# firefox

在这里插入图片描述
配置文件中更改的内容如下:


        DocumentRoot "/var/www/html"


        Require all granted
#        Order deny,allow
#        Allow from 172.25.254.66
        Allow from all


        AuthUserFile     "/etc/httpd/htuser"	##指定用户认证文件
        AuthName         "Please input username and password"
        AuthType         Basic
#       Require         valid-user	##允许所有admin用户访问admin下的页面
        Require user    admin	##只允许admin用户访问admin下的页面

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第47张图片
<9>打开浏览器并在其输入ip(172.25.254.166/admin),会发现依旧会出来一个界面是需要认证的
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第48张图片
<10>输入用户admin1的名称和密码,发现不可以成功查看网页,会回到没有认证之前的界面
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第49张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第50张图片
<11>清除网页的缓存后再次查看网页
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第51张图片
<12>再次输入用户admin的名称和密码,发现可以成功查看网页
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第52张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第53张图片
<13>清除网页的缓存后再次查看网页
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第54张图片
<14>将用户admin的密码输出,发现点击确定后依旧会回到没有认证之前的界面
在这里插入图片描述
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第55张图片
<15>如果不输入任何信息,点击取消,会出现认证错误的报错
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第56张图片
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制_第57张图片
注意:
1.指定用户认证文件是AuthUserFile
2.基本认证(用户和密码)
3.Require user admin(指定一个用户列表)
4.Require valid-user(指定一个文件的所有用户)
5.添加用户一定要在创建目录和修改adefault.conf之后,否则会显示报错
6.如果要查看安全上下文,前提是selinux的状态必须是enforcing
7.-cm c表示创建 m表示modify更改,再次建立时,要把c去掉,在原有的情况下会覆盖
8.ctrl+shift+delete是清除缓存
9.Require user是一个整体,不能分开写

你可能感兴趣的:(linux,进阶)