4、高性能web架构之Apche编译安装

apache(Web服务器)

一、前言:

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。

二、详细介绍

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

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

它可以运行在几乎所有广泛使用的计算机平台上。

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

本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。

 

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

 

  1. 开放源代码:这是apache服务器的重要特性之一,也是其他特性的基础。Apache服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。
  2. 跨平台应用:这个特性得益于apache的源代码开放。Apache服务器可以运行在绝大多数软硬件平台上,所以unix操作系统都可以运行apache,甚至apacche服务器可以良好的运行在大多数windows系统平台上。Apache的跨平台特性使其具有被广泛应用的条件。
  3. 支持各种页面程序语言:可支持网页程序语言包括PERL\PHP\PYTHON\JAVA等,甚至微软的ASP技术也可以在apache服务器中使用。支持各种常用的web程序语言使apache具有更广泛的应用领域。
  4. 模块化设计:apache并没有将所有的功能都集中在单一的服务程序内部,而是尽可能通过标准的模块程序,来添加apache本身并不具有的其他功能。
  5. 运行非常稳定:apache服务器可用与构建具有大负载访问量的web站点,很多知名的企业网站都使用apache作为web服务软件。
  6. 良好的安全性:apache服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且apache的维护团队会及时对已发现的漏洞提供修补程序,为apache的所有使用者提供尽可能安全的服务器程序。

四、相关模块

1.SSO Module - LemonLDAP  

LemonLdap 是 Apache 的一个实现了 Web SSO 的模块,可处理超过 20 万的用户。

2.并发限制模块 - limitipconn

limitipconn 是一个 Apache 的模块,用来限制每个 IP 的并发连接数。支持 Apache 1.x 和 2.x。

3.日志监控模块

Apache Live Log 是一个 Perl 编写的模块,可以在浏览器上直接实时的通过 Ajax 技术浏览和监控 Apache 的 日志文件。

4.负载均衡模块

mod_backhand 是一个Apache 的负载平衡模块 。它定义了每个请求的HTTP重定向在一个异构的Apache服务器群集。每个请求的处理,并贯穿了一套“候选人的职能” ,以确定哪些服务器是最适合的回应。请求然后代理到该服务器。设施已到位,让你写您自己的动态加载决策算法。一切有关的要求和当前可用的资源可用于决策过 程。

5.图像处理模块

mod_gfx 是一个对图像进行即时处理的 Apache 模块,提供很多灵活的接口,包括:

Resizing

Resampling

Watermarking

Cropping

以后还将添加如下功能:

Add Text

Rotate

Draw Polygons

6. 压缩模块

mod-gzip-disk 是一个使用磁盘进行存储预压缩页面的 Apache 模块,与 mod-gzip 不同的是不需要每次请求的时候重新压缩。

使用方法:

gunzip -c mod_gzip_disk-0.5.tar.gz | tar -xvpf -

cd mod_gzip_disk

sudo make module

7. 音乐模块

mod_musicindex 是一个 Apache 用来处理音频文件的模块,类似 Perl 的 Apache::MP3,支持音频格式包括:MP3, Ogg Vorbis, FLAC, or MP4 / AAC ,可根据不同的音频属性进行排序列表、在线播放、下载、构建播放列表和搜索等,提供 RSS 和 Podcast 输出,支持多 CSS 和包下载。

8.LDAP 认证模块

LDAP 是轻量级目录访问协议,基于 X.500 标准,但更简单,并可根据需要进行定制。mod_psldap 是 Apache 用来执行 LDAP 认证和授权的模块。同时可通过 Web 界面进行简单的 LDAP 管理

9.带宽限制模块

mod_cband 是一个用来限制请求占用带宽的 Apache 模块。

10.CGI V8 引擎包

v8cgi 是一个很小的 C ++ 和 JS 文件集合,允许开发者在服务器端使用 JS 的模块,基本功能包括:IO, GD, MySQL, Sockets, templates, FastCGI and Apache module.

 

 

五、安装配置

1、准备环境(一台CentOS7.2系统:192.168.10.106):

[root@linux-node6 ~]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

 

2、查看是否yum安装了httpd,安装了则需要手动卸载:

[root@linux-node6 ~]# rpm -qa| grep httpd

httpd-tools-2.4.6-80.el7.centos.1.x86_64

httpd-2.4.6-80.el7.centos.1.x86_64

[root@linux-node6 ~]# yum -y remove httpd

 

3、官网下载安装包:

[root@linux-node6 ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.34.tar.gz

 

4、安装依赖包:

[root@linux-node6 ~]# yum install apr apr-devel apr-util apr-util-devel pcre pcre-devel openssl openssl-devel gcc curl curl-devel bzip2 bzip2-devel libtool -y

注:一般不推荐用yum安装apr,因为apache-2.4以后需要高版本的apr支持,而yum源的apr版本很可能不够。

所以:

[root@linux-node6 ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.3.tar.gz

[root@linux-node6 ~]# tar -xf apr-1.6.3.tar.gz -C /usr/local/src/

[root@linux-node6 ~]# cd /usr/local/src/apr-1.6.3/

[root@linux-node6 apr-1.6.3]# ./configure --prefix=/usr/local/apr

[root@linux-node6 apr-1.6.3]# make && make install

 

[root@linux-node6~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz

[root@linux-node6 ~]# tar xf apr-util-1.6.1.tar.gz -C /usr/local/src/

[root@linux-node6 ~]# cd /usr/local/src/apr-util-1.6.1/

[root@linux-node6 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

[root@linux-node6 apr-util-1.6.1]# make && make install

 

 

  1. 安装apache:

[root@linux-node6 ~]# tar zxf httpd-2.4.34.tar.gz -C /usr/local/src/

[root@linux-node6 ~]# cd /usr/local/src/httpd-2.4.34/

[root@linux-node6 httpd-2.4.34]# ./configure --prefix=/usr/local/httpd --enable-so --enable-modules="all" --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util

--prefix=/usr/local/httpd :指定安装目标路径

--enable-so :支持动态共享模块,如果没有这个模块PHP将无法与apache结合工作

--enable-modules:安装所有模块

--with-apr=/usr/local/apr/ :指定apr路径

--with-apr-util=/usr/local/apr-util :指定apr-util路径

[root@linux-node6 httpd-2.4.34]# make && make install

 

6、检测安装是否ok和查看版本:

[root@linux-node6 httpd-2.4.34]# /usr/local/httpd/bin/apachectl -t

Syntax OK

[root@linux-node6 httpd-2.4.34]# /usr/local/httpd/bin/apachectl -v

Server version: Apache/2.4.34 (Unix)

Server built:   Aug 18 2018 09:46:29

 

 

 

6、查看使用方法:

[root@linux-node6 httpd-2.4.34]# /usr/local/httpd/bin/apachectl -h

Usage: /usr/local/httpd/bin/httpd [-D name] [-d directory] [-f file]

                                  [-C "directive"] [-c "directive"]

                                  [-k start|restart|graceful|graceful-stop|stop]

                                  [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]

Options:

  -D name            : define a name for use in <IfDefine name> directives

  -d directory       : specify an alternate initial ServerRoot

  -f file            : specify an alternate ServerConfigFile

  -C "directive"     : process directive before reading config files

  -c "directive"     : process directive after reading config files

  -e level           : show startup errors of level (see LogLevel)

  -E file            : log startup errors to file

  -v                 : show version number

  -V                 : show compile settings

  -h                 : list available command line options (this page)

  -l                 : list compiled in modules

  -L                 : list available configuration directives

  -t -D DUMP_VHOSTS  : show parsed vhost settings

  -t -D DUMP_RUN_CFG : show parsed run settings

  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG

  -t -D DUMP_MODULES : show all loaded modules

  -M                 : a synonym for -t -D DUMP_MODULES

  -t -D DUMP_INCLUDES: show all included configuration files

  -t                 : run syntax check for config files

  -T                 : start without DocumentRoot(s) check

  -X                 : debug mode (only one worker, do not detach)

 

 

 

 

 

7、启动服务并查看进程状态:

[root@linux-node6 httpd-2.4.34]# /usr/local/httpd/bin/apachectl -k start

httpd (pid 82381) already running

[root@linux-node6 httpd-2.4.34]# netstat -tunlp | grep 80

tcp6       0      0 :::80                   :::*                    LISTEN      82381/httpd

 

 

[root@linux-node6 httpd-2.4.34]# ps -ef | grep apache

root      82481   2232  0 09:54 pts/0    00:00:00 grep --color=auto apache

[root@linux-node6 httpd-2.4.34]# ps -ef | grep httpd

root      82381      1  0 09:52 ?        00:00:00 /usr/local/httpd/bin/httpd --help

daemon    82382  82381  0 09:52 ?        00:00:00 /usr/local/httpd/bin/httpd --help

daemon    82383  82381  0 09:52 ?        00:00:00 /usr/local/httpd/bin/httpd --help

daemon    82384  82381  0 09:52 ?        00:00:00 /usr/local/httpd/bin/httpd --help

root      82483   2232  0 09:54 pts/0    00:00:00 grep --color=auto httpd

 

8、访问测试:

 

 

OK编译安装apache就此结束,请看下篇!

 

 

猜你喜欢

转载自blog.csdn.net/weixin_41515615/article/details/81813702