首页 > 代码库 > apache功能简单了解

apache功能简单了解

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

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

http的静态数据实现apache

1工作流程

技术分享

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

2配置文件分布

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

3主配置文件

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

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

技术分享

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

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持久连接

 KeepAlive On
 KeepAliveTimeout 30ms
 MaxKeepAliveRequests 20

6模式

<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这个里面

   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的安装包

[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

<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请求。还有四个网页模板最好都实现一遍。


本文出自 “老王linux旅程” 博客,请务必保留此出处http://oldking.blog.51cto.com/10402759/1883805

apache功能简单了解