一、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. 【[APIO2008]免费道路】

    \(kruskal\)好题 \(0\)边的数量在某些情况下是可以无限制的调控的,前提是所有必须存在的边都在生成树里了 所以应该分别求出有哪些边是必须在生成树里的,我们可以先从大到小排序,求出有哪些\( ...

  2. 20145314郑凯杰 《Java程序设计》第10周学习总结

    20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...

  3. git编译安装报错 http-push.c:20:19: 警告:expat.h:没有那个文件或目录

    解决: [root@hdoop3 git-2.18.1]# yum install expat-devel

  4. 使用Fiddler监控来自手机客户端的请求

    环境配置组成: 1 手机 2 安装Fiddler的PC 设置要点: 1 手机和PC应在同一个局域网内 我的做法是:PC安装WIFI热点,手机连接热点上网 PC的IP是192.168.95.1  手机的 ...

  5. HDU 1874畅通工程续(迪杰斯特拉算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)     ...

  6. [Zedboard Linux系统移植]-从MACHINE_START開始

    改动自:http://www.cnblogs.com/lknlfy/archive/2012/05/06/2486479.html 内核的启动过程? 3)内核的启动过程? arch/arm/kerne ...

  7. 前端基础-jQuery的最常用的的方法each、data、

    阅读目录 each inArray get index data 一.jQuery中each方法的应用 jQuery中有个很重要的核心方法each,大部分jQuery方法在内部都会调用each,其主要 ...

  8. sql for xml path 处理

    1.将下列结果集 做成 aa   语文,数学 bb    英语,语文 这种格式 使用 for xml  path  记得去重复 WITH cte AS(SELECT stu.studentname,c ...

  9. Role Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using System.Collections.Ge ...

  10. 物联网通信 - RESTDemo示例程序(C#版本)

    技术:wcf+http post+json(.net4.0 + jdk1.8) 运行环境:vs2010+java 概述Server开放RESTful API接口,供应用程序/移动App/嵌入式qt通过 ...