qq70191 发表于 2018-11-17 09:36:15

apache配置文件1-zhangyuhe2的博客

  #yum –y installl httpd            #安装httpd,这是从163上下载的
  # rpm -q httpd         #查看安装的版本
  httpd-2.2.15-60.el6.centos.6.x86_64
  # rpm –qlhttpd | head   #查看生成的文件
  配置文件:
  /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
  日志文件:
  # ls /var/log/httpd/
  access_log    访问日志
  error_log      错误日志
  文档根目录:
  /var/www/html
  CGI目录:/var/www.cgi-bin/
  模块与运行文件:
  /etc/httpd/modules#模块文件,链接指向/usr/lib64/httpd/modules
  /etc/httpd/run      #保存运行时的pid,也是一个链接,指向/var/run/httpd

  如上:会看到有8个进程,只有第一个root运行,其实运行的都是apache用户,为什么?因为在主机上注册小于1023的端口只有管理员有权限,这个进程并不会直接响应用户请求,其余的7个进程是工作进程,真正工作的进程是这个7个。

  如下:当我们启动httpd服务之后,其实就可以直接访问了,就像上图一样,要注意,这并不是默认主页,而是测试主页,为什么呢?在上图当中,我们并没有请求资源 ,但是显示了一个apache的欢迎主页,此页面位于/etc/httpd/conf.d里面,如下面的操作,当我们把此此欢迎文件的后缀名给改了:
  # cd /etc/httpd/conf.d
  # mv welcome.conf{,.bak}          #此操作就是改名,welcome与中括号之间没有空格

  # service httpd>  再次访问,会出现下面的情况,欢迎主页没有了,httpd服务直接将/var/www里面文件都列出来了,这种操作是十分危险的,因为用户可以随意访问哪个html文件!这是httpd默认的一种机制,我们会在下面讨论如果关闭这种机制。

  启动时报错的解决办法:

  在启动httpd时报错:httpd:httpd: Could not>  (无法可靠地确定服务器的完全限定域名)解决方法把主配置文件当中的这一行如实填写:
  276 ServerName www.magedu.com:80
  主配置文件格式介绍:
  主配置文件:/etc/httpd/conf/httpd.conf               #格式:配置参数   值
  NOTE:
  ü配置指令不区大小写
  ü值有可能区分大小写,为路径时,取决于文件系统,文件系统区分大小写,这里就区分。
  ü有些指令可以重复出现多次
  FORMAT:
  # grep "Section" /etc/httpd/conf/httpd.conf   #查看配置文件的段落格式
  ### Section 1: Global Environment      全局环境配置
  ### Section 2: 'Main' server configuration 主机配置:用于仅提供一个站点时使用
  ### Section 3: Virtual Hosts       虚拟主机配置:一个主机可供多个站点,虚拟主机与主机配置只能有一个启用
h ttpd常用配置概述:
  1.    语法测试
  2.    更改侦听的IP加端口,可出现多次,也就是说可以侦听多个IP和端口
  3.    持久连接开启以及两种限制方法,并且做一个测试
  4.    MPM(多道处理模块),查看静态编译的模块
  lGRAMMERTEST(语法测试):
  当我们修改完配置文件之后要进行语法测试,如果不经测试直接重读配置文件或重启服务的话会失败!
  # service httpd configtest          #这两条命令选一测试即可,测试成功会有systax OK的字样出现
  # httpd -t
  绝大多数配置修改后,可以通过service httpd roload来生效,如果修改了侦听的IP和端口,必须重启生效!!
  lEXAMPLE:
  Listen80            #此配置就是默认侦听到80端口,可以出现多次
  Listen 8080         #再出现一次,把8080端口一块给侦听了
  note:其实此配置的格式是这样的Listen1.2.3.4:80,如果没写IP 的话,就默认侦听到主机上所有IP的80和8080端口.
  l持久连接
  # vim /etc/httpd/conf/
  Listen 80   #侦听到哪个端口,默认侦听所有IP,也可以写成这样Listen 1.2.3.1:8080
  KeepAlive Off#是否开启持久连接,默认关闭
  MaxKeepAliveRequests 100#当开启持久连接后的优化措施,限制最大请求数100个请求,这是默认值
  KeepAliveTimeout 15         #当开启持久连接后的优化措施,超时机制15秒,这是默认值,不要太大
  NOTE:持久连接一旦开启,断开只有两个标准,超时和限制最大请求数。我们一定要注意,使用持久连接的副作用就是前面的用户一直建立连接,后面的用户被拒绝服务,这是有很有可能发生的。如果关闭了持久连接又会造成带宽的浪费,所以中庸又出现了,一个折衷的办法就是把持久连接的超时设的少一点,那么设置多少好呢?这个要根据服务器的性能来调整,如果服务器的性能很好,带宽很足,可以把持久连接调整为2秒,默认就是15秒。
  telnet服务与所有的明文文本类服务都是支持的,使用telnet可以获取httpd服务的资源,也可以获取ftp或者tftp的资源,所以我们在做用linux获取httpd服务的资源时也可以使用telnet,比如我们可以像下文当中那样,我们手动输出获取什么资源:
  telnet 192.168.0.1 80
  GET/test.htmlHTTP/1.1    #获取一个资源,然后指明版本,HTTP必须大写
  Host:192.168.0.1            #然后指明获取哪个主机的资源33
  如果不使用持久连接的话,获取资源之后就立马断开了,如果使用持久连接的话,获取资源之后不会断开,还可以继续请求资源,直到超时时间到了服务器会自动断开。
  一般tcp连接是谁请求谁断开,但是httpd服务可以自己强行与客户端断开。
  lMPM(多道处理模块)
  httpd2.2只能同时使用一个模块,想要使用其他的模块只能重新编译。http2.4可编译时可以把三个模块都编译进去,在运行的时候可以随意的切换。rpm包会帮我们提供三个二进制程序可以实现三种MPM模块的机制。
  # httpd –l    # httpd –l查看编译到内核当中的模块,这个模块并不包括DSO(动态共享模块)模块
  core.c    #核心
  prefork.c#仅支持preform,只能有一种多道处理模块,编译后不能修改,使用ps aux | grep httpd来的准确
  http_core.c#http协议的核心
  mod_so.c   #支持DSO的机制,也就是说支持模块动态安装和卸载的功能,这也是其他功能能够整合到httpd当中的原因
  其实通过ps aux } grep httpd也可以查看到当前运行的是哪一个MPM模块,如下所示:

  上图所示,当前运行的MPM为/usr/sbin/httpd代理这是prefork的工作模式,如果是worker或者event的话,那么在程序名也会有所体现。
  那么哪些模块可以动态的装载进httpd呢?
  通过httpd-M列出已经装载的所有DSO及非DSO模块
  通过httpd-l(小L)列出支持使用的非DSO模块
  # httpd –M       #列出所有的模块(前四行就是集成到核心的四个静态模块,而shared就是动态共享模块)
  so_module (static)   #非DSO模块
  auth_basic_module (shared)#带shared是DSO模块
  模块两类: 一是MPM模块,另一种是DOS可动态装载的模块,所以
  # httpd    #2.2版本其实支持三种,event是测试的,其余的两种都是支持的,三个模块位于/usr/sbin/下
  httpd         httpd.event   httpd.worker
  默认是使用httpd,我们如果想使用worker模块的话要编辑/etc/sysconfig/httpd(httpd的脚本配置文件)当中的:#HTTPD=/usr/sbin/httpd.worker,把前面的#去掉,然后重启服务文件就可以使用worker了,默认注释的话就是使用httpd,也就是prefork。把注释去掉之后,使用ps aux结果如下:
  root       21600.00.1 1755483940 ?      Ss   00:05   0:00 /usr/sbin/httpd.worker
  apache   21630.00.1 5198085332 ?      Sl   00:05   0:00 /usr/sbin/httpd.worker
  apache   21640.00.1 5198085320 ?      Sl   00:05   0:00 /usr/sbin/httpd.worker
  apache   21660.00.1 5198085324 ?      Sl   00:05   0:00 /usr/sbin/httpd.worker
  把#再次加上之后再次ps aux
  root       23060.00.0 1753403760 ?      Ss   00:07   0:00 /usr/sbin/httpd
  apache   23080.00.0 1753402480 ?      S    00:07   0:00 /usr/sbin/httpd
  apache   23090.00.0 1753402464 ?      S    00:07   0:00 /usr/sbin/httpd
  apache   23100.00.0 1753402464 ?      S    00:07   0:00 /usr/sbin/httpd
  apache   23110.00.0 1753402464 ?      S    00:07   0:00 /usr/sbin/httpd

页: [1]
查看完整版本: apache配置文件1-zhangyuhe2的博客