apache配置文件1

[root@zabbix ]#yum –y installl httpd            #安装httpd,这是从163上下载的

[root@zabbix yum.repos.d]# rpm -q httpd         #查看安装的版本

httpd-2.2.15-60.el6.centos.6.x86_64

[root@zabbix yum.repos.d]# rpm –ql  httpd | head     #查看生成的文件

配置文件

/etc/httpd/conf/httpd.conf   #主配置文件

/etc/httpd/conf.d/*.conf      #扩展配置文件

服务脚本目录

/etc/rc.d/init.d/httpd    #服务脚本

/etc/sysconfig/httpd    #服务脚本的配置文件

主程序文件:

扫描二维码关注公众号,回复: 2765235 查看本文章

/usr/sbin/httpd

/usr/sbin/httpd.event

/usr/sbin/httpd.worker

日志文件:

[root@zabbix httpd]# 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

image.png

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

image.png

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

[root@zabbix yum.repos.d]# cd /etc/httpd/conf.d

[root@zabbix conf.d]# mv welcome.conf{,.bak}          #此操作就是改名,welcome与中括号之间没有空格

[root@zabbix conf.d]# service httpd reload              #操作完不要忘记重读配置文件

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

image.png

启动时报错的解决办法

在启动httpd时报错:httpd:httpd: Could not reliably determine the server's fully qualified domai

(无法可靠地确定服务器的完全限定域名)解决方法把主配置文件当中的这一行如实填写:

276 ServerName www.magedu.com:80

主配置文件格式介绍

主配置文件:/etc/httpd/conf/httpd.conf                 #格式:配置参数   值

NOTE:

ü  配置指令不区大小写

ü  值有可能区分大小写,为路径时,取决于文件系统,文件系统区分大小写,这里就区分。

ü  有些指令可以重复出现多次

FORMAT:

[root@zabbix ~]# 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(多道处理模块),查看静态编译的模块


l  GRAMMER  TEST(语法测试):

当我们修改完配置文件之后要进行语法测试,如果不经测试直接重读配置文件或重启服务的话会失败!

[root@zabbix ~]# service httpd configtest          #这两条命令选一测试即可,测试成功会有systax OK的字样出现

[root@zabbix ~]# httpd -t

绝大多数配置修改后,可以通过service httpd roload来生效,如果修改了侦听的IP和端口,必须重启生效!!

l  EXAMPLE

Listen  80            #此配置就是默认侦听到80端口,可以出现多次

Listen 8080           #再出现一次,把8080端口一块给侦听了

note:其实此配置的格式是这样的Listen  1.2.3.4:80,如果没写IP 的话,就默认侦听到主机上所有IP的80和8080端口.

l  持久连接

[root@zabbix ~]# 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,比如我们可以像下文当中那样,我们手动输出获取什么资源:

[root@zabbix]telnet 192.168.0.1 80

GET  /test.html  HTTP/1.1    #获取一个资源,然后指明版本,HTTP必须大写

Host:192.168.0.1            #然后指明获取哪个主机的资源33

如果不使用持久连接的话,获取资源之后就立马断开了,如果使用持久连接的话,获取资源之后不会断开,还可以继续请求资源,直到超时时间到了服务器会自动断开。

一般tcp连接是谁请求谁断开,但是httpd服务可以自己强行与客户端断开。

l  MPM(多道处理模块)

httpd2.2只能同时使用一个模块,想要使用其他的模块只能重新编译。http2.4可编译时可以把三个模块都编译进去,在运行的时候可以随意的切换。rpm包会帮我们提供三个二进制程序可以实现三种MPM模块的机制。

[root@zabbix yum.repos.d]# 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模块,如下所示:

image.png

上图所示,当前运行的MPM为/usr/sbin/httpd代理这是prefork的工作模式,如果是worker或者event的话,那么在程序名也会有所体现。

那么哪些模块可以动态的装载进httpd呢?

通过httpd  -M列出已经装载的所有DSO及非DSO模块

通过httpd  -l(小L)列出支持使用的非DSO模块

[root@zabbix httpd]# httpd –M       #列出所有的模块(前四行就是集成到核心的四个静态模块,而shared就是动态共享模块)

so_module (static)   #非DSO模块

auth_basic_module (shared)  #带shared是DSO模块

模块两类: 一是MPM模块,另一种是DOS可动态装载的模块,所以

[root@zabbix yum.repos.d]# 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       2160  0.0  0.1 175548  3940 ?        Ss   00:05   0:00 /usr/sbin/httpd.worker

apache     2163  0.0  0.1 519808  5332 ?        Sl   00:05   0:00 /usr/sbin/httpd.worker

apache     2164  0.0  0.1 519808  5320 ?        Sl   00:05   0:00 /usr/sbin/httpd.worker

apache     2166  0.0  0.1 519808  5324 ?        Sl   00:05   0:00 /usr/sbin/httpd.worker

把#再次加上之后再次ps aux

root       2306  0.0  0.0 175340  3760 ?        Ss   00:07   0:00 /usr/sbin/httpd

apache     2308  0.0  0.0 175340  2480 ?        S    00:07   0:00 /usr/sbin/httpd

apache     2309  0.0  0.0 175340  2464 ?        S    00:07   0:00 /usr/sbin/httpd

apache     2310  0.0  0.0 175340  2464 ?        S    00:07   0:00 /usr/sbin/httpd

apache     2311  0.0  0.0 175340  2464 ?        S    00:07   0:00 /usr/sbin/httpd


猜你喜欢

转载自blog.51cto.com/13778749/2160021