CentOS 6.9搭建Apache(WEB服务器)

2017-12-1408:37:40 1 2,052

Apache简介

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自"a patchy server"的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

Apacheweb服务器软件拥有以下特性:

1、支持最新的HTTP/1.1通信协议

2、拥有简单而强有力的基于文件的配置过程

3、支持通用网关接口

4、支持基于IP和基于域名的虚拟主机

5、支持多种方式的HTTP认证

6、集成Perl处理模块

7、集成代理服务器模块

8、支持实时监视服务器状态和定制服务器日志

9、支持服务器端包含指令(SSI)

10、支持安全Socket层(SSL)

11、提供用户会话过程的跟踪

12、支持FastCGI

13、通过第三方模块可以支持JavaServlets

进程与线程概念及区别

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。

1) 从概念上

进程:一个程序对一个数据集的动态执行过程,是分配资源的基本单位。

线程:一个进程内的基本调度单位。

线程的划分尺度小于进程,一个进程包含一个或者更多的线程。

进程是系统进行资源分配和调度的一个独立单位。

本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

2) 从执行过程中来看

进程:拥有独立的内存单元,而多个线程共享内存,从而提高了应用程序的运行效率。

线程:每一个独立的线程,都有一个程序运行的入口、顺序执行序列、和程序的出口。但是线程不能够独立的执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

3) 从逻辑角度来看:(重要区别)

多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但是,操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理及资源分配。

prefork的工作原理

      如果不用"--with-mpm"显式指定某种MPM,prefork就是Unix平台上缺省的MPM,它所采用的预派生子进程方式也是Apache1.3中采用的模式,prefork本身并没有使用到线程,2.0版使用它是为了与1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。

      prefork的工作原理是,控制进程在最初建立"StartServers"个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这就是预派生(prefork)的由来,这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。

worker的工作原理

      相对于prefork,worker是2.0版中全新的支持多线程和多进程混合模型的MPM.由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器.但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性.这种MPM的工作方式将是Apache2.0的发展趋势.

      worker的工作原理是由主控制进程生成"StartServers"个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求,同样为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数,如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。

      Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)。

需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应值(可能是个非期望值)。

在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。

Worker模式:Worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。

Worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。

源码安装Apache WEB服务器

1)下载目前稳定版本:

[root@Aliyun_server_v1 ~]# yum -y install wget

[root@Aliyun_server_v1 ~]# wget -c https://mirrors.yangxingzhen.com/apache/httpd-2.2.34.tar.gz

CentOS 6.9搭建Apache(WEB服务器)

2)安装Apache之前,需要先安装依赖包:apr apr-devel apr-util-devel gcc gcc-c++

[root@localhost ~]# yum -y install apr apr-devel apr-util-devel gcc gcc-c++ pcre pcre-devel

CentOS 6.9搭建Apache(WEB服务器)

3)解压httpd压缩包

[root@localhost ~]# tar zxf httpd-2.2.34.tar.gz

CentOS 6.9搭建Apache(WEB服务器)

4)预编译Apache
[root@localhost ~]# cd httpd-2.2.34
[root@localhost ~]# ./configure --prefix=/usr/local/apache --enable-rewrite --enable-so

CentOS 6.9搭建Apache(WEB服务器)

CentOS 6.9搭建Apache(WEB服务器)

5)编译、安装Apache

[root@localhost ~]# make &&make install

CentOS 6.9搭建Apache(WEB服务器)

CentOS 6.9搭建Apache(WEB服务器)

6)启动apache服务

[root@localhost ~]# /usr/local/apache/bin/apachectl start

#查看进程和端口

[root@localhost ~]# netstat -lntup |grep httpd

[root@localhost ~]# ps -ef |grep httpd

CentOS 6.9搭建Apache(WEB服务器)

源码包安装Apache默认发布目录为:/usr/local/apache/htdocs/目录下。

7)访问

#浏览器访问本机IP(192.168.20.92),会出现以下画面

CentOS 6.9搭建Apache(WEB服务器)

  • 微信号
  • 微信扫一扫加我~~
  • weinxin
  • 微信公众号
  • 微信扫一扫关注我吧~~
  • weinxin
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 运维老司机

      亲测,写的不错,感谢博主 :razz: