Apache#一文掌握Apache Web服务

一、WEB服务简介

目前最主流的三个Web服务器是Apache、Nginx(轻量级web服务器 Linux)、 IIS(windows-server)。 静态
  B/S 浏览器和服务器
  Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 Web服务器是可以向发出请求的浏览器提供文档的程序:服务器是一种被动程序只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应

二、WEB 服务协议

WEB 服务应用层使用HTTP协议。HTTPS
  HTML(标准通用标记语言下的一个应用)文档格式。
  浏览器统一资源定位器(URL)。
  http 超文本传输协议
  https 加密的超文本传输协议
  为了解决HTTP协议的不安全的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
  WWW 采用的是浏览器/服务器结构,其作用是整理和储存各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到 Windows、UNⅨ 或 Linux 等平台上

三、WEB 服务器的工作原理

1、连接过程:Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
  2、请求过程:Web的浏览器运用socket这个文件向其服务器而提出各种请求。
  3、应答过程:运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
  4、关闭连接:当上一个步骤–应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。
  扩展:
  socket一般指套接字。所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制

四、Web中间件介绍

中间件,是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。中间件是一类能够为一种或多种应用程序合作互通、资源共享,同时还能够为该应用程序提供相关的服务的软件。(注意:中间件是一类软件的总称,不是单独的一个软件)web中间件也叫做web服务器或者web容器,正常情况下一次web的访问顺序是:web浏览器—服务器(硬件)—web容器—web应用服务器—数据库服务

后端开发语言,java、php、python
  java中间件:Tomcat(8080)、Weblogic
  war包 .war tomcat  
  jar包 .jar jdk (java -jar)
  Php 中间件: php-fpm php
  Python 中间件: uwsgi

===================================================

五、Apache服务基础知识

http服务
www.apache.org

1、安装Apache,浏览器访问验证安装

apache安装
  yum -y install httpd httpd-tools httpd-devel
用户控制 主包的扩展包
  直接安装Apache主包就可以,包含用户控制包,主包扩展包可以不安装
  [root@apache-server ~]# yum -y install httpd
  apache启动
  [root@apache-server ~]# systemctl start httpd
  [root@apache-server ~]# systemctl enable httpd
  apache端口:80

浏览器访问10.11.67.109
这个test123,
Options Indexes FollowSymLinks
定义主页文件,当访问到网站目录时如果没有定义的主页文件,网站会自动访问test123页面。如果你不想看到他。可以删掉
在这里插入图片描述
[root@apache-server ~]# vim /etc/httpd/conf.d/wela.conf
配置一个配置文件,但是/var/www/html/下没有index.html
访问测试

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/html
</VirtualHost>
<Directory "/var/www/html">
  AllowOverride ALl
  Require all granted
</Directory>

因为服务器没有找到/var/www/html/insex.html所以跳转到test123
在这里插入图片描述
[root@apache-server ~]# vim /var/www/html/index.html

<h1>Apache Test</h1>

可以看到已经跳转到我们自己设置的网站页面
在这里插入图片描述
下面是/var/www/html/index.html和/usr/share/httpd/noindex/index.html都不存在的情况
在这里插入图片描述

2、Apache下载服务静态测试

服务端:/var/www/html/
  [root@apache-server ~]# mkdir -v /var/www/html/download
  [root@apache-server ~]# touch /var/www/html/download/b.txt
  [root@localhost conf.d]# rm -rvf /etc/httpd/conf.d/welcome.conf
  [root@apache-server ~]# systemctl restart httpd
  客户端:浏览器访问10.11.67.109/download
在这里插入图片描述

3、Apache的主配置文件

认识配置文件里的主要参数
  Apache的主配置文件
  [root@apache-server ~]# vim /etc/httpd/conf/httpd.conf

serverRoot “/etc/httpd” //存放配置文件的目录
  Listen 80 //Apache服务监听端口(以端口划分Apache虚拟主机的时候,需要增加在主配置文件中增加监听端口)
  User apache //子进程的用户
  Group apache  //子进程的组
  ServerAdmin root@localhost //设置管理员邮件地址
  DocumentRoot “/var/www/html” //网站家目录
  Include conf.modules.d/.conf  //模块的子配置文件
  IncludeOptional conf.d/
.conf //主配置文件的子配置文件
  Options Indexes FollowSymLinks //当一个目录没有默认首页时,允许显示此目录列表,一般安全起见,需要注释此项,避免目录下的其它资料泄露
  DirectoryIndex index.html index.php //修改默认首页(默认是主页下面的index.html文件,如果想要主页下面的index.php等页面在这里添加),定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
  AddDefaultCharset UTF-8 # 字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
  设置DocumentRoot指定目录的属性
  <Directory “/var/www/html”> //网站容器开始标识
    Options Indexes FollowSymLinks //找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外
    AllowOverride all     //none不使用.htaccess控制,all允许
    Require all granted //granted表示运行所有访问,denied表示拒绝所有访问
   //容器结束

4、Apache的使用方法(利用子配置文件配置虚拟主机)
  主配置文件/etc/httpd/conf/httpd.conf不要管,直接创建子配置文件/etc/httpd/conf.d/kakaops.conf。关于默认的欢迎界面的配置文件,要是看着不顺眼就删掉,只要在你的子配置文件里面定义的网站发布目录下有index.html文件,会优先访问。

1、创建一个子配置文件kakaops.conf
[root@apache-server ~]# vim /etc/httpd/conf.d/xingdian.conf
<VirtualHost *:81> //指定网站发布目录,定义81端口,还需要在主配置文件里面创建81监听端口 *监听所有ip地址
  ServerName localhost //可以写域名,本地可以用伪域名,云服务器用真域名
  DocumentRoot /var/www/html

<Directory “/var/www/html”> 网站发布目录属性,允许所有请求访问
  AllowOverride ALL
  Require all granted

2.修改主配置文件,需要添加一个监听端口
Listen 81
3.重新启动服务
4.保证网站发布目录下有index.html的文件
5、浏览器访问,端口改变需要加端口号
  也可以安装文本浏览器方便测试
  每次打开浏览器不是很方便,因此可以在服务器端安装文本浏览器,方便测试。
  [root@xingdian ~]# yum -y install elinks # 安装elinks文本浏览器
  [root@xingdian ~]# elinks 192.168.5.20 # 按ctrl + c退出
  [root@xingdian ~]# elinks --dump 192.168.135.160
  --dump 静态显示,相当于curl
  [root@localhost ~]# curl http://10.11.65.70 #本地访问
  [root@localhost ~]# firefox http://10.11.65.70 #使用火狐浏览器

4、Apache划分虚拟主机

基于端口划分的Apache虚拟主机
  [root@localhost ~]# vim /etc/httpd/conf.d/A.conf

  <VirtualHost *:81>
    Servername ip、域名、名字
    DocumentRoot /webA
  </VirtualHost>
  <Directory "/webA">
    AllowOverride ALL
    Require all granted
  </Directory>

[root@localhost ~]# vim /etc/httpd/conf.d/B.conf

  <VirtualHost *:82>  
    Servername ip、域名、名字
    DocumentRoot /webB
  </VirtualHost>
  <Directory "/webB">
    AllowOverride ALL
    Require all granted
  </Directory>

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
    Listen 81
    Listen 82
  [root@localhost ~]# mkdir -v /webA
  [root@localhost ~]# mkdir -v /webB
  [root@localhost ~]# echo “Apache Test A” > /webA/index.html
  [root@localhost ~]# echo “Apache Test B” > /webB/index.html
  [root@localhost ~]# systemctl restart httpd
  [root@localhost ~]# curl http://192.168.42.88:81
  [root@localhost ~]# curl http://192.168.42.88:82

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

基于ip划分的Apache虚拟主机
  [root@aliyun ~]# ip a a 172.20.171.235/20 dev eth0
  [root@aliyun ~]# vim /etc/httpd/conf.d/A.conf

  <VirtualHost 172.20.171.234:80>
    Servername ip、域名、名字
    DocumentRoot /webA
  </VirtualHost>
  <Directory "/webA">
    AllowOverride ALL
    Require all granted
  </Directory>

[root@aliyun ~]# vim /etc/httpd/conf.d/A.conf

  <VirtualHost 172.20.171.235:80>
    Servername ip、域名、名字
    DocumentRoot /webB
  </VirtualHost>
  <Directory "/webA">
    AllowOverride ALL
    Require all granted
  </Directory>

[root@aliyun ~]# curl http://172.20.171.234
  [root@aliyun ~]# curl http://172.20.171.235
  云服务器基于ip的apache虚拟主机的划分,不能浏览器访问

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

基于域名划分的Apache虚拟主机
  [root@aliyun ~]# vim /etc/httpd/conf.d/A.conf

  <VirtualHost *:80>
    Servername www.zhiqing.com
    DocumentRoot /webA
  </VirtualHost>
  <Directory "/webA">
    AllowOverride ALL
    Require all granted
  <Directory>

[root@aliyun ~]# vim /etc/httpd/conf.d/A.conf

  <VirtualHost 172.20.171.235:80>
    Servername www.lizhen.com
    DocumentRoot /webB
  </VirtualHost>
  <Directory "/webA">
    AllowOverride ALL
    Require all granted
  </Directory>

[root@localhost ~]# vim /etc/hosts 如果在局域网内部,做一下本地域名解析

  10.11.65.39 www.zhiqing.com
  10.11.65.39 www.lizhen.com

本地登陆验证
  [root@localhost ~]# curl http://www.lizhen.com
  [root@localhost ~]# curl http://www.zhiqing.com

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

注意:一般的公司都是基于域名创建虚拟主机
  基于ip创建的虚拟主机,其他的相同,ip不同
  基于域名创建的虚拟主机,其他的相同,域名不同
  基于端口创建的虚拟主机,其他的相同,端口不同
  三种方式可以相互转换

5、Apache地址重写(伪静态)

apache的rewrite规则(重定向)

<VirtualHost *:80 >
  Servername     www.sunlizhen.com
  ServerAlias       sunlizhen.com
  DocumentRoot   /web
</VirtualHost>
<Directory "/web">
  Require all granted
  AllowOverride ALL
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www.sunlizhen.com$
  RewriteRule ^(.*)$ https://www.jd.com [R=301,L]     
</Directory>

R=301 强制外部重定向
NC 不区分大小写
[OR] 或者
在这里插入图片描述
利用地址重写做网站的伪静态

<VirtualHost *:80>
  Servername www.sunlizhen.com
  ServerAlias sunlizhen.com
  DocumentRoot /web1
</VirtualHost>
<Directory "/web1">
  AllowOverride ALL
  Require all granted
  RewriteEngine on
  RewriteRule ^(.*).jsp$ index.html
</Directory>

6、Apache日志分析

web服务器出现大量的访问日志和错误日志,所以我们要对日志进行切割,方便管理人员的查询。一些并不重要的记录,可以规定日志中不显示这些。
  [root@localhost ~]# ls /var/log/httpd
  access_log error_log
LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
LogFormat “%h %l %u %t “%r” %>s %b” common

状态码
200正常访问
301永久重定向
304访问缓存

/var/log/httpd acces_log error_log

  • %h 是来源ip
  • %u 访问的user
  • %t时间
  • %r 动作
    有些时候一些用户使用代理服务器,这里的%h会显示代理ip,在%h后面加上%{X-FORWARDED-FOR}i 即显示真实ip。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值