设为首页 收藏本站

运维网

查看: 66|回复: 3

[经验分享] centos6 编译安装httdp2.4

[复制链接]

尚未签到

发表于 2017-10-11 09:18:19 | 显示全部楼层 |阅读模式
httpd-2.4需要较新版本的apr和apr-util,因此需要事先对其进行升级。升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。
这里选择使用编译源代码的方式进行
1、解决依赖关系
yumgroupinstall -y "Development Tools" "Server PlatformDevelopment"
yuminstall -y pcre-devel

下载软件包
apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
httpd-2.4.25.tar.bz2
(1) 编译安装apr
编译安装 apr
解压并进入目录
./configure --prefix=/usr/local/apr
make && make install
(2)编译安装apr-util
解压进入目录
./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr 需要指定apr路径

(3)编译安装httpd2.4
./configure--prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl--enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --enable-modules=most--enable-mpms-shared=all --with-mpm=event
make && make install
补充:

(1)构建MPM为静态模块
在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行configure脚本时,使用参数 --with-mpm=NAME。
NAME是指定的MPM名称。编译完成后,可以使用./httpd -l 来确定选择的MPM。 此命令会列出编译到服务器程序中的所有模块,包括 MPM。

(2)构建 MPM 为动态模块

在Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。
在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。
还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。


3、修改httpd的主配置文件,设置其Pid文件的路径

编辑/etc/httpd/httpd.conf,添加如下行即可:
PidFile  "/var/run/httpd.pid"

4、提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:

#!/bin/bash
#
# httpd        Startup script for the Apache HTTPServer
#
# chkconfig: - 85 15
# description: Apacheis a World Wide Web server.  It is usedto serve \
#        HTML files and CGI.
# processname: httpd
# config:/etc/httpd/conf/httpd.conf
# config:/etc/sysconfig/httpd
# pidfile:/var/run/httpd.pid

# Source functionlibrary.
./etc/rc.d/init.d/functions

if [ -f/etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi

# Start httpd in the Clocale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will preventinitlog from swallowing up a pass-phrase prompt if
# mod_ssl needs apass-phrase from the user.
INITLOG_ARGS=""

# SetHTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based"worker" MPM; BE WARNED that some modules may not
# work correctly with athread-based MPM; notably PHP will refuse to start.

# Path to the apachectlscript, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon--pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch${lockfile}
        return $RETVAL
}

stop() {
  echo -n $"Stopping $prog: "
  killproc -p ${pidfile} -d 10 $httpd
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f ${lockfile}${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t>&/dev/null; then
        RETVAL=$?
        echo $"not reloading due toconfiguration syntax error"
        failure $"not reloading $httpd dueto configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}

# See how we werecalled.
case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  status)
        status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [ -f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
  reload)
        reload
  ;;
  graceful|help|configtest|fullstatus)
  $apachectl [email protected]
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $prog{start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
  exit 1
esac

exit $RETVAL

而后为此脚本赋予执行权限:
# chmod +x/etc/rc.d/init.d/httpd

加入服务列表:
# chkconfig --add httpd


接下来就可以启动服务进行测试了。
[[email protected] bin]#service httpd restart
AH00557: httpd:apr_sockaddr_info_get() failed for linux.64.114
AH00558: httpd:Could not reliably determine the server's fully qualified domain
name, using127.0.0.1. Set the 'ServerName' directive globally to suppress this
message
解决方法
/etc/httpd24
[[email protected]]# vim httpd.conf

修改ServerName www.example.com:80 为 ServerNamelocalhost:80
3、继续执行checking whether to enable mod_ssl... configure: error:mod_ssl has been requested but can not be built due to prerequisite failures,这是因为缺少openssl
[[email protected] httpd-2.4.18]#yum install openssl-devel
4、最后出现的一个报错是configure: error: MPM most does not support dynamicloading.
从字面上可以了解,此时将--enbale-mpm-shared改为all即可


运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:[email protected] 网址:www.iyunv.com

点击关注更多内容

累计签到:114 天
连续签到:1 天
发表于 2017-10-11 14:06:40 | 显示全部楼层
辛苦了,谢谢分享

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:[email protected] 网址:www.iyunv.com

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

关注运维网官方微信X

关注运维网官方微信

扫描二维码关注运维网官方微信,最新一手资源尽在官方微信!快快关注我们吧...

扫描微信二维码查看详情

客服 E-mail:[email protected]

本站由安畅网络和青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2017

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


合作伙伴: 青云cloud 安畅网络

快速回复 返回顶部 返回列表