[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 #服务脚本的配置文件
主程序文件:
/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
如上:会看到有8个进程,只有第一个root运行,其实运行的都是apache用户,为什么?因为在主机上注册小于1023的端口只有管理员有权限,这个进程并不会直接响应用户请求,其余的7个进程是工作进程,真正工作的进程是这个7个。
如下:当我们启动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默认的一种机制,我们会在下面讨论如果关闭这种机制。
启动时报错的解决办法:
在启动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模块,如下所示:
上图所示,当前运行的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