apache功能简单了解

简介:

  实现http协议的程序有很多,比较有名的有:IIS目前市面上使用最多的,nginx使用的人数正在快速正加,apache古老的。apache虽然正在被但是我们也要学习一下,它的市场份额还是有一些的,而且它的实现方式更加经典。

  以上只是在http协议上实现静态数据传输,还有动态数据部分,动态数据就是可以变化的数据,这个变化就是根据浏览者的不同网页显示不同的数据。动态网页的实现语言有:php实现它的服务也叫phpasp.net实现它的是IISIIS不仅是静态服务器也是动态服务器;javascript实现它的就有很多了最著名的是tomcat,它也可以提供静态页面。

http的静态数据实现apache

1工作流程

wKiom1hWhwSRWdkZAACbYxTsf-A824.png

上图就是一个Apache处理一次请求的流程

2配置文件分布

  Apache2.4的配置文件被分散多个文件里,主配置文件在/etc/httpd/conf目录下,模块的配置文件在/etc/httpd/conf.modules.d目录中,其它配置文件在/etc/httpd/conf.d目录下。

3主配置文件

主配置文件中一些重要的基本配置,Apache的特性设置我分开说

1
2
3
4
5
6
7
8
9
10
11
12
ServerRoot  "/etc/httpd"  #日志的存放目录
Listen 80  #监听的端口
User apache  #用户
Group apache  #组
ErrorLog  "logs/error_log"  #错误日志日志
LogLevel warn  #错误日志级别,其它的级别debug, info, notice, warn, error, crit,alert, emerg.
<IfModule log_config_module>< /IfModule >这两之间定义的是访问日志的个格式和级别
以下四行是错误从定性的定义,定义是根据响应状态码定义的,当然我们还可以根据状态码定义更多
#ErrorDocument 500 "The server made aboo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404"/cgi-bin/missing_handler.pl"
#ErrorDocument 402http://www.example.com/subscription_info.html

EnableSendfile on #这个内容特别重要启用这个功能后,处理静态数据的流程变成下图,可以和之前的图片对比一下,这样可以减少数据拷贝次数。出现这种情况主要是因为,静态数据不需要加工,在磁盘读取后的内容就是我们想返回给用户的内容。

wKiom1hWh0HTPZN2AACLJplVbdw057.png

4提供内容的路径和路径特性定义

1
2
3
4
5
6
7
8
DocumentRoot  "/var/www/html"  #默认提供网页页面的路径
<Directory  "/var/www/html" >
Options IndexesFollowSymLinks  # Indexes显示目录下的文件;FollowSymLinks 显示链接文件的原文件内容;SymLinksifOwnerMatch 当链接文件和原文件为相同属主时显示文件内容,ExecCGI允许运行脚本
     #AllowOverride controls what directives may be placed in files.
     #It can be "", "None", or any combination of the keywords:
    AllowOverride None  #不允许路径重写,All允许重写,重写方法可以写在这当前文件中写也可以写在目标重写目录的.htaccess文件中
    Require all granted  #允许任何人访问,也可以定义使用哪些用户登录,基本上没有人使用。
< /Directory >

5持久连接

1
2
3
  KeepAlive On
  KeepAliveTimeout 30ms
  MaxKeepAliveRequests 20

6模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<IfModule prefork.c>
StartServers       8    #服务启动时启动的子进程数
MinSpareServers    5    #最少空闲子进程数
MaxSpareServers   20
ServerLimit      256    #同时启动的子进程数上限
MaxClients       256    #同时服务的客户端数上限(支持的并发数上限)
MaxRequestsPerChild  4000   #每个子进程在其生命周期内处理的请求数上限
< /IfModule >
  
<IfModule worker.c>
StartServers         4   #服务启动时启动的子进程数
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25    #每个子进程可启动的线程数
MaxRequestsPerChild  0     #每个子进程可处理的请求数,0表示无限制
< /IfModule >

7压缩

   这个内容定义在<Directory这个里面

1
2
3
    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE text /html  text /plain  text /css  text /xmltext/javascript  #还有其它的压缩选项
BrowserMatch "^Mozilla/2"  no- gzip  #不支持压缩的直接返回原文件


8 https实现

首先是获取证书这个可以参考http://oldking.blog.51cto.com/10402759/1882421

然后把这三个文件放在如下目录中,还有装mod_ssl的安装包

1
2
3
4
5
6
7
8
9
10
11
12
[root@centos7 ~] # ls /etc/httpd/ssl/
httpd.crt httpd.csr  httpd.key
[root@centos7 ~] # vim/etc/httpd/conf.d/ssl.conf
#编辑如下两行
SSLCertificateFile  /etc/httpd/ssl/httpd .crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd .key
#添加如下五行
<Directory "/www/phpMyAdmin-4.4.14.1-all-languages" >
    Options None
    AllowOverride None
    Require all granted
< /Directory >

9 http协议重定向到https

1
2
3
4
5
6
7
8
9
<Directory "/www/phpMyAdmin-4.4.14.1-all-languages" >
    Options Indexes FollowSymLinks
    AllowOverride All  #允许重写,这项是重写路径的关键
    Require all granted
< /Directory >
编辑 /www/phpMyAdmin-4 .4.14.1-all-languages/.htaccess文件
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$https: // %{SERVER_NAME}%{REQUEST_URI} [L,R]

http动态数据的实现php

1 Apachephp通信的方式

有三种,1Apache以模块的方式调用php2Apachephp通过fastcgi模式通信;3通过cgi模式通信这种实现方式基本没人使用。

目前fastcgi正在取代模块方式,取代的原因是因为通过模块方式响应请求,每次完成一次php请求都要启动一次php进程,完成请求还要销毁进程,这个过程会浪费大量的时间。fastcgi模式则是把php直接运行在内存中,使用的时候直接向127.0.0.1:9000发送请求就能可以,减少了进程生成销毁的消耗。

php的配置文件一定要关闭display_errors

              post_maxsize

2 xcache

  xcache是加速php请求的工具,它对访问频度特别大的动态网页的加速特别明显。它的功能是把php请求的报文和处理后数据对于起来保存,下次再遇到同样的请求可以直接响应。学术一点就是XCache能够实现在内存中开辟一个缓存空间,将任何进程编译的opcode放在缓存空间里面,下次有进程需访问同一个文件就可以直接去缓存空间去取省去编译的步骤。

四个网站模板

  wordpress这是开源的php个人博客模板

  phpwind论坛模板

  discus论坛模板

  phpmyadmin数据库mysql的网页管理工具

 这四个网站模板实现可以帮助我们熟悉对php的了解。

总结

  这一节基本上说的全是配置文件原理性的东西和Apache常用的功能,子所以不写具体步骤主要是网上类似博客特别多。这一节的重点,Apache的持久连接,这个需要根据生产环境具体选择需要摸索;Apache的压缩传输;https传输,很多网站都在慢慢实现全站https;重定向;Apachephp之间尽量使用fastcgi模式通信;xcache加速php请求。还有四个网页模板最好都实现一遍。





      本文转自Ailu0li 51CTO博客,原文链接:http://blog.51cto.com/oldking/1883805 ,如需转载请自行联系原作者





相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
域名解析 Linux Apache
Linux Apache服务详解——虚拟网站主机功能实战
Linux Apache服务详解——虚拟网站主机功能实战
33 5
|
7月前
|
存储 物联网 数据管理
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(12)
现在到了使用Apache IoTDB进行IoT相关开发的架构设计与功能实现的最后一个环境,在本文中我将向大家介绍IoTDB的查询语言。IoTDB为咱们广大开发者提供了类似SQL的查询语言,用于与IoTDB进行交互,查询语言可以分为4个主要部分:架构语句、数据管理语句、数据库管理语句、功能。
134 0
|
7月前
|
SQL 物联网 Apache
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)
目前,IoTDB中不存在冲突的权限,因此用户的真正权限是用户自身权限和用户角色权限的结合。也就是说,要确定用户是否可以执行操作,取决于用户自己的权限之一或用户角色的权限是否允许该操作。用户自己的特权和用户角色的特权可能会重叠,但这并不重要。
128 1
|
7月前
|
SQL 传感器 物联网
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(10)
物联网提供限制/限制条款和偏移/偏移子句,以使用户对查询结果有更多的控制权。使用 LIMIT 和 SLIMIT 子句允许用户控制查询结果的行数和列数,使用 OFFSET 和 SOFSET 子句允许用户设置结果的起始位置进行显示。
|
1月前
|
消息中间件 JSON Kafka
实战 | Apache Hudi回调功能简介及使用示例
实战 | Apache Hudi回调功能简介及使用示例
17 0
|
1月前
|
存储 SQL Apache
Apache Hudi 1.x 版本重磅功能展望与讨论
Apache Hudi 1.x 版本重磅功能展望与讨论
37 4
|
7月前
|
SQL 物联网 Java
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(9)
GROUP BY 语句为用户提供了三种类型的指定参数: 参数1:时间轴上的显示窗口 参数2:划分时间轴的时间间隔(应为正) 参数3:时间滑动步长(可选,不应小于时间间隔,如果未设置,则默认等于时间间隔)
133 0
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(9)
|
7月前
|
SQL 传感器 物联网
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(8)
IoTDB为用户提供了多种插入实时数据的方式,如直接输入插入SQL语句在客户端,这插入SQL语句语句可用于将数据插入到一个或多个已创建的指定时间序列中。
192 1
|
7月前
|
SQL 存储 缓存
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(7)
IoTDB支持存储级TTL设置,这意味着它能够定期自动删除旧数据。使用TTL的好处是,希望咱们程序猿可以控制总磁盘空间的使用,并防止机器用完磁盘。此外,随着文件总数的增加,查询性能可能会降低,并且随着文件的增加,内存使用也会增加。及时删除此类文件有助于保持较高的查询性能并减少内存使用。
143 0
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(7)
|
7月前
|
存储 SQL 传感器
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(6)
接下来我们讨论一下关于创建存储组的相关方面,在这里值得注意的是,当路径本身或路径的父/子层已经被设置为存储组时,则不允许将路径设置为存储组。例如,设置是不可行的​​root.ln.wf01​​存在两个存储组时,作为一个存储组​​root.ln​​和​​root.sgcc​​。系统会给出相应的错误提示。
118 0

热门文章

最新文章

推荐镜像

更多