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

[经验分享] Apache httpd 详解

[复制链接]

尚未签到

发表于 2018-11-22 09:54:15 | 显示全部楼层 |阅读模式
  1.httpd简介

  apache server(httpd),作为非常流行的WEB服务器,长期以来稳居第一。
  

  2.安装httpd
  

  采用本地YUM源的方式进行RPM安装。
[root@localhost ~]# cat /etc/yum.repos.d/mytest1.repo
[mytest1]
name=myyumtest1
baseurl=file:///home/yum/cdrom/Server
enabled=1
gpgcheck=0
[root@localhost ~]#  

  采用yum install httpd即可安装完毕。
  

需要注意的是,在安装HTTPD的时候,应该关闭selinux.
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]#通过命令setenforce 0可以临时关闭selinux.
当然可以通过编辑/etc/sysconfig/selinux来关闭。
  

  

  很显然,安装完毕后,我们需要知道HTTPD安装后的配置目录在哪里?
  可以利用下面的命令来定位HTTPD的安装文件,库文件,帮助文件等。
  

[root@localhost ~]# rpm -ql httpd | more
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/proxy_ajp.conf
/etc/httpd/conf.d/welcome.conf
  

  3. 认识HTTPD的相关目录
[root@localhost ~]# cd /etc/httpd
[root@localhost httpd]# tree .
.
|-- conf
|   |-- httpd.conf
|   `-- magic
|-- conf.d
|   |-- README
|   |-- proxy_ajp.conf
|   `-- welcome.conf
|-- logs -> ../../var/log/httpd
|-- modules -> ../../usr/lib/httpd/modules
`-- run -> ../../var/run  第一,httpd的主配置文件是/etc/httpd/conf/httpd.conf
  第二,在httpd.conf文件中通过include指令将conf.d/*.conf进行包含,也就是说,以后我们可以在conf.d目录下新增自己的配置文件。
  第三,对于WEB服务器而言,都有一个功能,那就是记录访问,错误日志。HTTPD的日志目录在/var/log/httpd下。
  第四,HTTPD的一个特性,就是模块化设计。我们可以增加模块来添加功能。
  

  

  4. HTTPD的几种运行模型
  对于HTTPD处理用户请求有几种模型:
  

  perfork模型:
  默认模型。在HTTPD启动后,便会有多个进程启动监听指定端口,然后一个请求被一个进程处理。也就是多进程处理模型。很显然,多进程处理的话,由于进程间的独立性,所以比较稳定。但是如果请求过多,进程所需要的资源,特别是内存,会非常大,同时CPU在很多进程间切换,也将非常耗时。
  

  worker模型:
  是一种多线程处理用户请求的方式。说白了,就是一个进程创建多个线程处理用户请求。由于多个线程间可以共享资源,对内存等资源需求小,但是容易出现死锁现象。
  

  

  event模型:
  基于事件驱动,综合使用了perfork和worker模型。
  

[root@localhost httpd]# /usr/sbin/httpd
You have new mail in /var/spool/mail/root
[root@localhost httpd]# ps aux | grep httpd
root      5589  0.0  0.6  10292  2820 ?        Ss   22:58   0:00 /usr/sbin/httpd
apache    5590  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
apache    5591  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
apache    5592  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
apache    5593  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
apache    5594  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
apache    5595  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
apache    5596  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
apache    5597  0.0  0.4  10424  2060 ?        S    22:58   0:00 /usr/sbin/httpd
root      5599  0.0  0.1   3896   664 pts/0    R+   22:59   0:00 grep httpd  启动HTTPD,可以通过/usr/sbin/httpd来启动,或者service httpd start。
  默认,HTTPD的工作模型是perfork。
  通过上面的,可以知道,启动HTTPD后,由于HTTPD的特性【事先创建进程】,会有多个HTTPD的进程,其中会有一个HTTPD的进程的OWER:GROUP都是ROOT。【很显然,这是一个主导进程,用于创建,销毁其他HTTPD进程的 master process】。其他HTTPD进程可以成为工作进程,work process.
  说白了,就是每一个用户请求,由master process负责创建work process来响应。
  

  

  5. HTTPD的主配置文件分析
  ### Section 1: Global Environment
  重要的配置片段:

  ServerRoot "/etc/httpd"    说明HTTPD的工作目录
  KeepAlive Off              由于HTTP协议有1.0,1.1两个版本。1.1支持长连接。
  

  可以配置PERFORK模型的一些参数:
  
  StartServers       8
  MinSpareServers    5
  MaxSpareServers   20
  ServerLimit      256
  MaxClients       256
  MaxRequestsPerChild  4000
  
  【同理类似的配置WORKER模型】
  

  Listen 80                   指明监听端口,注意HTTPD可以在多个端口同时进行监听
  Include conf.d/*.conf       说明配置文件包含关系
  

  

  

  ### Section 2: 'Main' server configuration
  DocumentRoot "/var/www/html"   指明WEBROOT根路径
  

  指明访问WEBROOT时的一些属性
  
  Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
  
  可以实现基于IP,用户等的访问限制。
  

  

  ### Section 3: Virtual Hosts
  虚拟主机配置。
  

  

  6. HTTPD的虚拟主机配置实战
  第一步:
  

  由于### Section 2: 'Main' server configuration和### Section 3: Virtual Hosts不可以同时生效。因此配置虚拟主机,需要首先注释掉 #DocumentRoot "/var/www/html"
  

  

  第二步:
  

  虚拟主机,实际上可以通过以下几种方式来实现:
  基于IP。说白了,一台物理主机,多个网卡,多个IP地址。
  基于PORT。一台物理主机,监听多个端口。
  基于SERVER NAME。
  由于,实际中基于SERVER NAME来实现虚拟主机较多,因此,下面我们动手来实现这种方式的虚拟主机。
  

  

  第三步:配置文件
[root@localhost conf.d]# vi myhttpd.conf
      1 NameVirtualHost 192.168.204.88:80
      2
      3
      4     DocumentRoot /web/v1/
      5     ServerName   www.zfz1.com
      6     ErrorLog logs/www.zfz1.com-error_log
      7     CustomLog logs/www.zfz1.com-access_log common
      8
      9
     10
     11     DocumentRoot /web/v2/
     12     ServerName   www.zfz2.com
     13     ErrorLog logs/www.zfz2.com-error_log
     14     CustomLog logs/www.zfz2.com-access_log common
     15   

  myhttpd.conf是在/etc/httpd/conf.d下新建的配置文件。
  需要明确,IP:PORT,SERVERNAME,DOCUMENTROOT,LOGPATH等信息。
  

  

  第四步:准备DOCUMENTROOT,并测试配置文件
[root@localhost v2]# cd /web
[root@localhost web]# tree .
.
|-- hello.html
|-- index.html
|-- v1
|   `-- hello.html
|-- v2
|   `-- hello.html
`-- world.html -> /etc/passwd
2 directories, 5 files
[root@localhost web]#
[root@localhost conf.d]# httpd -t
Syntax OK  

  

  第五步:本地指明HOSTS
  192.168.204.88  www.zfz1.com
  192.168.204.88  www.zfz2.com
  

  

  第六步:启动HTTPD并测试访问
[root@localhost conf.d]# service httpd start
Starting httpd:                                            [  OK  ]
[root@localhost ~]# ps aux | grep httpd
root      3414  0.0  0.6  10420  2912 ?        Ss   22:36   0:00 /usr/sbin/httpd
apache    3415  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
apache    3416  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
apache    3417  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
apache    3418  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
apache    3420  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
apache    3421  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
apache    3422  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
apache    3423  0.0  0.4  10420  2140 ?        S    22:36   0:00 /usr/sbin/httpd
root      3452  0.0  0.1   3896   664 pts/2    R+   22:38   0:00 grep httpd  

  

DSC0000.jpg

  

  

DSC0001.jpg

  

  

  





运维网声明 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-638077-1-1.html 上篇帖子: Apache Tomcat Native library路径找不到 下篇帖子: apache做负载均衡器 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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