编译安装httpd-2.4.17

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译安装httpd-2.4.17相关的知识,希望对你有一定的参考价值。

一. 预备环境:

  # 编译安装apache之前需要确认:apr(apache虚拟机),apr-util,apr-util-ldap的版本, 不同的版本所依赖的apr版本不同.

  # 例:httpd-2.4.*需要依赖于apr-1.4.*以上的版本

  # 如需下载相应的版本: http://apr.apache.org/  

  # 查看apr的版本


  [[email protected] ~]# rpm -qa apr*

  apr-1.3.9-5.el6_2.i686

  apr-util-ldap-1.3.9-3.el6_0.1.i686

  apr-util-1.3.9-3.el6_0.1.i686

  [[email protected] ~]# 


  A. 安装组件

  # 安装apr之前需要确认开发组件和开发库"Development tools" 和 "Development Libraries"是否已经安装. 

  # centos 5.X 的版本需要安装 

  [[email protected] software]# yum groupinstall "Development Libraries"

  [[email protected] software]# yum groupinstall "Development tools"

  # centos 6.X 的版本需要安装 

  [[email protected] software]# yum groupinstall "Server Platform Development"

  [[email protected] software]# yum groupinstall "Development tools"


  B. 安装apr, apr-util

  # 下载apr 

  [[email protected] software]# wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz

  [[email protected] software]# tar zxvf apr-1.5.2.tar.gz

  # 如果无法解压缩, 同步一下软件时间

  [[email protected] software]# hwclock -s

  # 安装apr

  [[email protected] apr-1.5.2]# cd apr-1.5.2

  [[email protected] apr-1.5.2]# ./configure --prefix=/usr/local/apr-1.5.2

  [[email protected] apr-1.5.2]# make

  [[email protected] apr-1.5.2]# make install

  # 下载apr-util

  [[email protected] software]# wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

  [[email protected] software]# tar zxvf apr-util-1.5.4.tar.gz

  [[email protected] software]# cd apr-util-1.5.4


  # 需要注意指定apr的安装路径

  [[email protected] apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr-1.5.2

  [[email protected] apr-util-1.5.4]# make

  [[email protected] apr-util-1.5.4]# make install


二. 至此环境已经安装完成, 可以安装apache(httpd)

  # 下载httpd安装包(就近选择的下载地址, 搜狐镜像站点)

  [[email protected] software]# wget http://mirrors.sohu.com/apache/httpd-2.4.17.tar.gz

  [[email protected] software]# tar zxvf httpd-2.4.17.tar.gz 

  [[email protected] software]# cd httpd-2.4.17

  [[email protected] httpd-2.4.17]# ./configure \

  --prefix=/usr/local/apache-2.4 \

  --sysconfdir=/etc/httpd \

  --enable-so \

  --enable-rewirte \

  --enable-ssl \

  --enable-cgi \

  --enable-cgid \

  --enable-modules=most \

  --enable-mods-shared=most \

  --enable-mpms-shared=all \

  --with-apr=/usr/local/apr-1.5.2 \

  --with-apr-util=/usr/local/apr-util \


  # 常见报错一:

  checking for pcre-config... false

  configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

  # 解决办法

  [[email protected] httpd-2.4.17]# yum install pcre-devel -y


  # 常见报错二:

  checking whether to enable mod_ssl... 

  configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

  # 解决办法

  [[email protected] httpd-2.4.17]# yum install openssl-devel -y

  # 配置通过后: 


  [[email protected] httpd-2.4.17]# make

  [[email protected] httpd-2.4.17]# make install


  # 注意: httpd受selinux控制, 如果selinux为运行状态, 有可能导致httpd无法启动

  # 此时为关闭状态, 如果不是关闭状态, 修改selinux配置文件 vim /etc/selinux/config 修改为: SELINUX=disabled

  [[email protected] local]# getenforce

  Disabled

  [[email protected] local]# 

  # 至此apache已经安装完毕


三. 配置apache

  # 启动apache

  # 编译安装的启动脚本在: /usr/local/apache-2.4/bin/apachectl

  [[email protected] bin]# /usr/local/apache-2.4/bin/apachectl start

  # 如果报如下错误:

  AH00557: httpd: apr_sockaddr_info_get() failed for caiya.localdomain

  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

  # 解决办法:

  [[email protected] httpd]# vim /etc/httpd/httpd.conf

  找到"#ServerName www.example.com:8" 去掉前面的注释

  # 检测是否正常启动(当前为正常状态)

  [[email protected] bin]# /usr/local/apache-2.4/bin/apachectl start

  [[email protected] bin]# netstat -tnlp | grep 80

  5:tcp    0    0 :::80    :::*    LISTEN    41862/httpd         

  [[email protected] bin]# ps -ef | grep httpd

  101:root    41862  1    0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  102:daemon  41863  41862  0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  103:daemon  41864  41862  0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  104:daemon  41865  41862  0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  106:root  41952  1738  0 19:51 pts/1    00:00:00 grep -n --color httpd

  [[email protected] bin]#


四. httpd-2.4.x 的访问策略

  # 单条策略

  require ip ipaddre

  require ip hostname

  require ip username

  require not ip ipaddre

  require not ip hostname

  require not ip username

  # 允许所有主机访问:

  require all granted

  # 拒绝所有主机访问:

  require all deny


五. 制作启动脚本

  # 编译安装的httpd-2.4.x的启动脚本路径在编译目录: /httpd-2.4.17/build/rpm/httpd.init 

  # 当前环境的启动脚本路径在: /software/apache/httpd-2.4.17/build/rpm/httpd.init

  # 复制 httpd.init 至 /etc/init.d/httpd

  [[email protected] rpm]# cp /software/apache/httpd-2.4.17/build/rpm/httpd.init /etc/init.d/httpd

  # 修改httpd脚本文件

  [[email protected] rpm]# vim /etc/init.d/httpd 

  # 修改之前(每修改一项先做备份)

  60 httpd=${HTTPD-/usr/sbin/httpd}

  61 pidfile=${PIDFILE-/var/run/${prog}.pid}

  62 lockfile=${LOCKFILE-/var/lock/subsys/${prog}}

  63 RETVAL=0

  64

  65 # check for 1.3 configuration

  66 check13 () {

  67         CONFFILE=/etc/httpd/conf/httpd.conf

  68         GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"

  69         GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"

  70         GONE="${GONE}AccessConfig|ResourceConfig)"

  71         if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then

  72                 echo

  73                 echo 1>&2 " Apache 1.3 configuration directives found"

  74                 echo 1>&2 " please read @[email protected]/migration.html"

  75                 failure "Apache 1.3 config directives test"

  76                 echo

  77                 exit 1

  78         fi

  79 }

  # 修改之后(红色为修改部分)

  60 # httpd=${HTTPD-/usr/sbin/httpd}

  61 httpd=${HTTPD-/usr/local/apache-2.4/bin/httpd}

  62 # pidfile=${PIDFILE-/var/run/${prog}.pid}

  63 pidfile=${PIDFILE-/usr/local/apache-2.4/logs/httpd.pid}

  64 lockfile=${LOCKFILE-/var/lock/subsys/${prog}}

  65 RETVAL=0

  66

  67 # check for 1.3 configuration

  68 check13 () {

  69         # CONFFILE=/etc/httpd/conf/httpd.conf

  70         CONFFILE=/etc/httpd/httpd.conf

  71         GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"

  72         GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"

  73         GONE="${GONE}AccessConfig|ResourceConfig)"

  74         if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then

  75                 echo

  76                 echo 1>&2 " Apache 1.3 configuration directives found"

  77                 echo 1>&2 " please read @[email protected]/migration.html"

  78                 failure "Apache 1.3 config directives test"

  79                 echo

  80                 exit 1

  81         fi

  82 }

  # 修改完成以后, 即可使用 service httpd {start|stop|status...}


  [[email protected] /]# service httpd start

  正在启动 httpd :    [确定]

  [[email protected] /]# service httpd status

  httpd (pid  3864) 正在运行...

  [[email protected] /]# service httpd stop 

  停止 httpd :    [确定]

  [[email protected] /]# 


六. 添加自动   

  [[email protected] /]# chkconfig --add httpd 

  [[email protected] /]# chkconfig --list | grep httpd

  8:httpd           0:off 1:off 2:off 3:off 4:off 5:off 6:off

  [[email protected] /]# chkconfig httpd on

  [[email protected] /]# chkconfig --list | grep httpd

  8:httpd           0:off 1:off 2:on 3:on 4:on 5:on 6:off

  [[email protected] /]# 


==================== 扩展部分 ====================

# httpd的模块解释

选项解释:

  # 指定安装路径

  # --prefix=/usr/local/apache    

  # 指定配置文件的路径

  # --sysconfdir=/etc/httpd

  # 装载核心模块,支持动态共享模块,以模块的方式加载php, 如果不开启, 无法使用PHP       

  # --enable-so                   

  # 支持URL重写

  # --enable-rewrite           

  # 支持ssl的功能, 否则无法使用https   

  # --enable-ssl                  

  # 启动压缩机会, 将文本信息压缩后回复给客户端, 浏览器自动解压, 很常用的一种压缩机制

  # --enable-deflate              

  # 配置PHP的时候让PHP以FastCGI的模式工作, 必须要开启此项

  # --enable-proxy-fcgi           


本文出自 “一只老兔子” 博客,请务必保留此出处http://caiya.blog.51cto.com/1268395/1911337

以上是关于编译安装httpd-2.4.17的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript安装、编译

typeScript的安装编译

编译安装 PHP 扩展

ubuntu12.04编译交叉编译已经安装,为啥还不能编译

gtest 下载 、编译 安装

UBUNTU如何编译安装??