Linux下Apache Web服务器的安装与配置

感情迁移 提交于 2020-03-08 01:05:06

1.Apache Web服务器简述

    Web服务是目前Internet应用最流行、最受欢迎的服务之一,Linux平台使用最广泛的Web服务器是Apache,它是目前性能最优秀、最稳定的Web服务器之一。
    WWW(World Wide Web)服务,现在已经成为Internet上最热门的服务之一,它是人们在网上查找、浏览信息的主要手段。WWW是一种交互式图形界面的Internet服务,具有强大的信息连接功能。它使得成千上万的用户通过简单的图形界面就可以获取各个大学、组织、公司等的最新信息和各种网上服务。
    WWW是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过HTML超文本标记语言把信息组织成为图文并茂的超文本;WWW浏览器则为用户提供基于HTTP超文本传输协议的用户界面。用户使用WWW浏览器通过Internet访问远端WWW服务器上的HTML超文本。
    在WWW的客户机/服务器工作环境中,WWW浏览器起控制作用,其任务是使用一个URL(Internet地址)来获取一个WWW服务器上的Web文档,解释这个HTML,并将文档内容以用户环境所许可的效果最大限度地显示出来,其整个流程如下:1) WWW浏览器根据用户输入的URL连到相应的远端WWW服务器上。2) 取得指定的Web文档。3) 断开与远端WWW服务器的连接。
也就是说,平时我们在浏览某个网站的时候,每取一个网页就建立一次连接,读完后马上断开;当需要另一个网页时重复此过程。
    Apache
    根据著名的WWW服务器调查公司所作的调查,世界上百分之五十以上的WWW服务器都在使用Apache,是世界排名第一的Web服务器。
    Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。
    由于Apache具有高度的可配置性,因此满足广泛的Web服务需要,其显著的特征是:可以运行于所有计算机平台,也包括Unix/Linux系统;集成代理服务器和Perl编程脚本;对用户的访问会话过程跟踪:可对服务器日志定制;还支持虚拟主机及HTTP认证,等等。目前它已经占据了过半数的市场份额。

2.Apache的作用

在web被访问时通常使用http://的方式
http://           ##超文本传输协议

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
    HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求,Web服务器根据接收到的请求后,向客户端发送响应信息。

http:// 提供超文本传输协议软件:
Apache、nginx、stgw、jfe、Tengine
curl命令执行取得效果的前提是网络连通
在这里插入图片描述

3.Apache的安装

dnf search apache     查询apache安装包
在这里插入图片描述
dnf install httpd.x86_64 -y    安装apache安装包
在这里插入图片描述
在这里插入图片描述

4.Apache的启用

systemctl enable --now httpd 					##开启服务并设定服务位开机启动

在这里插入图片描述

firewall-cmd --list-all 						##查看火墙信息
firewall-cmd --permanent --add-service=http 	##在火墙中永久开启http访问
firewall-cmd --permanent --add-service=https 	##在火墙中永久开启https访问
firewall-cmd --reload 							##刷新火墙使设定生效

在这里插入图片描述

5.Apache的基本信息

服务名称: httpd
配置文件:
/etc/httpd/conf/httpd.conf         ##主配置文件
/etc/httpd/conf.d/*.conf         ##子配置文件
默认发布目录: /var/www/html
访问默认发布目录后看到的是Apache测试页
在这里插入图片描述
默认发布文件: index.html
默认端口: 80 #http
            443 #https(加密)
端口查看:netstat -anltupe | grep httpd
a:所有端口,n:不做端口解析,只显示端口号,l:活跃的(开启的端口),t:TCP协议,u:UDP协议,p:进程名称,e:显示网络其他相关信息
在这里插入图片描述
用户: apache
提供http服务的用户是apache
在这里插入图片描述
日志: /etc/httpd/logs

6.Apache的基本配置

(1)Apache端口修改

vim /etc/httpd/conf/httpd.conf			##编辑http服务配置文件
Listen 6666								##更改http服务端口为6666
firewall-cmd --permanent --add-port=6666/tcp ##在防火墙中开启6666端口
firewall-cmd --reload 

在这里插入图片描述
在这里插入图片描述

semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 6666 ##在selinux中开启6666端口
systemctl restart httpd						##重启服务
netstat -anltupe | grep httpd 				##查看端口号

在这里插入图片描述
端口6666不是apache常用端口,所以浏览器在访问时有安全检测,过不去
在这里插入图片描述
(2)默认发布文件修改
默认发布文件必须在默认发布目录下写,这样,在访问时显示的网页就是默认发布文件里面的内容,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更改默认发布文件为自己编写的linux.html文件,访问apache服务时,显示的是linux.html文件里面的内容,当此文件被删除,默认发布文件显示的是第二个文件index.html里面的内容

vim /etc/httpd/conf/httpd.conf			##编辑配置文件
DirectoryIndex linux.html index.html	##更改默认发布文件
systemctl restart httpd					##重启服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)默认发布目录修改
更改指定的目录为默认发布目录时需要做的事:
建立目录,建立自己的标识性文件,写内容;
编辑http服务配置文件,指定所建立的目录为默认发布目录;
授权所有人可访问;
当selinux开启时,更改安全上下文为与http服务相符合的安全上下文
测试:访问设定好的http服务

vim /etc/httpd/conf/httpd.conf
DocumentRoot "/linuxdir/html"
<Directory "/linuxdir/html">
 Require all granted
</Directory>
semanage fcontext -a -t httpd_sys_content_t '/linuxdir(/.*)?'
restorecon -RvvF /linuxdir/
systemctl restart httpd 
firefox http://192.168.1.19

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.Apache的访问控制

实验环境:两台主机
rhel7:ip:192.168.1.10
rhel8:ip:192.168.1.19(http服务端)
实验素材:
    在默认发布目录下新建目录并在新建目录下新建文件写入内容,来对访问做标识性控制

mkdir /var/www/html/redhat
vim /var/www/html/redhat/index.html
firefox http://192.168.1.19/redhat

未做设定前所有ip主机都可访问默认发布目录下新建目录的内容
在这里插入图片描述
在这里插入图片描述
(1)基于客户端ip的访问控制
ip白名单
设定rhel7主机(ip:192.168.1.10)可以访问默认发布目录下新建目录的内容,其他主机不可以访问

<Directory "/var/www/html/redhat">
 Order Deny,Allow		##按顺序读取,后读的会把和前面重复的覆盖掉
 Allow from 192.168.1.10
 Deny from All
</Directory>

在这里插入图片描述
rhel7主机可以访问默认发布目录下新建目录的内容
在这里插入图片描述
rhel8主机不可以访问默认发布目录下新建目录的内容
在这里插入图片描述
在这里插入图片描述
ip黑名单
设定rhel7主机(ip:192.168.1.10)不允许访问默认发布目录下新建目录的内容

<Directory "/var/www/html/redhat">
 Order Allow,Deny     ##按顺序读取,后读的会把和前面重复的覆盖掉
 Allow from All
 Deny from 192.168.1.10
</Directory> 

在这里插入图片描述
rhel7主机不可以访问默认发布目录下新建目录的内容
在这里插入图片描述
rhel8主机可以访问默认发布目录下新建目录的内容
在这里插入图片描述
在这里插入图片描述
(2)基于用户认证

vim /etc/httpd/conf/httpd.conf					##编辑http服务配置文件
<Directory "/var/www/html/redhat">
 AuthUserfile /etc/httpd/htpasswdfile			##指定认证文件
 AuthName "Please input your name and password" ##认证提示语
 AuthType basic 								##认证类型
 Require user admin 							##允许通过的认证用户 2选1
 Require valid-user 							##允许所有用户通过认证 2选 1
</Directory>
Require valid-user		##允许所有用户通过认证(认证文件中的用户)

在这里插入图片描述

htpasswd -cm /etc/httpd/htpasswdfile admin	 ##生成认证文件 -c表示创建一个新文件,-m 表示MD5加密

在这里插入图片描述
注意:
当/etc/httpd/htpasswdfile存在,那么在添加用户时不要加-c参数否则会覆盖源文件内容
测试:
访问http服务时,先用一个没有在认证文件中的用户进行认证,认证失败
在这里插入图片描述
在这里插入图片描述
用在认证文件中的用户进行访问认证,认证成功
在这里插入图片描述

在这里插入图片描述

Require user redhat 							##允许通过的认证用户(其他用户不能通过)

在这里插入图片描述
在访问http服务时,先用认证文件中的admin用户进行认证,发现认证失败
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用认证文件中的用户redhat()进行访问认证,认证成功
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!