httpd的安装与使用

httpd的安装与使用

httpd的安装与使用

引言

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。目前使用的主要有HTTP/1.1、HTTP/2.0版本。

HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

一次完整的http请求处理过程如下:

(1) 建立或处理连接:接收请求或拒绝请求;
(2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程;
(3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息; (4) 访问资源:获取请求报文中请求的资源;
(5) 构建响应报文:
(6) 发送响应报文:
(7) 记录日志:

web服务器,即存放了web资源的主机,负责向请求者提供对方请求的静态资源,或动态资源运行生成的结果;这些资源通常应该放置于本地文件系统某路径下;此路径称为DocRoot;实现web服务器的软件有很多,这里仅介绍CentOS6、7自带的httpd2.2、2.4版本软件的安装与使用。

httpd的功能特性有很多,如 CGI:Common Gateway Interface、虚拟主机、反向代理、 负载均衡、路径别名、丰富的用户认证机制、支持第三方模块

下面通过一些实例来展现httpd的安装与使用
1.安装
httpd软件安装可以通过CentOS发行版中自带的rpm包,或通过httpd源码包编译安装。这里使用rpm包安装软件
yum install httpd httpd-tools
安装后可能通过rpm -ql httpd命令来查看都安装哪些文件,CentOS6与7提供的rpm包版本有所不同,安装后的文件也有一些差别。如下:
CentOS 6:httpd-2.2
程序环境:
配置文件:
/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/httpd/modules
服务控制和启动:
chkconfig httpd on|off
service {start|stop|restart|status|configtest|reload} httpd

CentOS 7:httpd-2.4
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
模块相关的配置文件:
/etc/httpd/conf.modules.d/*.conf
主程序文件:
/usr/sbin/httpd
httpd-2.4支持MPM的动态切换;
日志文件:
/var/log/httpd:
access_log:访问日志
error_log:错误日志
站点文档:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
服务控制与启动:
systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service

2.配置文件
主配置文件在/etc/httpd/conf/httpd.conf,但2.2版本与2.4版本的配置文件有所不同,2.2版本通过三段来区别配置文件中配置的不同区域,如 ### Section 1: Global Environment为全局环境配置,定义进程的工作特点或对所有的虚拟主机都通用的工作设定;### Section 2: ‘Main’ server configuration为主服务器配置段;### Section 3: Virtual Hosts为虚拟服务器配置。但2.4版本中不再有这样的设置
配置格式:
directive value
directive:不区分字符大小写;
value:为路径时,是否区分字符大小写,取决于文件系统;

3.下面通过一些功能实现来说明配置文件如何使用

修改监听的IP和PORT
格式:Listen [IP-address:]portnumber [protocol]
(1) 省略IP表示为0.0.0.0;
(2) Listen指令可重复出现多次;
(3) 修改监听socket,重启服务进程方可生效;
(4) 限制其必须通过ssl通信时,protocol需要定义为https;

测试:
1.在/etc/httpd/conf/httpd.conf中再加入一条Listen 10080,表示除了监听80端口外,也监听10080端口或在/etc/httpd/conf.d/中添加一个*.conf文件,在文件中加入Listen 10080
2.systemctl restart httpd //重启服务
3.ss -tln //查看是否监听了80和10080两个端口

持久连接(保持连接,长连接)
Persistent Connection:tcp连接建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行;只有当请求超时或超过请求数量时才断开连接

测试:
1.修改/etc/httpd/conf/httpd.conf文件或在/etc/httpd/conf.d/中添加一个*.conf文件,添加或修改如下内容:
KeepAlive On
KeepAliveTimeout 15
MaxKeepAliveRequests 100
2.通过telnet命令测试长连接是否生效
yum install telnet
telnet 192.168.1.2 80
GET /index.html HTTP/1.1
Host: 192.168.1.2
//通过telnet命令连接到服务器,之后用GET方法获取资源,在输入完Host后要按两次回车就会有信息返回,并且不会断开。如果配置文件中的KeepAlive是Off,那么获取到资源后就会断开

MPM:Multipath processing Modules (多路处理模块)
httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个;CentOS 6的rpm包为此专门提供了三个应用程序文件,httpd(prefork), httpd.worker, httpd.event,分别用于实现对不同的MPM机制的支持;
MPM有三种模型,如下:
prefork:两级进程模型,父进程管理子进程,每个子进程响应一个请求;
worker:三级模型,父进程管理子进程,子进程通过线程响应用户请求;每线程处理一个用户请求;
event:两级模型,父进程管理子进程,子进程通过event-driven(事件驱动)机制直接响应n个请求;

CentOS6测试2.2版本:
1.查看静态编译的模块:
httpd -l
httpd.worker -l
httpd.event -l
查看静态编译及动态编译的模块:
httpd -M
httpd.worker -M
httpd.event -M
//标记为static为静态,shared为动态模块,动态模块需要通过LoadModule加载才能工作。
2.修改变量为想要启动的模型
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.{worker,event}
//改为httpd.worker或httpd.event
3.重启服务
service httpd restart
4.查看MPM模型
ps aux | grep httpd
//现在httpd应为上面修改后的MPM模型

CentOS7httpd2.4版本
1.修改MPM模型
vim /etc/httpd/conf.modules.d/00-mpm.conf
//此文件中有MPM的三个模型,将要启动的模型去掉注释,并注释掉不启动的模型
2.重启服务
systemctl restart httpd
3.查看现在的MPM模型
httpd -M | grep mpm

定义中心主机的文档页面路径
配置文件中的ServerName是标识当前主机服务于谁的,与真正的主机名无关。如果这条指定未定义,http启动时会反解服务器本地地址。如果不能反解会在启动时提示。
语法格式: ServerName [scheme://]fully-qualified-domain-name[:port]
DoucmentRoot指向的路径为URL路径的起始位置,其相当于站点URL的根路径;默认是/var/www/html/。如URL中访问的/images/logo.jpg实际路径在/var/www/html/images/logo.jpg

CentOS7httpd2.4版本测试:
1.创建目录
mkdir /data/web/www -pv
2.添加一个主页
vim /data/web/www/index.html
//在index.html中输入内容,如Main Server
3.修改配置文件
vim /etc/httpd/conf/httpd.conf
DocumentRoot “/data/web/www”
<Directory "/data/web/www">
Require all granted
</Directory>
//修改根路径,Require all granted表示允许任何人访问
4.检查语法是否有误
httpd -t
5.重新启动
systemctl restart httpd

CentOS6httpd2.2版本测试:
1.创建目录
mkdir /data/html -pv
2.添加一个主页
vim /data/html/index.html
//在index.html中输入内容,如Main Server
3.修改配置文件
vim /etc/httpd/conf/httpd.conf
DocumentRoot “/data/html”
<Directory "/data/html">
Order allow,deny
allow from all
</Directory>
//修改根路径,allow from all表示允许任何人访问
4.检查语法是否有误
httpd -t
5.重新启动
systemctl restart httpd

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89606

(2)
ruopu1989ruopu1989
上一篇 2017-12-07 08:50
下一篇 2017-12-08 11:49

相关推荐

  • zabbix监控Hadoop的实现

            Hadoop日常运行过程中一些参数需要进行实时监控,如:Map、Reduce任务数量,HDFS磁盘使用情况,namenode、datanode在线数量及健康情况,以便更好的掌握整个Hadoop集群架构的运行情况。         下面结合最近工作中的一些…

    Linux干货 2015-03-08
  • CentOS 7破解密码教程

    启动时任意键暂停启动  按e键进入编辑模式  将光标移动linux16开始的行,添加内核参数rd.break  按ctrl-x启动  mount –o remount,rw /sysroot  chroot /sysroot  passwd root  touch /.autorelabe…

    Linux干货 2016-12-01
  • 第二十六天 iptables 初识

      Iptables是位于用户空间,是linux系统上的防火墙管理配置规则的工具,主要用于添加、删除、管理netfilter的规则,   Netfilter是位于内核中真正的防火墙,由5个钩子组成,也叫五个规则链。 Netfilter的作用:起到过滤封包,转换与映射IP地址和端口,拆分和修改封包内容,追踪封包等功能 Iptabl…

    Linux干货 2016-07-02
  • MySQL-MMM安装指南(Multi-Master Replication Manager for MySQL)

    最基本的MMM安装必须至少需要2个数据库服务器和一个监控服务器下面要配置的MySQL Cluster环境包含四台数据库服务器和一台监控服务器,如下: function ip hostname server id monitoring host 192.168.0.10 mon – master 1 192.168.0.11 db1 1 maste…

    Linux干货 2015-05-01
  • zabbix之报警功能的实现

    一、注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com/一个人最多申请5个公众号,所以还是可以的 申请完之后就可以根据腾讯的提示使用微信公众号了,然后用你自己的微信扫描关注微信号。 就可以看到用户数了,接下来的就要使用的用户的微信ID号了。点击用户查看用户的微信ID号。在浏览器查看用户的微信ID号。就是那个红色的ID了。 h…

    Linux干货 2017-03-27
  • select基本用法和软件包管理

    一、select语句     select语句在脚本中用于创建菜单,按数字顺序排列的菜单项显示在标准输出上,并用PS3提示符,等待用户输入。用户输入菜单中的某个数字,执行相应的命令,并被保存在内置变量REPLY中。 用法:     select NAME [in WORDS &#…

    Linux干货 2016-08-21