Linux下Apache Web服务器的安装与配置
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()进行访问认证,认证成功
上一篇: Linux下两种方式安装apache服务器踩过的坑
下一篇: 图文详解:归并排序之c语言实现
推荐阅读
-
CentOS7 下nginx与PHP的安装与配置
-
阿里云linux服务器下安装Apache的简单方法
-
linux服务器下通过iptables+Denyhost抵御暴力破解的配置方法
-
Windows下PHP安装路径配置错误导致Apache无法启动的解决方法
-
win10系统下Anaconda+TensorFlow+Pycharm的下载安装与环境配置
-
Linux NFS服务器的安装与配置方法(图文详解)
-
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
-
Linux下配置和安装Domino 服务器 2
-
解决安装Domino for Linux时配置的Web服务器无法启动的问题
-
在Linux下配置和安装Domino 服务器的问题