设为首页 收藏本站
查看: 824|回复: 0

[经验分享] apache的学习笔记

[复制链接]

尚未签到

发表于 2018-11-17 13:35:25 | 显示全部楼层 |阅读模式
  web service:
  传输层:提供进程地址.
  Port Number:
  tcp:传输控制协议,面向连接的协议,通信是建立虚拟链路,结束后拆除链路.
  0-65535
  udp:user datagram protocol,无连接的协议.
  0-65535
  IANA:
  0-1023:永久分配给固定的应用使用.
  1024-41951:亦为注册端口,但要求不是太严格,分配给程序注册为某应用程序使用.
  41952+:客户端随机使用的端口.(动态端口或私有端口)
  其范围定义:/proc/sys/net/ipv4/ip_local_port_range
  在客户端和服务器端通信是使用的是一对socket.
  套接字(socket):
  IPC的一种实现,允许位于不同主机(甚至同一主机)上的不同进程之间进行通信,数据交换;socket API,出现于1983年左右,最早在4.2的BSD系统上实现.
  类型:
  SOCK_SIREAM:tcp socket
  SOCK_DGRAM:udp socket
  SOCK_RAM:裸socket
  ipv4地址私有地址:
  10.0.0.0/8
  172.16.0.0/16-172.31.0.0/16
  192.168.0.0/24-192.168.255.0/24
  

通信过程中两方主机内核中都会有发送缓冲和接收缓冲,客户端的接收缓冲对应服务器端的发送缓冲.  

  tcp协议的特性:
  请求连接,三次握手
  将数据打包成段,校验和(CRC-32)
  确认,重传以及超时
  排序,逻辑序号
  流量控制:滑动窗口算法
  拥塞控制:慢启动和拥塞避免算法
  Socket Domain(根据使用的地址不同)
  AF_INET:address family:ipv4.
  AF_INET6:ipv6.
  AF_UNIX:同一主机上不同进程进行通信时使用.
  每类套接字都至少提供了两种socket:流.数据报.
  流:可靠的传递,面向连接,无边界.
  数据报:不可靠地传递,有边界.
  套接字相关的系统调用:
  socket():创建一个套接字.
  bind():绑定.
  listen():监听.
  accept():接收请求.
  connect():请求连接建立.
  write():发送数据.
  read():接收数据.
  send(),recv(),sendto(),recvfrom().
  http:超文本传输协议(hyper text transfer protocol).
  html:编程语言,超文本标记语言.
  MIME:multipurpose Internet mail extesion
  工作机制:
  http请求
  http响应
  http资源:web resource
  静态文件:.jpg,.html,.gif,.txt,.js,.css,.avi
  动态文件:.php,.jsp.
  

  媒体:  媒体类型(MIME类型):major/minor
  text/html
  text/planin
  image/jpeg
  image/gif
  


  URI:uniform resource>  URL(uniform resource locator):用于描述某服务器某特定资源的位置.
  Scheme://Server:Port/Path/to/resource
  URN(uniform resource naming)
  http协议版本:
  HTTP/0.9:原型版本,功能简陋.
  HTTP/1.0:第一个广泛使用的版本,支持MIME.
  HTTP/1.1:增强了缓存功能.
  SPDY:谷歌开发的一种协议,通过压缩,多路复用和优先级来缩短加载时间.
  HTTP/2.0:
  一次完整的http请求过程:
  (1) 建立或处理连接:接收请求或拒绝请求.
  (2) 接收请求:
  接收来自于网络的请求报文中对资源的一次请求的过程.
  并发访问响应模型(web I/O):
  单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个,多个请求串行响应.
  多进程I/O结构:启动多个线程,每一个进程响应一个请求.
  复用I/O结构:一个进程响应n个请求.
  多线程模型:一个进程生成n个线程.
  事件驱动:event-driven
  复用的多进程I/O结构:一共启动多个进程,每个进程响应n个请求.
  (3) 处理请求:
  对请求报文进行解析,并获取请求的资源及请求方法等相关信息.
  元数据:请求报文首部
    
  Host:www.baidu.com 请求的主机名称
  Connection:指明这次连接的方式
  (4) 访问或获取资源:
  获取请求报文中请求的资源.
  web服务器:即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后的生成的资源,这些资源放在本地文件系统某路径下,此路径通常称为DocRoot
  (5) 构建响应报文.
  (6) 发送响应报文.
  (7) 记录日志.
  http服务器程序:
  httpd(apache)
  nginx
  lighttpd
  

  应用程序服务器:  IIS
  tomcat,jetty,jboss,resin
  webshpere,weblogic,oc4j
  

  httpd的安装配置和使用:
  httpd:apache
  a patchy server=apache
  ASF:apache software foundation
  httpd的特性:
  高度模块化(DSO机制):core + modules
  DSO:dynamic shared object
  MPM:multi-processing modules(多路处理模块)
  prefork:多进程模型,每个进程响应一个请求.
  一个主进程负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求,即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个.
  worker:多线程模型,多进程生成,一个进程生成多个线程,一个线程响应一个请求.
  event:事件驱动模式,一个线程响应多个请求
  安装apache:
  安装方式:
  rpm
  编译
  centos6:2.2
  centos7:2.4
  程序环境:
  配置文件:
  /etc/httpd/conf/httpd.conf
  /etc/httpd/conf.d/*.conf
  服务脚本:
  /etc/rc.d/init.d/httpd
  配置文件:
  /etc/sysconfig/httpd
  主程序文件:
  /usr/sbin/httpd
  /usr/sbin/httpd.event
  /usr/sbin/httpd.worker
  日志文件目录:
  /var/log/httpd
  access.log:访问日志.
  error.log:错误日志.
  站点文件目录:
  /var/www/html
  模块文件路径;
  /usr/lib64/
  常用配置:
  1.修改监听的ip和port.
  Listen [ip:] port
  省略ip表示监听本机所有ip;Listen可重复出现多次.
  2.持久连接.
  persistent connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其他的请求完成.
  任何断开?
  数量限制:默认100
  时间超时:可配置
  副作用:对并发访问量较大的服务器,持久连接功能会使有些请求得不到响应.
  折衷:使用较短的持久连接功能.
  httpd-2.4支持毫秒级持久时间.
  KeepAlive On|Off:是否允许长连接.
  MaxKeepAliveRequests #:最大的持久连接数.
  KeepAliveTimeout #:等待下一个连接的秒数.
  默认为/usr/sbin/httpd.其使用prefork
  查看模块列表:
  查看静态编译的模块:
  httpd -l:查看静态编译的模块
  查看静态编译及动态装载的模块.
  httpd -M
  更换使用的httpd程序:
  打开/etc/sysconfig/httpd中的关于worker的一行
  关于mpm_Profork的选项:
  
  StartServers       8 :开始启动时启动的进程数,即几个主进程的子进程.
  MinSpareServers    5 :最少空闲进程数.
  MaxSpareServers   20 :最大空闲进程数.
  ServerLimit      256 :能够为MaxClients准备的服务器进程数量.
  MaxClients       256 :允许同时连接的最大请求数量.
  MaxRequestsPerChild  4000:一个服务器进程最大能够请求多少个请求,相当于生命周期一样.
  
  mpm_worker的选项:
  
  StartServers         4 :服务器启动时启动的进程.
  MaxClients         300 :服务器端最大启动的线程数.
  MinSpareThreads     25 :最少空闲线程数.
  MaxSpareThreads     75 :最大空闲线程数.
  ThreadsPerChild     25 :每个进程能启动的线程数.
  MaxRequestsPerChild  0 :每个线程能接收的请求数.
  
  PV,UV
  PV:Page View:页面访问量.
  UV:User View:用户访问量.
  独立ip量
  DSO(动态共享对象)
  配置指令实现模块加载
  loadmodule  
  

模块路径可使用相对地址  相对于ServerRoot执行的路径而言的.
  

  定义'Main' server.
  DocumentRoot
  文档路径映射:
  DocumentRoot指向的路径为URL路径的起始位置.
  DocumentRoot "/var/www/html"
  index.html -->http://HOST:PORT/index.html
  站点访问控制
  可基于两种类型的路径指向对那些资源进行访问控制
  文件系统路径
  
  
  
  URL路径
  
  

访问控制机制  基于来源地址
  基于用户账号密码
  

  7.Directory中基于来源地址实现访问控制
  (1)options
  所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
  Indexes:索引
  FollowSymLinks:允许跟踪符号链接文件
  SymLinksifOwnerMatch:符号链接的文件和原文件属主是同一个是允许
  ExecCGI:允许执行CGI脚本
  MultiViews:执行隐含文件名匹配
  (2)基于来源地址的访问控制
  Order:检查次序
  Order allow,deny
  Order deny,allow
  后面的是默认机制.
  Order allow,deny
  allow from
  deny all
  来源地址:
  ip
  netadd
  172.16
  172.16.0.0
  172.16.0.0/16
  172.16.0.0/255.255.0.0
  8.定义默认主页面
  DirectoryIndexes index.html index.html.var
  9.日志设置
  错误日志:
  Errorlog logs/error_log
  Errorlog warn
  debug,info,notice,warn,erro,crit,alert,emerg
  访问日志
  CustomLog logs/access_log combined
  

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined  LogFormat "%h %l %u %t \"%r\" %>s %b" common
  LogFormat "%{Referer}i -> %U" referer
  LogFormat "%{User-agent}i" agent
  %h:客户端地址

  %l:remote logname (from>  %u:remote user,登录的用户名
  %t:time the request was received ,服务器收到请求的时间
  %r:first line ofrequest,请求报文的首部的信息.
  %>s:响应状态码
  %b:响应报文的大小,单位是字节,不包括响应报文首部
  %{Referer}i:请求报文当中"referer"首部的值,当前资源的访问入口,即从哪个页面中的超链接跳转而来
  %{User-Agent}i:请求报文当中"User-Agent"首部的值,即发出请求的应用程序
  

  路径别名
  DocumentRoot "/var/www/html"
  http://www.zeng.com/fang
  -->/www/apache/fang
  Alias /URL/ "/PATH/TO/SOMEDIR"
  

  Alias /bbs/  "/www/apache/fang"  

  设定默认编码格式
  AddDefaultCharset UTF-8
  GBK,GB2312,GB18030
  基于用户的访问控制
  认证质询
  www-Authenicate:响应码为401,拒绝客户端请求,并说明要求客户提供账号和密码.
  认证:
  Authorization:客户端邮件填入账号和密码后再次发送请求报文,认证通过,则服务器发送响应的资源
  认证类型:
  basic:明文
  digest:消息摘要
  

  安全域:需要用户认证后才能访问的路径  应该通过名称对其进行标识,并用于告知用户认证的原因
  用户的账号和密码存储于何处
  存储:
  文本文件
  SQL数据库
  ldap
  nis
  basic认证:
  (1)定义安全域
  
  Options None
  AllowOverride None
  AuthType Basic
  AuthName "STRING"
  AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
  Require user username1 username2 ...
  AuthGroupFile "/PATH/TO/HTTPD_GROUP_PASSWD_FILE"
  
  允许账号文件中的所有用户登录访问
  Require valid-user
  使用组登录时需要定义用户文件和组文件.
  组文件:每行定义一个组
  GROUP_NAME:user1 user2 user3
  (2)提供账号和密码存储
  htpasswd命令进行管理
  htpasswd [options] passwdfile username
  -c:自动创建passwdfile,仅在第一次添加用户时使用
  -m:md5加密用户密码
  -s:sha1加密用户密码
  -D:删除指定用户
  例:
  
  Options Indexes
  AllowOverride None
  AuthType Basic
  AuthName "fang"
  AuthUserFile "/etc/httpd/conf/.htpasswd"
  Require valid-user
  AuthGroupFile "/etc/httpd/conf/.htgroup"
  
  

  虚拟主机
  三种实现方案:
  基于ip:
  为每个虚拟主机准备至少一个ip地址
  基于主机名:
  为每个虚拟主机准备一个主机名
  基于端口:
  为每个虚拟主机准备至少一个专用端口,实践中很少使用
  注意:中心主机不要和虚拟主机一起使用
  方法:注释DocumentRoot
  每个虚拟主机都有专用配置:
  
  ServerName
  DocumentRoot ""
  
  ServerAlias:虚拟主机的别名
  Errorlog:错误日志
  Accesslog:访问日志
  
  
  示例1:基于ip的虚拟主机
  
  ServerName web1.zeng.com
  DocumentRoot "/vhost/web1/htdocs"
  
  

  ServerName web2.zeng.com
  DocumentRoot "/vhost/web2/htdocs"
  

  

  内置的status页面
  
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from .example.com
  
  界面中表示的意义:
  “_”等待连接,“S”启动,“R”读取请求,
  “W”发送回复,“K”Keepalive(已读),“D”DNS查找,
  “C”关闭连接,“L”记录,“G”顺利完成,
  “I”闲暇清理工人,“.” 打开没有当前进程的插槽
  如果要显示更详细的信息,可以打开ExtendedStatus On这个选项.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636279-1-1.html 上篇帖子: LAMP(4)Apach和php结合、Apache默认虚拟主机 下篇帖子: linux安装apache-mb5a48d1bd02ef1的博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表