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