CentOS6.4编译安装配置优化Apache2.4.6详细教程

部署架构环境:

CentOS6.4 x86_64位 采用最小化安装,系统经过了基本优化

selinux为关闭状态,iptables为无限制模式

ip:192.168.1.113/24

apache版本:httpd-2.4.6

apr版本:apr-1.4.8

apr-util版本:apr-util-1.5.2

pcre版本:pcre-8.33

源码包存放位置:/server/tools

源码包编译安装位置:/etc/local/软件名称

一、准备工作

由于我们的系统采用的是最小化安装的,因此我们在安装apache之前需要先进行开发环境和依赖包的安装。

  1. [root@c64-web ~]# yum groupinstall "Development tools" "Server Platform Development" -y  #安装这两个开发环境的软件包组
  2.  
  3. [root@c64-web ~]# yum install pcre* -y #安装pcre兼容的正则表达式

由于我们安装的httpd-2.4.6版本比较新,因此默认开发环境包中自带的apr包版本比较低,只能支持2.2.x系列的httpd版本,而这里至少要1.4版本以上的apr才被支持。因此我们需要先编译安装apr才行。

注意:apache2.2.x版本,只要安装了系统的默认开发环境包组,就不需要再安装apr了。

在安装之前简单给大家介绍下apr吧。

apache可移植运行时( apache Portable Runtime,简称APR),它是apache HTTP服务器的支持库,提供了一组映射到下层操作系统的API。APR的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能,因此apache使用这个之后可以有效的提高apache的静态页面的处理能力。

下面开始编译安装apr

  1. [root@c64-web ~]# cd /server/tools/    #首先我们要先进到存放源码的目录
  2.  
  3. [root@c64-web tools]# wget http://apache.dataguru.cn//apr/apr-1.4.8.tar.gz  #下载apr源码包
  4.  
  5. [root@c64-web tools]# tar xf apr-1.4.8.tar.gz    #解压源码包
  6.  
  7. [root@c64-web tools]# cd apr-1.4.8
  8.  
  9. [root@c64-web apr-1.4.8]# ./configure –prefix=/usr/local/apr  #编译前配置,并指定安装目录,方便维护
  10.  
  11. [root@c64-web apr-1.4.8]# make          #执行编译
  12.  
  13. [root@c64-web apr-1.4.8]# make install  #执行安装

执行编译和安装的过程我们可以缩减为下面一条命令即可

  1. [root@c64-web tools]# make&&make install  #该命令表示,当执行make编译成功后接着执行make install进行安装

接下来,我们还需要在安装apr-util这个开发包。为什么呢?因为一般情况下,我们很容易把APR开发包理解为仅仅是一个开发包,不过事实上并不是如此。目前,完整的APR实际上包含了三个开发包:apr、apr-util以及apr-iconv,每一个开发包分别独立开发,并拥有自己的版本。而apr-iconv在apache安装时暂不涉及,在以后tomcat调优时会涉及到这个开发包,到时再关注即可。因此,下面我们就继续开始安装apr-util。

和apr安装过程相似,执行如下命令进行操作

  1. [root@c64-web apr-1.4.8]# cd ..
  2.  
  3. [root@c64-web tools]# wget http://apache.dataguru.cn//apr/apr-util-1.5.2.tar.gz
  4.  
  5. [root@c64-web tools]# tar zxf apr-util-1.5.2.tar.gz
  6.  
  7. [root@c64-web tools]# cd apr-util-1.5.2
  8.  
  9. [root@c64-web apr-util-1.5.2]#  ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr      #因为apr-util依赖于apr,因此这里需要指定apr的安装路径
  10.  
  11. [root@c64-web apr-util-1.5.2]# make&&make install #这里用上面提到的快捷命令

这样,我们的apr和apr-util的开发包就安装成功了,那么下面我们就来安装apache。

二、开始安装

apache的源码包,我们可以去apache的官网或者镜像站点进行下载,并且为了安全,我们下载时最好将apache的公钥和数字签名文件同时下载下来,然后对源码包的一致性进行验证,当验证无误后再投入使用。

  1. [root@c64-web apr-util-1.5.2]# cd ..
  2.  
  3. [root@c64-web tools]# wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz
  4.  
  5. [root@c64-web tools]# wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz.asc
  6.  
  7. [root@c64-web tools]# wget http://www.apache.org/dist/httpd/KEYS

下载之后,我们通过http://www.eu.apache.org/dist/httpd/页面介绍的第三种方式进行软件包的验证。

  1. % gpg –import KEYS
  2.  
  3. % gpg –verify httpd-2.2.8.tar.gz.asc

操作结果如下,一定要注意查看结果后面是不是not changed才行,不要执行了就完事了。

  1. [root@c64-web tools]# gpg –import KEYS    #用gpg命令导入公钥
  2.  
  3. gpg: key 2719AF35: "Ben Laurie <[email protected]>" not changed
  4.  
  5. gpg: key A99F75DD: "Rodent of Unusual Size <[email protected]>" not changed
  6.  
  7. ……
  8.  
  9. gpg: key 6D5954FA: "Eric Covener <[email protected]>" not changed
  10.  
  11. gpg: Total number processed: 64
  12.  
  13. gpg: w/o user IDs: 4
  14.  
  15. gpg:  nchanged: 60
  16.  
  17. [root@c64-web tools]# gpg –verify httpd-2.4.6.tar.gz.asc #验证httpd-2.4.6.tar.gz.asc
  18.  
  19. gpg: Signature made Tue 16 Jul 2013 12:44:25 AM CST using RSA key ID 791485A8
  20.  
  21. gpg: Good signature from "Jim Jagielski (Release Signing Key) <[email protected]>"  #出现这一行说明这个签名是有效的
  22.  
  23. gpg: aka "Jim Jagielski <[email protected]>"
  24.  
  25. gpg: aka "Jim Jagielski <[email protected]>"
  26.  
  27. gpg: WARNING: This key is not certified with a trusted signature! #这个警告是因为本地密钥库不信任该公钥
  28.  
  29. gpg: There is no indication that the signature belongs to the owner.
  30.  
  31. Primary key fingerprint: A93D 62EC C3C8 EA12 DB22  0EC9 34EA 76E6 7914 85A8

如果gpg –verify的命令输出信息和上面相似,就可以确信http-2.4.6.tar.gz确实来自apache。这里可以忽略上面表明公钥不可信的警告。因为保证公共密钥签名来自所有者的惟一方法是,密钥的所有者亲自把磁盘上的密钥交给你。不过,采取上面的步骤后,我们已经可以在某种程度上确信下载的http-2.4.6.tar.gz可信了。
下面,我们就开始编译安装apache。

  1. [root@c64-web tools]# tar zxf http-2.4.6.tar.gz
  2.  
  3. [root@c64-web tools]# cd http-2.4.6
  4.  
  5. [root@c64-web tools]# ./configure \
  6.  
  7. –prefix=/usr/local/apache-2.4.6 \       #配置文件目录
  8.  
  9. –with-apr=/usr/local/apr \              #指定apr安装路径
  10.  
  11. –with-apr-util=/usr/local/apr-util \    #指定apr-util安装路径
  12.  
  13. –with-pcre \                            #支持perl的正则表达式
  14.  
  15. –enable-so \                            #启用动态模块加载
  16.  
  17. –enable-ssl \                           #基于ssl加密传输
  18.  
  19. –enable-cgi \                           #开启CGI脚本
  20.  
  21. –enable-rewrite \                       #允许URL重写
  22.  
  23. –with-zlib \                            #支持压缩
  24.  
  25. –enable-deflate \                       #支持网页压缩
  26.  
  27. –enable-expires \                       #支持网页缓存
  28.  
  29. –enable-headers \                       #提供允许对HTTP请求头的控制
  30.  
  31. –enable-modules=most \                  #支持大多数模块
  32.  
  33. –enable-mpms-shared=all \               #mpm模块的动态切换
  34.  
  35. –with-mpm=event \                       #默认加载使用的mpm
  36.  
  37. –with-mpm=worker                        #让apache以worker方式运行
  38.                                         #以上是生产环境中常用的一些编译参数

此处提供给你们复制,方便快捷执行命令

  1. [root@c64-web tools]# ./configure –prefix=/usr/local/apache-2.4.6 –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –with-pcre –enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –enable-deflate –enable-expires –enable-headers –enable-modules=most –enable-mpms-shared=all –with-mpm=event –with-mpm=worker  #此处为方便你们复制执行用的,如执行了上面的就不要再执行这个了
  2.  
  3. [root@c64-web tools]# make&&make install

这样我们的apache已经编译安装完成了。

三、启动配置

1、创建目录软链接

apache安装完成之后,我们要先为编译安装好的目录添加软链接。此操作在生产环境中为重要调优参数,添加这条软链接的目的有两点:1、方便人类使用。2、便于以后升级版本。

  1. [root@c64-web httpd-2.4.6]# ln -s /usr/local/apache-2.4.6 /usr/local/apache

2、启动服务

创建好目录软链接之后,我们就可以开始启动apache服务了。如果我们是yum或者rpm安装的话,我们可以直接用service httpd start来进行服务启动。因为我们是编译安装的,所以此处我们要这样启动。

  1. [root@c64-web httpd-2.4.6]# cd /
  2.  
  3. [root@c64-web /]# /usr/local/apache/bin/apachectl -t  #首先我们要检查语法
  4.  
  5. AH00557: httpd: apr_sockaddr_info_get() failed for c64-web
  6.  
  7. AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
  8.  
  9. Syntax OK

此时,我们可以看到在检查语法时,报了两个提示。不过这两个提示不影响,我们的服务器启动和运行。在本篇暂时不讲,等到后面的排错篇,我会详细给大家讲解此问题的解决方案。因此,继续执行开启命令

  1. [root@c64-web /]# /usr/local/apache/bin/apachectl start

启动之后,我们用下面的两个命令分别查看端口是否开启,服务进程是否启用。

  1. [root@c64-web /]# netstat -lnt|grep 80
  2.  
  3. tcp        0      0 :::80                      :::*                        LISTEN
  4.  
  5. [root@c64-web /]# ps -ef|grep httpd
  6.  
  7. root      2009    1  0 05:14 ?        00:00:00 /usr/local/apache-2.4.6/bin/httpd
  8.  
  9. daemon    2010  2009  0 05:14 ?        00:00:00 /usr/local/apache-2.4.6/bin/httpd
  10.  
  11. daemon    2011  2009  0 05:14 ?        00:00:00 /usr/local/apache-2.4.6/bin/httpd
  12.  
  13. daemon    2012  2009  0 05:14 ?        00:00:00 /usr/local/apache-2.4.6/bin/httpd
  14.  
  15. root      2104  1928  0 05:14 pts/0    00:00:00 grep httpd

由此看出,我们的服务已经正常启动了,此时我们用客户端访问下我们的apache服务器,已经可以实现正常访问。

3、优化启动

大家应该感觉到上面的启动项有点很繁琐的感觉了,在这里我们可以对apache启动的控制命令进行优化。优化的方法有3种。

第一种:修改PATH变量

我们可以通过把apache启动命令的目录加入到全局环境变量中去,这样就可以实现直接输入命令即可操作,无需带上一长串的路径了。

  1. [root@c64-web /]# echo 'export PATH=$PATH:/usr/local/apache/bin' >> /etc/profil
  2.  
  3. [root@c64-web /]# tail -1 /etc/profile
  4.  
  5. export PATH=$PATH:/usr/local/apache/bin

第二种:拷贝命令

我们也可以拷贝apache的启动命令apachectl到系统启动目录下

  1.  [root@c64-web /]# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd


第三种:添加软链接

我们还可以通过添加软链接的方式,将apache启动命令目录添加一条软链接到/etc/init.d/系统启动目录下

  1.  [root@c64-web /]# ln -s /usr/local/apache/bin/apachectl /etc/init.d/httpd

4、开机自启动

下面,我们就要实现apache服务的开机自启动了。开机自启动的实现也是有两种方式的

第一种:将httpd即apachectl命令加入到系统开机启动服务chkconf中(此种方法仅限优化启动中后两种操作者进行)

首先我需要对/etc/init.d/httpd文件稍作修改

  1.  [root@c64-web /]# vi /etc/init.d/httpd  #编辑此文件,在#!/bin/bash下面添加以下两行
  2.  
  3. #chkconfig:2345 10 90
  4.  
  5. #descrption:Activates/Deactivates apache Web Server

添加完成之后,

  1. [root@c64-web /]# chkconfig –add httpd  #添加httpd服务到系统开机启动服务列表
  2.  
  3. [root@c64-web /]# chkconfig httpd on      #设置httpd服务开机自启动
  4.  
  5. [root@c64-web /]# chkconfig –list httpd  #从列表中查看httpd在不同级别的启动情况
  6.  
  7. httpd          0:off  1:off  2:on    3:on    4:on    5:on    6:off

第二种:添加到开机启动配置文件/etc/rc.d/rc.local下

本方法对优化启动的3种方法都有效,不过你要注意你设置的httpd命令的路径。本例以优化启动的第二种方法为前提

  1. [root@c64-web /]# echo '#httpd start by sunsky in 20131104' >> /etc/rc.d/rc.local  #添加注释,方便以后查看
  2.  
  3. [root@c64-web /]# echo '/etc/init.d/httpd start >/dev/null 2>&1' >> /etc/rc.d/rc.local
  4.  
  5. [root@c64-web /]# tail -2 /etc/rc.d/rc.local                                    #添加完成后一定要看是否添加成功
  6.  
  7.                #httpd start by sunsky in 20131104/etc/init.d/httpd start >/dev/null 2>&1

到这里我们apache服务器的部署就彻底完工了!在部署的过程中,有重复的步骤,由于centos的版本不同,或许你会遇到不同的情况,linux的东西,重在实践,重在摸索,希望能给你思想的启发而已,真正的部署贵在动手实践!

推荐阅读

1、Centos6.4本地快速搭建apache+mysql+php(Lamp)环境

2、CentOS6.5环境下搭建Apache httpd服务器

3、CentOS6.5 64位编译PHP7 (nginx+mysql+php7)


发布日期:

所属分类: Linux/Centos/Os 标签: