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服务同时使开机启动

[[email protected] ~]# yum install httpd -y
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd

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

[[email protected] ~]# systemctl start firewalld
[[email protected] ~]# firewall-cmd --permanent --add-service=http 
[[email protected] ~]# firewall-cmd --reload

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<3>进入默认发布目录,创建index.html文件并在其内写入“hello world”

[[email protected] ~]# cd /var/www/html
[[email protected] html]# ls
[[email protected] html]# vim index.html

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
在index.html文件中写入的内容如下:

<h1>hello world</h1>

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<4>重新启动httpd服务

[[email protected] html]# systemctl restart httpd

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

[[email protected] html]# yum install httpd-manual -y
[[email protected] html]# systemctl restart httpd

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

3.apache的修改

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

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

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

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<2>进入主配置文件,修改后重启httpd服务

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
[[email protected] ~]# systemctl restart httpd

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

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
[[email protected] ~]# systemctl restart httpd

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

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

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<2>进入主配置文件,修改后重启httpd服务

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
[[email protected] ~]# systemctl restart httpd

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

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
[[email protected] ~]# systemctl restart httpd

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

[[email protected] html]# ls
[[email protected] html]# vim test.html
[[email protected] html]# cat test.html

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

[[email protected] html]# vim /etc/httpd/conf/httpd.conf
[[email protected] html]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
主配置文件中更改的内容如下:

DirectoryIndex test.html index.html

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

[[email protected] ~]# cd /var/www/html
[[email protected] html]# mkdir /westos/html -p
[[email protected] html]# cd /westos/html
[[email protected] html]# ls
[[email protected] html]# vim index.html

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
index.html文件内写入的内容如下:
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<2>进入httpd的主配置文件进行更改并使服务生效

[[email protected] html]# vim /etc/httpd/conf/httpd.conf
[[email protected] html]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
主配置文件中更改的内容如下:

DocumentRoot "/westos/html"

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

[[email protected] ~]# > /etc/httpd/logs/error_log
[[email protected] ~]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<5>查看日志文件的报错,发现服务端没有权限

[[email protected] ~]# cat /etc/httpd/logs/error_log 

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

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
[[email protected] ~]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
配置文件中添加的内容如下:

<Directory "/westos/html">
    Require all granted
</Directory>

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

[[email protected] ~]# > /var/log/messages
[[email protected] ~]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<9>查看日志文件的报错,发现selinux安全上下文有问题

[[email protected] ~]# cat /var/log/messages

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

[[email protected] ~]# getenforce

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<12>并修改安全上下文并重新启动服务

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

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

4.apache配置虚拟主机

<1>做好本地解析

[[email protected] conf.d]# vim /etc/hosts

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
增加以下内容(哪台主机配置,写哪台主机)

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

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

[[email protected] html]# mkdir /var/www/virtual/westos.com/music -p
[[email protected] html]# mkdir /var/www/virtual/westos.com/news -p
[[email protected] html]# ls -Zd /var/www/virtual/westos.com/news

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<4>创建好两个目录后,再在目录下的分别创建一个html文件,并写入内容

[[email protected] html]# vim /var/www/virtual/westos.com/news/index.html
[[email protected] html]# cat /var/www/virtual/westos.com/news/index.html
[[email protected] html]# vim /var/www/virtual/westos.com/music/index.html
[[email protected] html]# cat /var/www/virtual/westos.com/music/index.html

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

news.westos.com站点并使服务生效
[[email protected] html]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# ls
[[email protected] conf.d]# vim adefault.conf
[[email protected] conf.d]# vim news.conf
[[email protected] conf.d]# systemctl restart httpd

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

<VirtualHost _default_:80>
        DocumentRoot "/var/www/html"
</VirtualHost>
=========================36
文件news.conf中的内容:
<VirtualHost *:80>
        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"查看)
</VirtualHost>
<Directory "/var/www/virtual/westos.com/news">
        Require all granted
</Directory>

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

[[email protected] conf.d]# cp news.conf music.conf
[[email protected] conf.d]# vim music.conf
[[email protected] conf.d]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
更改文件中的配置(可使用%s/news/music/g命令):
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<8>在浏览器中输入music.westos.com,得出此站点在其目录的html文件下写入的内容
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
注意:
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,其他主机拒绝访问

[[email protected] conf.d]# vim adefault.conf
[[email protected] conf.d]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
配置文件中更改的内容如下:

<VirtualHost _default_:80>
        DocumentRoot "/var/www/html"
</VirtualHost>
<Directory "/var/www/html">
        Require all granted
        Order deny,allow
        Allow from 172.25.254.66
        Deny from all
</Directory>

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

[[email protected] conf.d]# vim adefault.conf
[[email protected] conf.d]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
配置文件中更改的内容如下:

<VirtualHost _default_:80>
        DocumentRoot "/var/www/html"
</VirtualHost>
<Directory "/var/www/html">
        Require all granted
        Order allow,deny
        Allow from 172.25.254.66
        Deny from all
</Directory>

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

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

[[email protected] conf.d]# mkdir /var/www/html/admin
[[email protected] conf.d]# vim /var/www/html/admin/index.html
[[email protected] conf.d]# cat /var/www/html/admin/index.html

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<2>进入配置文件进行相关的配置

[[email protected] conf.d]# vim adefault.conf
[[email protected] conf.d]# systemctl restart httpd

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
配置文件中的内容如下:

<VirtualHost _default_:80>
        DocumentRoot "/var/www/html"
</VirtualHost>
<Directory "/var/www/html">
        Require all granted
#        Order deny,allow
#        Allow from 172.25.254.66
        Allow from all
</Directory>
<Directory "/var/www/html/admin">
        AuthUserFile     "/etc/httpd/htuser"
        AuthName         "Please input username and password"
        AUthType         Basic
        Require          valid-user
</Directory>

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

[[email protected] conf.d]# htpasswd -cm /etc/httpd/userpass admin
[[email protected] conf.d]# htpasswd -m /etc/httpd/userpass admin1

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<4>可以通过以下命令查看用户是否建立成功

[[email protected] conf.d]# cat /etc/httpd/userpass

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

[[email protected] conf.d]# vim adefault.conf
[[email protected] conf.d]# systemctl restart httpd
[[email protected] conf.d]# firefox

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
配置文件中更改的内容如下:

<VirtualHost _default_:80>
        DocumentRoot "/var/www/html"
</VirtualHost>
<Directory "/var/www/html">
        Require all granted
#        Order deny,allow
#        Allow from 172.25.254.66
        Allow from all
</Directory>
<Directory "/var/www/html/admin">
        AuthUserFile     "/etc/httpd/htuser"	##指定用户认证文件
        AuthName         "Please input username and password"
        AuthType         Basic
#       Require         valid-user	##允许所有admin用户访问admin下的页面
        Require user    admin	##只允许admin用户访问admin下的页面
</Directory>

apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<9>打开浏览器并在其输入ip(172.25.254.166/admin),会发现依旧会出来一个界面是需要认证的
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<10>输入用户admin1的名称和密码,发现不可以成功查看网页,会回到没有认证之前的界面
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<11>清除网页的缓存后再次查看网页
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<12>再次输入用户admin的名称和密码,发现可以成功查看网页
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<13>清除网页的缓存后再次查看网页
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<14>将用户admin的密码输出,发现点击确定后依旧会回到没有认证之前的界面
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
<15>如果不输入任何信息,点击取消,会出现认证错误的报错
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
apache服务(一)apache的各种修改,配置虚拟主机,设置内部的访问控制
注意:
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是一个整体,不能分开写