一、HTTPD特性

(1)高度模块化:core(核心) + modules(模块) = apache
(2)动态模块加载DSO机制: Dynamic Shared Object(动态共享对象)
(3)MPM:Multipath Processing Modules(多路处理模块)多种不同的IO处理模型

Aapche的三种工作模型:

prefork:2.2版本默认的模型,多进程模型,每个进程响应一个请求;进程之间彼此独立,每个子进程只有一个线程,最稳定。缺点:内存消耗较大
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;主进程监听套接字,在请求到来时fork出一个子进程去处理该请求。

worker:多线程模型,每个线程响应一个请求;

一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;
m进程,n线程:m*n

优点:线程之间内存共享,系统内存利用率较高,内存消耗比prefork小的多,适用于高流量的http服务器。

缺点:一个进程崩溃整个进程,整个进程里面的线程全部一起挂掉。

event:事件驱动模型,每个线程响应n个请求;

一个主进程:生成m个子进程,每个进程直接n个请求;m*n

在非常繁忙的服务器下,以上两种模型都不再适用,在work基础上,event把服务进程从连接中分离出来。服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限制,此时Event MPM方式是最有效的

在2.2版本的httpd中,三种模式的切换需要重新编译,2.4版本后,无需编译,直接修改配置导入module即可。

二、Centos 7.4编译安装部署Apache 2.2.31

①下载安装包
[root@longlinux ]# cd /usr/local/src //切换到下载目录
[root@longlinux src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.gz ②解压
[root@longlinux src]# tar -jxvf httpd-2.2..tar.bz2 //解压 ③配置编译参数
[root@longlinux src]# cd httpd-2.2.
[root@longlinux httpd-2.2.]# ./configure \
--prefix=/usr/local/apche2 \ //指定安装位置
--with-included-apr \ //httpd依赖的包apr,可支持httpd跨平台运作
--enable-so \ //表示启用DSO
--enable-deflate=shared \ //表示动态共享的方式编译deflate,后面参数同理
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre //正则相关的库 配置时出现了如下错误:error: mod_deflate has been requested but can not be built due to prerequisite failures
由于缺少了zlib-devel库,需要安装:
[root@longlinux httpd-2.2.]# yum install -y zlib-devel Tips: DSO是Dynamic Shared Objects(动态共享目标)的缩写,它提供了一种在运行时将特殊格式的代码在程序运行需要时,将需要的部分从外存调入内存执行的方法。Apache 支持动态共享模块,也支持静态模块,静态的话,会把需要的目标直接编译进apache的可执行文件中,相比较动态,虽然省去了加载共享模块的步骤,但是也加大了二进制执行文件的空间,变得臃肿。 ④编译
为了避免编译的时候出错,需事先安装好一些库文件
[root@longlinux httpd-2.2.]# yum install pcre pcre-devel apr apr-devel gcc gcc++
[root@longlinux httpd-2.2.]# make ⑤安装
[root@longlinux httpd-2.2.]# make install ⑥启动服务
[root@longlinux httpd-2.2.31]# /usr/local/apche2/bin/apachectl -t   //检查语法配置文件的语法
[root@longlinux httpd-2.2.]# /usr/local/apche2/bin/apachectl start //启动httpd服务  

启动的时候出现了如下错误,需要修改配置文件 /usr/local/apache2/conf/httpd.conf 
[root@longlinux httpd-2.2.]# vim /usr/local/apache2/conf/httpd.conf
,搜索‘#ServerName’ ,添加ServerName localhost:80
[root@longlinux httpd-2.2.]# /usr/local/apache2/bin/apachectl restart   //再重新启动apche即可
/usr/local/apache2/bin/apachectl -M 查看动态模块 

/usr/local/apache2/bin/apachectl -l 查看静态模块 

/usr/local/apache2/bin/apachectl -t 查看配置文件/usr/local/apache2/conf/httpd.conf是否存在错误语法

三、Centos7.4安装部署Apache 2.4.33

(1)Yum方式安装

[root@localhost ~]# yum install -y httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl start httpd

(2)源码方式安装

①下载httpd-2.4.33源码包

[root@localhost ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.33.tar.gz
[root@localhost ~]# tar -zxvf httpd-2.4..tar.gz

②编译安装

[root@localhost httpd-2.4.]# ./configure --prefix=/usr/local/apache-2.4. \   #指定安装位置
--with-included-apr \ #httpd依赖的包apr,可支持httpd跨平台运作
--enable-so \ #启用DSO
--enable-deflate=shared \ #动态共享的方式编译deflate,后面的参数同理
--enable-mods-shared=most \
--enable-rewrite=shared \
--enable-mpms-shared \  #2.4版本使用动态更换mpm模式必须使用该参数
--with-pcre #正则相关的库
[root@localhost httpd-2.4.]# make && make install

③编译过程报错解决

apache 2.4版本后,需要提前安装apr和apr-util的包以解决依赖关系,以及解决正则库依赖,不然会有以下报错:

错误1:error: mod_deflate has been requested but can not be built due to prerequisite failures

解决:yum install -y zlib-devel

错误2:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and

apr-util packages to ./srclib/.

解决:
[root@localhost ~]# wget http://archive.apache.org/dist/apr/apr-util-1.5.1.tar.gz
[root@localhost ~]# wget http://archive.apache.org/dist/apr/apr-1.5.1.tar.gz
[root@localhost ~]# cp -rf apr-util-1.5. httpd-2.4./srclib/apr-util
[root@localhost ~]# cp -rf apr-1.1. httpd-2.4./srclib/apr 错误3:/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_GetErrorCode'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_SetEntityDeclHandler'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_ParserCreate'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_SetCharacterDataHandler'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_ParserFree'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_SetUserData'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_StopParser'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_Parse'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_ErrorString'
/usr/local/apr-util/lib/libaprutil-.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned exit status
make[]: *** [htpasswd] Error
make[]: Leaving directory `/usr/local/httpd-2.4./support'
make[]: *** [all-recursive] Error
make[]: Leaving directory `/usr/local/httpd-2.4./support'
make: *** [all-recursive] Error 解决:更换apr,apr-util的版本,前期用了1.6版本报错,更换了1.5版本后可正常编译

④Apache启动

[root@localhost httpd-2.4.]# /usr/local/apache-2.4./bin/apachectl -t   #apache配置文件语法检测
Syntax OK
[root@localhost httpd-2.4.]# /usr/local/apache-2.4./bin/apachectl start #apache启动
[root@localhost httpd-2.4.]# ps -ef |grep httpd #查看apache进程
root : ? :: /usr/local/apache-2.4./bin/httpd -k start
daemon : ? :: /usr/local/apache-2.4./bin/httpd -k start
daemon : ? :: /usr/local/apache-2.4./bin/httpd -k start
daemon : ? :: /usr/local/apache-2.4./bin/httpd -k start
root : pts/ :: grep --color=auto httpd
root : ? :: httpd -DFOREGROUND
bin : ? :: httpd -DFOREGROUND
bin : ? :: httpd -DFOREGROUND
bin : ? :: httpd -DFOREGROUND
[root@localhost httpd-2.4.]# netstat -tulnp |grep 80 #查看apache是否监听80端口
tcp6 ::: :::* LISTEN /httpd [root@localhost httpd-2.4.33]# curl localhost #访问apache
<html><body><h1>It works!</h1></body></html>

Apache入门篇(一)之安装部署apache的更多相关文章

  1. Apache入门 篇(二)之apache 2.2.x常用配置解析

    一.httpd 2.2.x目录结构 Cnetos 6.10 YUM安装httpd 2.2.x # yum install -y httpd 程序环境 主配置文件: /etc/httpd/conf/ht ...

  2. Apache Hadoop集群离线安装部署(三)——Hbase安装

    Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apac ...

  3. Apache Hadoop集群离线安装部署(二)——Spark-2.1.0 on Yarn安装

    Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apac ...

  4. Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS、YARN、MR)安装

    虽然我已经装了个Cloudera的CDH集群(教程详见:http://www.cnblogs.com/pojishou/p/6267616.html),但实在太吃内存了,而且给定的组件版本是不可选的, ...

  5. 安装部署Apache Hadoop (本地模式和伪分布式)

    本节内容: Hadoop版本 安装部署Hadoop 一.Hadoop版本 1. Hadoop版本种类 目前Hadoop发行版非常多,有华为发行版.Intel发行版.Cloudera发行版(CDH)等, ...

  6. CentOS8 安装部署Apache+Php+MariaDB(pdo扩展)

    使用新的CentOS8系统架设PHP服务器,因现在主流数据库mysql已闭源了,所以现在改为使用MariaDB.而php7以后不支持mysqli链接,只有pdo方式,为了安装pdo扩展,所以重新编译安 ...

  7. Apache Mesos1.0.1 编译安装部署教程(ubuntu)

    参考资料 官方文档:http://mesos.apache.org/documentation 中文翻译:http://mesos.mydoc.io/ GitHub:https://github.co ...

  8. CentOS7.5 安装部署Apache+Mysql+Php

    系统:CentOS7.5 安装Apache 安装 yum -y install httpd 开启apache服务 systemctl start httpd.service 设置apache服务开机启 ...

  9. Apache入门篇(四)之LAMP架构部署

    一.LAMP解析 a: apachem: mariadb, mysqlp: php, perl, python 静态资源:静态内容:客户端从服务器获得的资源的表现形式与原文件相同:动态资源:通常是程序 ...

随机推荐

  1. 【redis运维】redis自己主动安装脚本(仅仅安装redis)

    Redis自己主动安装部署 本文总共分为4个部分:         redis自己主动安装脚本文件夹结构说明:         redis自己主动安装脚本内容:         redis的操作系统服 ...

  2. BZOJ3174:[TJOI2013]拯救小矮人(DP)

    Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人, ...

  3. POJ2724 Purifying Machine

    嘟嘟嘟 扒下来的题意:迈克有一台可以净化奶酪的机器,用二进制表示净化的奶酪的编号.但是,在某些二进制串中可能包含有\(*\).例如\(01*100\),\(*\)其实就代表可以取\(0\),\(1\) ...

  4. [Python 练习爬虫] XPATH基础语法

    XPATH语法: // 定位根标签 / 往下层寻找 /text() 提取文本内容 /@xxx 提取属性内容 Sample: import requests from lxml import etree ...

  5. ethereumjs/ethereumjs-vm-1-简介

    https://github.com/ethereumjs/ethereumjs-vm 其实这就是怎么自己使用该模块来生成一个类似geth客户端的以太坊虚拟机,然后进行各类区块链操作 SYNOPSIS ...

  6. VC++ TCP网络控制台程序

    在Windows7系统下,采用工具为VS2008,Win32控制台应用程序,编写一个基于TCP的Client/Server网络程序. 1.服务器端代码 #include <WinSock2.h& ...

  7. 2.4G电动车防盗方案 超低功耗单发器 SI24R2F

           对于现在的电动车防盗标签和校园卡的市场,主要以2.4G为主做标签,各色各样的2.4G国产芯片渐渐的能满足这块RFID领域.但是作为RFID的推动领导者,深圳市动能世纪科技有限公司专注于超 ...

  8. PAT——1055. 集体照

    拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下: 每排人数为N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任何人矮: 每排中最高者站中间(中间位置为m ...

  9. 框架 Hibernate 2

    持久化类百度百科 http://baike.baidu.com/link?url=gNus-8jhK0Mi401aIR-16YUAnWKzOJfeMagUV8_t5iG8235JyjMrmZPd7rI ...

  10. 【Step By Step】将Dotnet Core部署到Docker上

    本教程的前提是,你已经在Linux服务器上已经成功的安装了Docker,我会大概介绍在此过程中用到的Docker命令,并不会介绍所有的Docker命令(因为我也不会). 一.在Docker中运行Dot ...