apache服务解析

本篇博客内容主要有:

apache的简介和安装

apache实现文件共享

apache虚拟主机功能

apache访问控制IP

apache用户认证

http 工作状态码 


 一.apache简介


apache : 意为充满补丁的服务器(a patchy server) , 它是一个web网站服务器软件 , 用来发布网站信息资源 , 给用户提供网页服务

工作端口:TCP  80

其他的web服务器软件除了apache , 常见的还有nginx , tomcat(java) , iis(windows).....

相比其他web软件其优点有:安装配置方便简单 , 兼容性好 , windows和linux系统都支持apache , 稳定性高 , 安全可靠 , 支持模块扩展

apache架构基本为:lamp(Linux + Apache + Mysql + PHP)


工作过程:

image.png

第1步、连接过程:客户端通过浏览器输入的URL采用HTTP协议与服务器之间通过TCP三次所握手建立连接。

第2步、请求过程:向服务器请求网站的主页资源,通常默认主页为index.html、index.php、index.jsp等文件名。

第3步、应答过程:服务器将主页文件传送给客户机浏览器。如果主页不存在,会显示网页不存在。

第4步、关闭连接:为了避免一直占用服务器资源,数据传送完毕会自动关闭TCP连接。


apache部署流程

此实验在主机node12上进行(192.168.11.12)

systemctl  stop  firewalld  && setenforce  0                      #关闭防火墙和selinux

yum  install  -y  httpd  httpd-manual                                 #安装httpd软件 ,手册(可不安装)

systemctl  start  httpd && systemctl  enable  httpd            #启动服务

ss  -anput | grep  :80                                                          #查看80端口是否开启


测试:

apache的默认网站目录为: /var/www/html/ , 在此可以设置一个简单的主页进行测试

date  > /var/www/html/index.html

curl  192.168.11.12             #linux用curl访问网站 , curl最小版linux系统需要安装

image.png

windows直接用浏览器地址栏输入ip即可访问

image.png


httpd主配置文件

rpm  -qc  httpd             #查看配置文件

其中/etc/httpd/conf/httpd.conf为主配置文件

httpd.conf配置文件组成:全局设置、模块设置、虚拟主机设置、目录访问权限设置。

  1. 全局设置:Listen监听端口、Root默认网站根目录、Directory目录权限等设置

  2. 模块设置:IfModule各种功能模块设置,如基于用户认证的访问模块、fastcgi通用网关接口模块、PHP模块等。

  3. 虚拟主机设置:<VirtualHost  ip:port>主页目录、管理员邮箱设置</VirtualHost>

  4. 目录访问权限设置:<Directory  目录路径>访问权限设置</Directory>


line

配置选项

功能解释

31

ServerRoot "/etc/httpd"

apache工作目录


Include    conf.d/*.conf                        

包含的配置文件(可在此存放虚拟主机配置文件)

42

Listen    80

监听所有IP80号端口

56

Include conf.modules.d/*.conf

包含的配置文件

66

User apache

apache服务进程的用户账号。ps  -u  apache

67

Group apache

apache服务进程的组账号。ps  -g  apache

86

ServerAdmin  root@localhost

管理员邮箱

102

<Directory />

/根目录访问权限设置

103

      AllowOverride none

不启用htaccess访问控制功能

104

      Require all denied

拒绝任何人访问

105

</Directory>

目录权限设置的结束标记

119

DocumentRoot "/var/www/html"

默认网站主页的根目录

124

<Directory "/var/www">

/var/www目录的访问权限设置

125

      AllowOverride None

不启用htaccess访问控制功能

127

      Require all granted

允许任何人访问

128

</Directory>

目录权限设置的结束标记

131

<Directory   "/var/www/html">

/var/www/html目录的访问权限设置

144

      Options Indexes FollowSymLinks

启用索引和符号链接功能,允许无主页时显示文件列表(Indexes仅用于实现文件共享)

151

      AllowOverride None

不启用htaccess访问控制功能

156

      Require all granted

允许任何人访问


      Order  allow,deny

    Allow    from all

  Deny     from  192.168.10.60

访问规则控制的顺序,先允许,后拒绝

允许任何IP的客户机访问此目录

拒绝192.168.10.60的客户机访问此目录

157

</Directory>

目录权限设置的结束标记

163

<IfModule dir_module>

关于dir_module这个模块设置

164

    DirectoryIndex  index.html    index.php

指定默认主页文件名的检索先后顺序

165

</IfModule>

模块设置的结束标记

171

<Files ".ht*">

.ht*文件访问的权限设置

172

      Require all denied

拒绝任何人访问

173

</Files>

文件访问权限设置的结束标记

182

ErrorLog "logs/error_log"

错误访问日志文件,完整路径为/etc/httpd/logs/error_log


CustomLog logs/access_log combined

默认网站的访问日志

189

LogLevel warn

日志文件等级为warn警告级

191

<IfModule log_config_module>

日志配置模块设置

202

      </IfModule>


217

      CustomLog "logs/access_log" combined

CustomLog访问日志格式

218

</IfModule>

模块设置的结束符

220

<IfModule alias_module>

alias别名模块设置

247

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

设置/var/www/cgi-bin/目录的别名为/cgi-bin

249

</IfModule>


276

ServerName    www.example.com:80

默认网站的域名和端口号(用域名访问此网站)

261

<IfModule mime_module>

mime_module模块设置

266

      TypesConfig /etc/mime.types


283

      AddType application/x-compress .Z


284

      AddType application/x-gzip .gz .tgz


305

      AddType text/html .shtml


306

      AddOutputFilter INCLUDES .shtml


307

</IfModule>


316

AddDefaultCharset UTF-8

默认的字符编码为UTF-8win7采用GB2312编码(GBK)

348

EnableSendfile on

允许发送文件。实现文件下载

353

IncludeOptional conf.d/*.conf

包含conf.d目录下的*.conf配置文件,虚拟主机配置文件可以保存在此处。


  

 二.apache实现文件共享

 

实例 : 对镜像进行共享

httpd想要共享的话,废掉welcome.conf(默认主页)并保证/var/www/html没有其他.html文件

mv  /etc/httpd/conf.d/welcome.conf{,.bak}      #对welcome.conf文件改名为.bak

 满足上述条件时 :

第一步 , 在/var/www/html/下创建需要分享的文件的挂载目录

mkdir  /var/www/html/iso

mount  /dev/sr0  /var/www/html/iso        #将镜像挂载到/var/www/html/iso目录

systemctl  restart  httpd                              #重启服务

第二步 , 在浏览器地址栏输入IP:192.168.11.12验证效果

image.png


 三.虚拟主机设置


虚拟主机即在一台服务器上发布多个不同的网站 , 通常有以下三种解决方法:

基于端口的虚拟主机服务器只有一个IP,但每个网站绑定在不同的端口上 . 例如:80 , 8081 , 8082等
基于IP的虚拟主机服务器网卡设置多个IP地址 , 每个网站绑定在不同的IP地址上
基于域名的虚拟主机(最常用)服务器只有一个IP地址 , 给服务器设置多个主机名 , 每个网站绑定在不同主机名上


基于端口的虚拟主机:


第一步 : 前期准备工作 , 设置3个网站目录 , 分别设置简单的主页

image.png

第二步 : 编辑创建文件/etc/httpd/conf.d/gg.conf , 内容为

image.png

第三步 : 保存文件退出后 , 重启服务 , 进行访问测试

image.png


基于IP的虚拟主机


第一步 : 前期准备工作 , 给主机临时添加两个虚拟IP , 查看效果如下图:

image.png

第二步 : 编辑配置文件 /etc/httpd/conf.d/gg.conf 文件

image.png

第三步 : 重启服务 , 进行测试

image.png


基于域名的虚拟主机


第一步 : 因为是测试 , 可以修改本地域名解析文件/etc/hosts

image.png

第二步 , 重启服务进行测试

image.png

可以看到 , 三个域名指向的是同一个IP




 四 . 访问控制IP


第一步 : 把上面的/etc/hosts文件改回 , 编辑主配置文件/etc/httpd/conf/httpd.conf , 添加如下内容:

image.png

第二步 : 重启服务 , 用192.168.11.11(node11)和192.168.11.14(node14)两台主机进行访问

image.png

image.png

结果为192.168.11.11成功访问 , 192.168.11.14读取的只是apache的默认主页文件 , /gg/www/目录读取不到




 五 . 用户认证

apache的用户认证:是指客户端在访问网站时会提示输入用户名和密码 , 通过验证后才能显示网页内容


用户认证工具 : htpasswd

查htpasswd文件由哪个包提供: yum  provides  htpasswd

安装htpasswd工具的软件 : yum  install  -y  httpd-tools

第一步 : 创建基于用户认证的账号 :

htpasswd  -cm  /etc/httpd/htuser  tom  #创建tom用户 , 并生成htuser账号文件 和 登录密码

cat /etc/httpd/htuser                             #查看htuser文件

第二步 : 编辑主配文件/etc/httpd/conf/httpd.conf文件(也可以在/etc/httpd/conf.d)

image.png

第三步 : 重启服务 , 进行测试

image.png

没有输入正确的认证用户账号密码时会报错

image.png




六 . http工作状态码

常见的代码如下:

代码

含义

100

请求已接收 , 客户端可以继续发送请求

101

Switching Protocals服务器根据客户端的请求切换协议

200

一切正常

201

服务器已经创建了文档

202

已经接受了请求 , 但尚未处理完成

203

文档正常返回 , 但一些头部信息可能不正确

300

客户端请求的资源可以在多个位置找到

301

客户端请求的资源可以在其他位置找到

305

请求代理服务

400

请求语法错误

401

访问被拒绝

401.1

登录失败

403

资源不可用

403.6

IP地址被拒绝

404

无法找到指定资源

406

指定资源已找到 , 但MIME类型与客户端要求不兼容

407

要求进行代理身份验证

500

服务器内部错误

500.13

服务器太忙

501

服务器不支持客户端的请求功能

502

网关错误

503

服务不可用

504

网关超时 , 服务器处于维护或负载过高无法响应

505

服务器不支持客户端请求的HTTP版本







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章